令人惊讶的行为代码片段:
let p = &mut 1i;
p; // note: `p` moved here because it has type `&mut int`, which is non-copyable
p; // error: use of moved value: `p`
这是一个错误还是预期的行为?
答案 0 :(得分:2)
这是有意的。 &mut T
是一种拥有类型,因此当您将其作为表达式提及时,它会移动。你通常不会注意到这一点,因为方法调用有自己的重新借用规则,可以给被调用者一个临时可变的借用self
值(以避免你的可变引用的烦恼消失)。