Generics 如何从<;富<;U>&燃气轮机;对于Foo<;T>;

Generics 如何从<;富<;U>&燃气轮机;对于Foo<;T>;,generics,rust,type-conversion,traits,Generics,Rust,Type Conversion,Traits,在类型参数可以转换的情况下,我想从为泛型类型的实例化实现 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() {

在类型参数可以转换的情况下,我想从为泛型类型的实例化实现

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();
}
struct项(T);
项目的impl From,其中T:From{
fn来源(其他:项目)->项目{
项(其他.0.into())
}
}
fn main(){
设a=项目(10i8);
设b:Item=a.into();
}
这与

error[E0119]:trait`std::convert::From`for type`Item`的实现冲突:
-->src/main.rs:4:1
|
3 |对于T:From的项目,从导入{
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|

有什么方法可以做到这一点吗?

这已经由std@Stargateur:你是什么意思?如果实现了,我该如何称呼它?删除我的实现会导致另一个错误:虽然不是。这涉及到专业化和我相信的更高级类型。第一个不稳定,后一个还不受支持。请解决例如,在vec中使用一些涉及SpecExtend trait的黑客方法解决了这个问题。您的实现与来自
核心
实现冲突,因为它还涵盖了来自for Item的
是的,这是正确的。