释放双眼,带上耳机,听听看~!
有时,对于初学者而言,解引用(*)经常让人感觉迷惑。比如:
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