可变引用生 rust [重复]

fcy6dtqo  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(186)

此问题在此处已有答案

What's the difference between placing "mut" before a variable name and after the ":"?(4个答案)
21天前关闭。

fn main() {
    let mut x = 42;
    let y = &x;
    *y = 5;
}

这不能编译。为什么它必须是&mutx?在我的理解中,引用(即存储x的值的地址)不会改变,只有存储在该地址上的值会改变。而xmut
※编译:

fn main() {
    let mut x = 42;
    let y = &mut x;
    *y = 5;
}
gzszwxb4

gzszwxb41#

&mut的意思是一个值可以通过它发生变异的引用,而不是一个本身可以发生变异的引用。&表示一个值不能通过它发生变异的引用。一个本身可以发生变异的引用可以写成let mut y = &x;这样的形式(尽管在实践中这并不常见)。
在我的理解中......引用(即存储x值的地址)......
我认为这里的混乱源于这样一个事实,即引用与内存地址或指针并不完全相同。它更概念化,并提供更多的保证--例如,引用将始终指向给定类型的有效对象。

相关问题