下面代码会编译错误: error: cannot assign to `*x` because it is borrowed
fn main() {
let mut x = box 5;
*x -= 1;
println!("y Oh no: {}", y);
return;
println!("Oh no: {}", x);
}
fn main() {
let mut x = box 5;
if *x < 10 {
// 问题在这里,注意当我们使用&x赋给y后,所有权暂时交给了y,所以修改x的值时,就会出现上面的编译错误,
// 如果注释掉下面*x -= 1;这行就是正确的。
let y = &x;*x -= 1;
println!("y Oh no: {}", y);
return;
}
// 虽然在if中已经将x的所有权交给y了,但是只要出了y这个变量的作用于,所有权就会又重新回到x
*x -= 1;println!("Oh no: {}", x);
}