私は論理的に、それは問題ではありませんので、そのすべての参照型(f64
、&'a f64
、および&'a mut f64
)以上(私の場合f64
で)タイプT
に一度、この形質を実装したい特性すべての参照型に対してイテレータの特性を一般的に実装する方法はありますか?
trait Foo<T> : Iterator<Item=T> {
fn bar(&mut self) -> 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
}
}
は重複せずにこれを実現するための良い方法はありますか?
私はすべてを1つの方法で実行する方法は正確には分かりません。あなたが何をしているのか正確に知らなければ、複製されたコードを 'Borrow'特性を使ってヘルパー関数に移動させることができます。 [このプレイペンは解決策を提供する可能性があります](https://play.rust-lang.org/?gist=296e500aa94741cb59af262454f5f413&backtrace=0)。 –