У меня есть несколько черт с реализацией по умолчанию, для которых требуются те же методы, которые являются полевыми getters.Как я могу повторно использовать код для аналогичных реализаций?
trait AddPosition<T: Display>{
fn x(&self) -> T;
fn y(&self) -> T;
fn add(&self){
println!("{:}", self.x()+self.x());
}
}
trait SubPosition<T: Display>{
fn x(&self) -> T;
fn y(&self) -> T;
fn sub(&self){
println!("{:}", self.x()-self.y());
}
}
Вместо того, чтобы повторять один и тот же код для каждой реализации признака, могу ли я иметь что-то вроде этого?
impl AddPosition<i32>, SubPosition<i32> for Point{
fn x(&self) -> i32{ self.x }
fn y(&self) -> i32{ self.y }
}
И как я должен «имплантировать» AddPosition и SubPosition? – tower120
См. Редактирование, которое включает пример структуры, реализующей AddPosition и SubPosition. – mdup
(Смежный вопрос для другого Rustacean: как потенциальное имя сталкивается с 'x' как полем против' x() 'как обработанный метод? Я ожидал ошибку компилятора здесь.) – mdup