令人惊讶的行为代码片段:
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`
这是一个错误还是预期的行为?
最佳答案 这是有意的. & mut T是一个拥有的类型,所以当你提到它作为一个表达式时它会移动.你通常不会注意到这一点,因为方法调用有自己的重新借用规则,可以给被调用者一个临时可变的自我借用值(以避免你的可变引用的烦恼消失).