Generics 无法在泛型结构的trait中实现

Generics 无法在泛型结构的trait中实现,generics,type-conversion,rust,Generics,Type Conversion,Rust,对于Rust中的泛型结构,我无法将特性实现为特性。下面是我尝试做的一个简化版本: struct Wrapper<T> { value: T } impl<T> Into<T> for Wrapper<T> { fn into(self) -> T { self.value } } struct包装器{ 值:T } 装入包装器{ fn进入(自我)->T{ 自我价值 } } 当我尝试编译时,出现以下错

对于Rust中的泛型结构,我无法将
特性实现为
特性。下面是我尝试做的一个简化版本:

struct Wrapper<T> {
    value: T
}

impl<T> Into<T> for Wrapper<T> {
    fn into(self) -> T {
        self.value
    }
}
struct包装器{
值:T
}
装入包装器{
fn进入(自我)->T{
自我价值
}
}
当我尝试编译时,出现以下错误:

错误:trait`std::convert::to`for type`Wrapper`:[--explain E0119]的实现冲突
--> :5:1
|>
5 |>装入包装器{
|> ^
注意:板条箱`核心中的实现冲突`
我的印象是,问题在于标准库中的以下实现:

impl<T, U> Into<T> for U where T: From<U>
impl-Into for U,其中T:From

由于
T
可能实现
From
,这可能是一个冲突的实现。有没有办法解决这个问题?例如,有没有办法让
impl
块将
T
限制到未实现
From
的类型?

实际上……没有办法将其限制到类型e> T
未执行来自的
。Rust没有“否定”子句

通常,将
实现为
的方法只是从
实现
,然后免费将
实现为
。但是,在您的情况下,实现方式是:

impl<T> From<Wrapper<T>> for T {
    fn from(w: Wrapper<T>) -> T { w.value }
}
impl From for T{
fn from(w:Wrapper)->T{w.value}
}
这会遇到孤立规则。不允许对所有
T
执行
From

可能有一个窍门,但我在这里看不到。

请参见。