如何重载+ ="加上等于"运算符?

dha*_*rdy 6 operator-overloading rust

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

重载一些基本的运营商通过实施是可能的Add,Sub等等.但似乎没有任何支持+=,也没有x += y自动解释为x = x + y(从1.0 alpha版本).

ide*_*n42 8

现在支持,称为AddAssign(SubAssign,MulAssign...等).

这是一个基本的例子:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)


huo*_*uon 5

你现在不能,但它肯定是非常需要的东西.RFC#393涵盖的问题.

很久以前就x += y已经实现了,x = x + y但总是存在漏洞.我不认为当时这种方法存在任何根本问题,但现在我认为转向运算符特征采用参数by-value会使得desugaring更难以正常工作.