Path语句在移动状态中留下值?

时间:2014-08-14 17:02:27

标签: rust

令人惊讶的行为代码片段:

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`

这是一个错误还是预期的行为?

1 个答案:

答案 0 :(得分:2)

这是有意的。 &mut T是一种拥有类型,因此当您将其作为表达式提及时,它会移动。你通常不会注意到这一点,因为方法调用有自己的重新借用规则,可以给被调用者一个临时可变的借用self值(以避免你的可变引用的烦恼消失)。