Ich möchte jeden Iterator in MyType
konvertieren können.Implementieren von Von einer Eigenschaft, die Self als Mitglied hat
impl<T, I: IntoIterator<Item = T>> From<I> for MyType<T>
Wie in
MyType<T>::from<I: IntoIterator>(iter: I) -> MyType<T>
Wie man erwartet, ist es sinnvoll für MyType
sich auf ein Iterator
wandelbar macht und erfüllen IntoIterator
als Merkmal, und es tut.
Aber From
wird automatisch reflexiv für jede Art implementiert, kann jeder Typ in sich natürlich umwandeln, und das ist, wo der Compiler bellt:
error[E0119]: conflicting implementations of trait
`std::convert::From<MyType<_>>` for type `MyType<_>`:
Meine generische Implementierung für alle IntoIterators
Konflikte mit dem Standard ein. Wenn Rust keinen Standardlieferanten geliefert hat, dann würde es funktionieren, obwohl es unnötig teuer ist.
Gibt es eine Möglichkeit, das Merkmal für jedes Mitglied von IntoIterator
außer MyType
zu implementieren?
Querverweis auf [r/rost] (https://www.reddit.com/r/rust/comments/5tfrfc/implementation_for_trait_that_is_already_provided/). –