我正在try 为任何Error
创建一个具有一揽子From
实现的错误类型,然而,由于该类型本身就是Error
,因此我遇到了冲突:
pub struct ApiError(pub i64, pub String);
impl<T: Error> From<T> for ApiError {
fn from(err: T) -> Self {
Self(500, err.to_string())
}
}
impl Error for ApiError {}
error[E0119]: conflicting implementations of trait `std::convert::From<ApiError>` for type `ApiError`
--> src/lib.rs:5:1
|
5 | impl<T: Error> From<T> for ApiError {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: conflicting implementation in crate `core`:
- impl<T> From<T> for T;
我认为这是因为我通过在ApiError
上实现Error
而创建的循环.是否可以说出类似T: Error & not ApiError
的内容,并将我的特定类型从From
的全面实现中排除?
如果这是不可能的,我很好奇anyhow是如何做类似的事情的?