可以在Rust中进行以下绑定(bind):

let &mut a = &mut 5;

但这到底是什么意思?例如,let a = &mut 5创建一个&mut i32类型的不可变绑定(bind),let mut a = &mut 5创建一个&mut i32类型的可变绑定(bind)。那let &mut呢?

最佳答案

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

let _: () = a;

在这种情况下,该值为“整数变量”或按值整数。它是不可变的(如对a += 1的测试所示)。

这是因为您使用的是解构语法。您正在将&mut 5&mut _进行模式匹配,就像您编写了
match &mut 5 { &mut a => {
// rest of code
} };

因此,您要添加一个可变引用并立即对其取消引用。

要将可变引用绑定(bind)到值,您可以执行
let ref mut a = 5;

这在进行结构分解以引用多个内部值时很有用。

关于syntax - Let&mut语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31298802/

10-11 07:39