关键字mut放在不同位置的含义考证小例子

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值