如何重载 += "plus equals" 运算符?
How can I overload the += "plus equals" operator?
如何将复合运算符(如“+=”)与自定义类型一起使用?
通过实现 Add
, Sub
, etc 可以重载一些基本运算符。但是似乎没有对 +=
的任何支持,x += y
也不会自动解释为 x = x + y
(从 1.0 alpha 版本开始)。
目前您不能,但这绝对是您非常想要的东西。涵盖 RFC issue #393.
很久以前 x += y
被实现为 x = x + y
但它总是有错误。我认为当时该方法没有任何根本问题,但现在我认为切换到按值获取参数的运算符特征使得脱糖更难正常工作。
现在支持,称为 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;
}
}
如何将复合运算符(如“+=”)与自定义类型一起使用?
通过实现 Add
, Sub
, etc 可以重载一些基本运算符。但是似乎没有对 +=
的任何支持,x += y
也不会自动解释为 x = x + y
(从 1.0 alpha 版本开始)。
目前您不能,但这绝对是您非常想要的东西。涵盖 RFC issue #393.
很久以前 x += y
被实现为 x = x + y
但它总是有错误。我认为当时该方法没有任何根本问题,但现在我认为切换到按值获取参数的运算符特征使得脱糖更难正常工作。
现在支持,称为 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;
}
}