how to impl a trait for both SomeType<T1>, SomeType<T2>, where T1, T2 are trait by someone else

37 Views Asked by At

a) I want to write a trait, MyTrait

b) I want to impl MyTrait for Result<T, TaitBySomeoneElseA>, Result<T, TaitBySomeoneElseB>

c) I wrote the following code

d) I got "conflicting implementation"

Is there a way to do what I want? thanks!

// a trait, by someone else
trait TraitBySomeoneElseA {}

// another trait, by someone else
trait TraitBySomeoneElseB {}

// my trait
trait MyTrait {}

impl<T, E> MyTrait for Result<T, E>
where
    T: TraitBySomeoneElseA,
    E: std::error::Error,
{
    // for all T: TraitBySomeoneElseA, use this one
}

impl<T, E> MyTrait for Result<T, E>
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Result<_, _>`
where
    T: TraitBySomeoneElseB,
    E: std::error::Error,
{
    // for all T: TraitBySomeoneElseB, use this one
}
0

There are 0 best solutions below