问题 让我们的语法


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

let &mut a = &mut 5;

但究竟是什么意思呢?例如, let a = &mut 5 创建一个不可变的类型绑定 &mut i32let mut a = &mut 5 创建一个类型的可变绑定 &mut i32。关于什么 let &mut


5682
2017-07-08 16:46


起源



答案:


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

let _: () = a;

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

这是因为你正在使用 解构语法。你是模式匹配你的 &mut 5 反对 &mut _,就像你写的那样

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

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

要将可变引用绑定到值,您可以这样做

let ref mut a = 5;

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


10
2017-07-08 16:52



谢谢!我忘记了在let绑定中使用destruct语法的可能性 - Nikolai Mavrenkov


答案:


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

let _: () = a;

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

这是因为你正在使用 解构语法。你是模式匹配你的 &mut 5 反对 &mut _,就像你写的那样

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

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

要将可变引用绑定到值,您可以这样做

let ref mut a = 5;

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


10
2017-07-08 16:52



谢谢!我忘记了在let绑定中使用destruct语法的可能性 - Nikolai Mavrenkov