pub trait Trait1 { type Output; } pub trait Trait2 {} pub struct A; impl Trait1 for T where T: Trait2 { type Output = (); } impl Trait1> for A { //~^ ERROR conflicting implementations of trait //~| downstream crates may implement trait `Trait2>` for type `A` type Output = i32; } fn main() {}