fn main() {
//在rust中,一个值是只读还是可修改完全由其所有者变量决定,而非变量类型决定!
//定义一个可变变量:即变量的值可以被修改,如下:
let mut x:i32 = 5; //变量x的值可修改,其变量类型为i32,其所拥有的值是5.
println!("x:{}",x);
x = 6;
println!("reassigned x:{}",x);
//从左边开始,第二个mut说明这个引用所指向的值可以被修改,第三个mut只是说明提示我们是以可修改可变变量x的值的方式借用了x, 如下:
let mut rx:&mut i32 = &mut x;
*rx = 7; //实质上x的值被修改为7。
println!("*rx: {}",*rx);
//从左边开始,第一个mut说明这个变量rx本身的值可以被修改,即这个引用rx的指向可以被修改,如下:
let mut y:i32 = 8;
rx = &mut y; //rx指向可变变量y, 不再指向x.
println!("*rx-reassigned: {}", *rx);
//错误例子:编译报错:rx的类型是&mut i32 , 所以下面不可变变量z与之类型不匹配,应该定义为:let mut z:i32 = 10;
//并且必须是可变借用,即:&mut z;
//let z:i32 = 10;
//rx = &z;
}