最佳答案
我做了一个两个元素的 Vector
结构,我想重载 +
操作符。
我让所有的函数和方法都接受引用,而不是值,我希望 +
操作符也是这样工作的。
impl Add for Vector {
fn add(&self, other: &Vector) -> Vector {
Vector {
x: self.x + other.x,
y: self.y + other.y,
}
}
}
根据我尝试的变体,我可能会遇到生存期问题或类型不匹配。具体来说,&self
参数似乎没有被视为正确的类型。
我看过 impl
和 Add
上带有模板参数的例子,但它们只会导致不同的错误。
我找到了 如何为不同的 RHS 类型和返回值重载运算符?,但是即使我把 use std::ops::Mul;
放在顶部,答案中的代码也不起作用。
我每晚使用 rustc 1.0.0(ed530d7a32015-01-1622:41:16 + 0000)
我不会接受“你只有两个字段,为什么要使用引用”作为答案; 如果我想要一个100个元素的结构呢?我接受这样一个答案: 即使使用大型结构,我也应该通过值传递(如果是这样的话)(但我不认为是这样)我有兴趣了解一个关于 struct 大小和通过 value 与 struct 传递的经验法则,但这不是当前的问题。