Пример: даны следующие черты,Можно ли использовать самореферентные связанные типы при использовании дженериков?
trait DirectedAcyclicGraph<V, E> where V: Add, E: Add
Я хотел бы, чтобы всякий раз, когда значение типа V
к значению того же типа, что другое значение типа V
возвращается. Всякий раз, когда значение типа E
добавляется к другому значению того же типа, я хочу вернуть еще E
.
наивности, я думал, что это могло бы быть в правильном направлении,
trait DirectedAcyclicGraph<V, E> where V: Add<Output = V>, E: Add<Output = E>
, но это было только выстрел в темноте.
Документация Add
поставляет следующий пример,
use std::ops::Add;
struct Foo;
impl Add for Foo {
type Output = Foo;
fn add(self, _rhs: Foo) -> Foo {
println!("Adding!");
self
}
}
fn main() {
Foo + Foo;
}
, но я не могу понять, как обеспечить реализацию для универсального типа таким же образом, если это вообще возможно.
Вы * попробуйте *, что вы думаете, может быть в правильном направлении? Это выглядит правильно для меня. –
Да, не работает. Теперь в клетке. Я могу следить за связанной ошибкой позже –
http://is.gd/9qyS95 –