记录:当常量或变量的所有权转换时的对比

来源:互联网 发布:行知中学官网 编辑:程序博客网 时间:2024/04/28 18:50
下面代码会编译错误:  error: cannot assign to `*x` because it is borrowed 
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);
}
0 0
原创粉丝点击