我正在尝试将可变向量转换为Rust中的不可变向量。我认为这样可行,但事实并非如此:
let data = &mut vec![];
let x = data; // I thought x would now be an immutable reference
如何将可变引用转换为不可变绑定?
答案 0 :(得分:14)
取消引用然后重新引用该值:
fn main() {
let data = &mut vec![1, 2, 3];
let x = &*data;
}
对于您的代码正在做什么,您应该阅读What's the difference in `mut` before a variable name and after the `:`?。您的变量data
已经是不可变的,但它包含一个可变引用。您无法重新分配data
,但可以更改指向的值。
如何将可变引用转换为不可变绑定?
它已经 是一个不可变的绑定,因为你无法改变data
的内容。