Rust发生了什么变化,使得在可变借贷之后允许这种借贷?

时间:2019-09-01 03:43:50

标签: rust borrow-checker

在阅读Hands-On Concurrency with Rust时,我遇到了一个与old Rust book中所示示例相似的示例:

fn main() {
    let mut x = 5;
    let y = &mut x;
    *y += 1;
    println!("{}", x);
}

在两本书中,他们都解释说这不会编译。这两本书都说println!宏是从x隐式借用的。旧的Rust书说以下话:

  

我们的&mut T指向x,因此不允许创建任何   &Ts

“动手并发”添加了以下内容:

  

如果要编译此程序,我们将面临   y的更新和x的读取,取决于CPU和内存   订购。

这两种解释似乎都说得通,但是,如果我在最新版本的Rust稳定版(1.36和1.37)上编译并运行此代码,则这些代码可以编译并正常运行。

Rust中发生了哪些变化,使得它可以进行编译,同时又避免了可能导致较旧版本的Rust产生编译器错误的潜在问题?

0 个答案:

没有答案