Syntax 让我们;mut语法

Syntax 让我们;mut语法,syntax,rust,Syntax,Rust,有可能在生锈的情况下进行以下粘合: let &mut a = &mut 5; 但这到底意味着什么呢?例如,让a=&mut 5创建类型为&mut i32的不可变绑定,让mut a=&mut 5创建类型为&mut i32的可变绑定。让&mut怎么样?测试某种类型的简单方法是将其分配到错误的类型: let _: () = a; 在这种情况下,该值是一个“整数变量”,或一个按值整数。它是不可变的(如使用a+=1进行测试所示) 这是因为您正在使用解构语法。您正在将您的&mut 5与&m

有可能在生锈的情况下进行以下粘合:

let &mut a = &mut 5;

但这到底意味着什么呢?例如,
让a=&mut 5
创建类型为
&mut i32
的不可变绑定,
让mut a=&mut 5
创建类型为
&mut i32
的可变绑定。让&mut
怎么样?

测试某种类型的简单方法是将其分配到错误的类型:

let _: () = a;
在这种情况下,该值是一个“整数变量”,或一个按值整数。它是不可变的(如使用
a+=1进行测试所示)

这是因为您正在使用解构语法。您正在将您的
&mut 5
&mut
进行模式匹配,就像您编写

match &mut 5 { &mut a => {
// rest of code
} };
因此,您正在添加一个可变引用并立即取消引用它

要将可变引用绑定到值,可以执行以下操作

let ref mut a = 5;

这在分解结构以引用多个内部值时非常有用。

谢谢!我忘记了在let bindingstldr中使用破坏语法的可能性:赋值的工作方式类似于父匹配。在
=
中,相同数量的“与”符号抵消。RHS可以有更多的安培数。