Как реализовать Сдля Foo <T> - PullRequest
2 голосов
/ 24 октября 2019

Я хочу реализовать 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> {
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |

Есть лиспособ сделать это?

...