在Rust 的情况下,可以进行以下粘合:

let &mut a = &mut 5;

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

推荐答案

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

let _: () = a;

在这种情况下,该值是一个"整数变量",或一个按值整数.它是不可变的(如a += 1次测试所示).

这是因为您使用的是destructuring syntax.你将&mut 5&mut _进行模式匹配,就像你写的一样

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

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

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

let ref mut a = 5;

这在分解 struct 以引用多个内部值时非常有用.

Rust相关问答推荐

编译项目期间使用Cargo生成时出现rustc错误

支持TLS的模拟HTTP服务器

在析构赋值中使用一些现有绑定

如何在Rust中将选项<;选项<;字符串>;转换为选项<;选项&;str>;?

为什么';t std::cell::ref使用引用而不是非空?

用于判断整数块是否连续的SIMD算法.

Windows 上 ndarray-linalg 与 mkl-stats 的链接时间错误

try 实现线程安全的缓存

std mpsc 发送者通道在闭包中使用时关闭

在Rust中实现Trie数据 struct 的更好方式

方法可以被误认为是标准特性方法

我如何取消转义,在 Rust 中多次转义的字符串?

从光标位置旋转精灵

如何在 Emacs Elisp 中获得类似格式化的 LSP?

内部值发生变化时 Rc 的行为

Rust 中的let是做什么的?

为什么 Rust 编译器在移动不可变值时执行复制?

从 Cranelift 发出 ASM

有没有办法阻止 rust-analyzer 使非活动代码变暗?

在 Rust 中组合特征的不同方法是否等效?