我有一个特质有没有一种方法来实现遍历所有引用类型的迭代器的特征?
trait Foo<T> : Iterator<Item=T> {
fn bar(&mut self) -> f64;
}
我想通过它的所有引用类型(f64
,&'a f64
和&'a mut f64
),因为在逻辑上也没关系,一旦实现这种特质的类型T
(在我的情况f64
) 。
我现在有
impl<T: Iterator<Item = f64>> Foo<f64> for T {
fn bar(&mut self) -> f64 {
// duplicated code
}
}
impl<'a, T: Iterator<Item = &'a f64>> Foo<&'a f64> for T {
fn bar(&mut self) -> f64 {
// duplicated code
}
}
impl<'a, T: Iterator<Item = &'a mut f64>> Foo<&'a mut f64> for T {
fn bar(&mut self) -> f64 {
// duplicated code
}
}
有没有办法做到这一点不重复的好办法?
我不完全知道如何做到一切。如果不知道你究竟在干什么,你可能能够通过使用'Borrow'特性将重复代码移动到辅助函数中? [此围栏可能会提供一个可能的解决方案](https://play.rust-lang.org/?gist=296e500aa94741cb59af262454f5f413&backtrace=0)。 –