Я создал двухэлементную структуру 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 и возвращать значения?, но код в ответе не работает, даже если я положил a use std::ops::Mul;
вверху.
Я использую rustc 1.0.0-nightly (ed530d7a3 2015-01-16 22:41:16 +0000)
Я не буду принимать "у вас есть только два поля, зачем использовать ссылку" в качестве ответа; что, если бы я хотел создать 100-элементную структуру? Я приму ответ, который демонстрирует, что даже с большой структурой я должен передавать значение, если это так (я не думаю, что это так). Мне интересно знать хорошее правило для размера структуры и передавая значение vs struct, но это не текущий вопрос.