未注释和注释的代码都产生相同的sum值。我不确定这里发生了什么,但我希望编译器在不使用取消引用时抛出错误。
fn main() {
let a = vec![0, 1, 2, 3, 4];
let mut sum = 0;
for x in &a {
sum += *x;
// sum += x;
}
}
Run Code Online (Sandbox Code Playgroud)
不,这不是自动取消引用的情况。的+=操作者(又名性状AddAssign)为整数类型(实现T)与两个T和&T操作数。
impl AddAssign<i32> for i32
Run Code Online (Sandbox Code Playgroud)
impl<'_> AddAssign<&'_ i32> for i32
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |