Rust 为什么可以';难道可变的借来的不是不变的可变的吗?

Rust 为什么可以';难道可变的借来的不是不变的可变的吗?,rust,Rust,根据我的理解,let mut中的mut表示可变变量绑定,而&mut中的mut表示独占借用。但是,以下代码: fn main() { let x = 1; let x_ref = &mut x; } 不会编译。看起来,let mut中的mut不仅意味着可变变量绑定,还意味着幕式可变借用约束。let mut中mut的确切语义是什么 看起来let mut中的mut不仅意味着可变变量绑定,还意味着可变借用约束 忽略内部易变性,您只能从易变绑定获取易变借用,因为。。。它们在功能上

根据我的理解,
let mut
中的
mut
表示可变变量绑定,而
&mut
中的
mut
表示独占借用。但是,以下代码:

fn main() {
    let x = 1;
    let x_ref = &mut x;
}
不会编译。看起来,
let mut
中的
mut
不仅意味着可变变量绑定,还意味着幕式可变借用约束。
let mut
mut
的确切语义是什么

看起来let mut中的mut不仅意味着可变变量绑定,还意味着可变借用约束

忽略内部易变性,您只能从易变绑定获取易变借用,因为。。。它们在功能上是一样的:

设mut x=1;
设x_ref=&mut x;
*x_ref=2;
普林顿!(“{}”,x);//印刷品2
在let-mut中,mut的确切语义是什么


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

因为X是不可变的,所以它现在和将来都不会更改,请参阅。然而,您正试图获得X的可变引用,这是不可能的,因为X是不可变的,但是您仍然可以在不使用mut键的情况下获得X到X的“引用”,因为X和&X是不可变的。这是否回答了您的问题?为了可变地借用
x
,对该变量的绑定也需要声明为
mut
让mut x=1链接问题中的更多详细信息。另见: