如果我借用一个取消引用的指针会发生什么?
发生错误。
let a = some object;
let b = &a;
let c = &*b;
什么对象被C借用了?解引用操作是否会像函数的返回值一样创建临时对象?它是如何遵循借用规则的。
我也对Box的可变语义感到困惑。
let mut a = Box::new(8us)
*a = 1;
没有像Box::new_mut()这样的东西,这段代码也可以正常工作。但是
let mut a = &8us;
*a = 1;
发生错误。
c
存储了a
的别名。*b
不是栈临时变量,而是a
的 rvalue 别名。可以通过一个简短的程序进行验证:http://is.gd/CLu5WQ - DK.c
借用了a
而不是a
的副本。否则就会相当令人困惑了。 - Vladimir Matveev