gpt4 book ai didi

rust - 为什么 `sum += x` 与整数类型的 `sum += *x` 工作方式相同?这是自动取消引用吗?

转载 作者:行者123 更新时间:2023-12-03 11:25:31 25 4
gpt4 key购买 nike

非注释代码和注释代码都产生相同的 sum 值。我不确定这里发生了什么,但我希望编译器会在不使用取消引用时抛出错误。

fn main() {
let a = vec![0, 1, 2, 3, 4];
let mut sum = 0;

for x in &a {
sum += *x;
// sum += x;
}
}

最佳答案

不,这不是自动取消引用的情况。 += 运算符(又名特征 AddAssign)是为整数类型(T)实现的,同时具有 T&T 操作数。

来自 AddAssign docs :

impl AddAssign<i32> for i32
impl<'_> AddAssign<&'_ i32> for i32

关于rust - 为什么 `sum += x` 与整数类型的 `sum += *x` 工作方式相同?这是自动取消引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64719696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com