为什么Rust无法在不可变变量上借用可变借项?

时间:2020-07-08 08:31:07

标签: rust

据我了解,mut中的let mut表示可变变量绑定,而mut中的&mut表示互斥。但是,以下代码:

fn main() {
    let x = 1;
    let x_ref = &mut x;
}

不会编译。看来mut中的let mut不仅意味着可变变量绑定,而且还暗示了窗帘可变借位约束。 mutlet mut的确切语义是什么?

1 个答案:

答案 0 :(得分:2)

看起来let mut中的mut不仅意味着可变变量绑定,而且还意味着窗帘可变的借位约束。

忽略内部可变性,您只能从可变绑定中借用可变借项,因为...它们在功能上是相同的:

let mut x = 1;
let x_ref = &mut x;
*x_ref = 2;
println!("{}", x); // prints 2

let mut中mut的确切语义是什么?

它声明了一个可变的绑定,这意味着该绑定可以被就地更新(分配给)并且可以被可变引用。