我正在尝试实现一个错误枚举,它可能包含与我们的某个特征相关的错误,如下所示:
trait Storage { type Error;}enum MyError<S: Storage> { StorageProblem(S::Error),}
我还试图实现From
特性以允许MyError
从一个实例构建Storage::Error
:
impl<S: Storage> From<S::Error> for MyError<S> { fn from(error: S::Error) -> MyError<S> { MyError::StorageProblem(error) }}
但是这无法编译:
error[E0119]: conflicting implementations of trait `std::convert::From<MyError<_>>` for type `MyError<_>`: --> src/lib.rs:9:1 | 9 | impl<S: Storage> From<S::Error> for MyError<S> { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: conflicting implementation in crate `core`: - impl<T> std::convert::From<T> for T;
我不明白为什么编译器认为这已经实现了。错误消息告诉我已经有一个From<MyError<_>>
(有)的实现,但我不想在这里实现 - 我正在尝试实现,From<S::Error>
并且MyError
与S::Error
我所看到的类型不同。
我是否遗漏了仿制药的基本内容?
使用泛型类型时,如何实现“From”的冲突?
小唯快跑啊
繁星淼淼