2
私は、形質IntoIterator<Item = &T>
を実装するリファレンス(foo
)を持っています。 *foo
のタイプもItem = T
であるにもかかわらず実装されているため、*foo
の型は(つまり参照自体)で、*foo
(参照値)ではなく、traitメソッドinto_iter
を直接呼び出す必要があります。私はUFCSを試したことがありますが、それでもそのトリックをしていないようです。 、@ LukasKalbertodtの有益なコメントに感謝参照型ではなく、参照型でtraitメソッドを呼び出すにはどうすればよいですか?
fn csl_join<'a, V, T>(value: &V) -> String
where V: IntoIterator<Item = &'a T>,
T: 'a + ToString
{
itertools::join(value.into_iter().map(|v: &T| v.to_string()), ",")
}
私は、あなたが達成したいと思っていることは確かではありません。 '&V'は' IntoIterator'を実装していないので、メソッド 'into_iter'を持っていません。 'V'は、その特性を実装しているので、メソッドを持っています。また、 '&IntoIterator <...>'と '&V、V:IntoIterator <...>'の間には重要な違いがあります。だから私が唯一の混乱した読者ではない場合:少し質問を明確にすることができますか? :) –
@ LukasKalbertodt:私の悪い。私は特色の境界で愚かであった!質問を削除します。ありがとうございます。 – Noldorin
別の言い方をすると、 '* value'の代わりに' value'を呼び出すときにどのような振る舞いの違いがありますか? –