如何在自定义类型中使用"+="这样的复合运算符?

通过实现Add, Sub, etc,可以重载一些基本运算符.但似乎对+=没有任何支持,x += y也不会自动解释为x = x + y(从1.0 alpha版本开始).

推荐答案

这一点现在得到了支持,称为AddAssign(SubAssignMulAssign…等等).

这是一个基本的例子:

use std::ops::{Add, AddAssign};
struct Float2(f64, f64);

impl AddAssign for Float2 {
    fn add_assign(&mut self, rhs: Float2) {
        self.0 += rhs.0;
        self.1 += rhs.1;
    }
}

Rust相关问答推荐

按下按钮时如何在服务器中创建文件并在本地下载?

将JSON密钥转换为Polars DataFrame

把Vector3变成Vector4的绝妙方法

关于Rust 中回归的逻辑

无法理解铁 rust &S错误处理

零拷贝按步骤引用一段字节

使用关联类型重写时特征的实现冲突

为什么HashMap::get和HashMap::entry使用不同类型的密钥?

如何从宏调用闭包?

如何处理闭包中的生命周期以及作为参数和返回类型的闭包?

当推送到 HashMap 中的 Vector 时,类型 `()` 无法取消引用

如何基于常量在Rust中跳过一个测试

Rust: 目标成员属于哪个"目标家族"的列表是否存在?

Rust中的位移操作对范围有什么影响?

Rust 异步和 AsRef 未被发送

当我不满足特征界限时会发生什么?

没有通用参数的通用返回

Rust HRTB 是相同的,但编译器说一种类型比另一种更通用

为什么这个值在上次使用后没有下降?

如何在 Rust 中构建一个 str