如何为Foo <T>实现From <Foo <U >>

时间:2019-10-23 22:29:06

标签: generics rust type-conversion traits

在可以转换类型参数的情况下,我想为通用类型的实例化实现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> {
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |

有什么办法吗?

0 个答案:

没有答案