J'essaie de créer un type d'erreur avec une couverture From
pour toute Error
Toutefois, comme ce type est lui-même un Error
J'ai des conflits :
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;
Je suppose que c'est à cause du cycle que j'ai créé en mettant en oeuvre Error
en ApiError
. Est-il possible de dire quelque chose comme T: Error & not ApiError
et d'exclure mon type particulier de cette mise en œuvre globale pour From
?
Si ce n'est pas possible, je suis curieux de savoir comment de toute façon semble faire quelque chose de similaire ?