Generics 无法在泛型结构的trait中实现
对于Rust中的泛型结构,我无法将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{ 自我价值 } } 当我尝试编译时,出现以下错
特性实现为特性。下面是我尝试做的一个简化版本:
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
可能有一个窍门,但我在这里看不到。请参见。