Rust: 为什么同样的情况,有时不需要解引用?

释放双眼,带上耳机,听听看~!

有时,对于初学者而言,解引用(*)经常让人感觉迷惑。比如:


1
2
3
4
5
6
7
1let v2 = [1_i32, 2, 3];
2    let mut inidata2: i32 = 0;
3    for i in &v2 {
4        inidata2 = i+1;// 没有*
5        println!("inidata2:{:?},{:?}", inidata2, i);
6    }
7

上面为什么不需要解引用(*)?
明明下面的这种情况,是需要解引用的呀?


1
2
3
4
5
6
7
1let v2 = [1_i32, 2, 3];
2    let mut inidata2: i32 = 0;
3    for i in &v2 {
4        inidata2 = *i;
5        println!("inidata2:{:?},{:?}", inidata2, i);
6    }
7

为什么呢?
因为Add已经实现了解引用。


1
2
3
1impl<'a>Add <&'a i32>for i32.
2impl<'a>Add < i32>for i32.
3

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++设计模式

2022-1-11 12:36:11

安全资讯

传蔚来小鹏理想商讨在港上市,筹资总额50亿美元

2021-6-10 17:25:00

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索