【发布时间】:2017-01-04 07:52:13
【问题描述】:
我在为 Rust 中的通用结构实现 Into 特征时遇到了麻烦。我正在尝试做的简化版本如下:
struct Wrapper<T> {
value: T
}
impl<T> Into<T> for Wrapper<T> {
fn into(self) -> T {
self.value
}
}
当我尝试编译时,我收到以下错误:
error: conflicting implementations of trait `std::convert::Into<_>` for type `Wrapper<_>`: [--explain E0119]
--> <anon>:5:1
|>
5 |> impl<T> Into<T> for Wrapper<T> {
|> ^
note: conflicting implementation in crate `core`
我觉得问题出在标准库中的以下实现:
impl<T, U> Into<T> for U where T: From<U>
由于T可能实现From<Wrapper<T>>,这个可能是一个冲突的实现。有没有办法解决这个问题?例如,有没有办法让impl<T> 块将T 限制为不实现From<Wrapper<T>> 的类型?
【问题讨论】:
标签: generics type-conversion rust