error[E0119]: conflicting implementations of trait `MyTrait` for type `MyType` --> $DIR/coherence-blanket-conflicts-with-specific-multidispatch.rs:22:1 | LL | impl MyTrait for T { | ------------------------ first implementation here ... LL | impl MyTrait for MyType { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `MyType` error[E0053]: method `get` has an incompatible type for trait --> $DIR/coherence-blanket-conflicts-with-specific-multidispatch.rs:24:22 | LL | fn get(&self) -> usize { (*self).clone() } | ^^^^^ | | | expected `MyType`, found `usize` | help: change the output type to match the trait: `MyType` | note: type in trait --> $DIR/coherence-blanket-conflicts-with-specific-multidispatch.rs:8:22 | LL | fn get(&self) -> T; | ^ = note: expected signature `fn(&MyType) -> MyType` found signature `fn(&MyType) -> usize` error[E0308]: mismatched types --> $DIR/coherence-blanket-conflicts-with-specific-multidispatch.rs:24:30 | LL | fn get(&self) -> usize { (*self).clone() } | ----- ^^^^^^^^^^^^^^^ expected `usize`, found `MyType` | | | expected `usize` because of return type error: aborting due to 3 previous errors Some errors have detailed explanations: E0053, E0119, E0308. For more information about an error, try `rustc --explain E0053`.