让& mut语法

时间:2015-07-08 16:46:43

标签: syntax rust

可以在Rust中进行以下绑定:

let &mut a = &mut 5;

但这究竟是什么意思?例如,let a = &mut 5创建类型为&mut i32的不可变绑定,let mut a = &mut 5创建类型为&mut i32的可变绑定。那么let &mut呢?

1 个答案:

答案 0 :(得分:10)

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

let _: () = a;

在这种情况下,值是"整数变量"或者是值整数。它不可变(用a += 1测试显示)。

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

一样
match &mut 5 { &mut a => {
// rest of code
} };

因此,您正在添加一个可变引用并立即取消引用它。

要将可变引用绑定到值,您可以执行

let ref mut a = 5;

这在解构时很有用,可以引用多个内部值。