Я хочу реализовать From
для экземпляров универсального типа в случаях, когда параметры типа могут быть преобразованы.
struct Item<T>(T);
impl<T, U> From<Item<U>> for Item<T> where T: From<U> {
fn from(other: Item<U>) -> Item<T> {
Item(other.0.into())
}
}
fn main() {
let a = Item(10i8);
let b: Item<i32> = a.into();
}
Это не так с
error[E0119]: conflicting implementations of trait `std::convert::From<Item<_>>` for type `Item<_>`:
--> src/main.rs:4:1
|
3 | impl<T, U> From<Item<U>> for Item<T> where T: From<U> {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
Есть лиспособ сделать это?