Пусть S будет структурой. Я хочу реализовать From для всех типов uint. Есть ли краткий способ сделать это?
Например, я хочу написать этот код
impl From<S> for usize {
fn from(s: S) -> usize {
s.field_a + s.field_b
}
}
impl From<S> for u64 {
fn from(s: S) -> u64 {
s.field_a + s.field_b
}
}
impl From<S> for u32 {
fn from(s: S) -> u32 {
s.field_a + s.field_b
}
}
...
как
impl From<S> for uint {
fn from(s: S) -> uint {
s.field_a + s.field_b
}
}
Моя первая мысль состояла в том, чтобы использовать черты, чтобы сгруппировать все метки а-ля как мы передаем черты в качестве параметров . Вот моя попытка:
use std::ops::Add;
impl From<S> for impl From + Add {
fn from<T: From + Add>(s: S) -> T {
T::from(s.field_a) + T::from(s.field_b)
}
}
Но это не сработает и выглядит неуверенно (не просто вещи, которые подразумевают From и Add).
Не знаю, откуда go отсюда! Любая помощь будет оценена!