let r1 =&s;和有什么区别?并令r1 =&mut s?

时间:2019-08-27 14:46:27

标签: reference rust mutability

我正在学习Rust,但是对此问题有些疑问。

这有什么区别

fn main() {
    let mut s = String::from("hello");
    let r1 = &s;
    let r2 = &s;
}

还有这个

fn main() {
    let mut s = String::from("hello");
    let r1 = &mut s;
    let r2 = &mut s;
}

1 个答案:

答案 0 :(得分:1)

在第一个版本中,您借用了s作为不可变的。即使s是可变的,您也不能修改它,因为引用是不可变的。

就像变量一样,默认情况下也是不变的,引用也是一样。

在第二个版本中,您借用了s作为可变变量-因此您可以使用引用对其进行修改。

有关更多详细信息,请参见The Rust Programming Language