rust - 为什么对于整数类型,`sum += x` 与 `sum += *x` 的工作方式相同?这是自动取消引用吗?
问题描述
非注释代码和注释代码都产生相同的sum
值。我不确定这里发生了什么,但我希望编译器在不使用取消引用时抛出错误。
fn main() {
let a = vec![0, 1, 2, 3, 4];
let mut sum = 0;
for x in &a {
sum += *x;
// sum += x;
}
}
解决方案
不,这不是自动取消引用的情况。+=
运算符(又名 trait )是针对带有和操作数AddAssign
的整数类型 ( ) 实现的。T
T
&T
impl AddAssign<i32> for i32
impl<'_> AddAssign<&'_ i32> for i32
推荐阅读
- django - 类型对象“ModelForm”没有属性“ValidationError”
- php - JSON,无法在laravel中解码
- telegram - 如何管理发送到我的机器人的消息过多?
- ocaml - 如何使用 dune 创建 js_of_ocaml 库?
- reporting-services - 在 SSRS 中按需运行子报表
- javascript - 滚动条在绝对定位元素上方呈现,以在元素下方水平滚动容器
- git - 解压包后 git diff 没有显示差异
- python - 如何使用 pymongo 在我的查询中插入一个新字段?
- sql-server - 如何连接多个表,一个表作为动态列,另一个表作为这些列的值
- google-custom-search - 是否可以自定义 Google 自定义搜索的 UI 和结果?