如何使Rust可变引用不可变?

时间:2016-12-28 17:25:54

标签: rust

我正在尝试将可变向量转换为Rust中的不可变向量。我认为这样可行,但事实并非如此:

let data = &mut vec![];
let x = data;          // I thought x would now be an immutable reference

如何将可变引用转换为不可变绑定?

1 个答案:

答案 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的内容。