据我了解,mut
中的let mut
表示可变变量绑定,而mut
中的&mut
表示互斥。但是,以下代码:
fn main() {
let x = 1;
let x_ref = &mut x;
}
不会编译。看来mut
中的let mut
不仅意味着可变变量绑定,而且还暗示了窗帘可变借位约束。 mut
中let mut
的确切语义是什么?
答案 0 :(得分:2)
看起来let mut中的mut不仅意味着可变变量绑定,而且还意味着窗帘可变的借位约束。
忽略内部可变性,您只能从可变绑定中借用可变借项,因为...它们在功能上是相同的:
let mut x = 1;
let x_ref = &mut x;
*x_ref = 2;
println!("{}", x); // prints 2
let mut中mut的确切语义是什么?
它声明了一个可变的绑定,这意味着该绑定可以被就地更新(分配给)并且可以被可变引用。