error[E0221]: ambiguous associated type `Type` in bounds of `T` --> $DIR/disambiguate-multiple-trait-2.rs:23:12 | LL | type Type; | --------- ambiguous `Type` from `A` ... LL | type Type; | --------- ambiguous `Type` from `B` ... LL | let _: T::Type; | ^^^^^^^ ambiguous associated type `Type` | help: use fully-qualified syntax to disambiguate | LL - let _: T::Type; LL + let _: ::Type; | help: use fully-qualified syntax to disambiguate | LL - let _: T::Type; LL + let _: ::Type; | error[E0034]: multiple applicable items in scope --> $DIR/disambiguate-multiple-trait-2.rs:16:7 | LL | t.foo(); | ^^^ multiple `foo` found | note: candidate #1 is defined in the trait `A` --> $DIR/disambiguate-multiple-trait-2.rs:4:5 | LL | fn foo(&self); | ^^^^^^^^^^^^^^ note: candidate #2 is defined in the trait `B` --> $DIR/disambiguate-multiple-trait-2.rs:10:5 | LL | fn foo(&self); | ^^^^^^^^^^^^^^ help: disambiguate the method for candidate #1 | LL - t.foo(); LL + A::foo(&t); | help: disambiguate the method for candidate #2 | LL - t.foo(); LL + B::foo(&t); | error[E0034]: multiple applicable items in scope --> $DIR/disambiguate-multiple-trait-2.rs:20:16 | LL | let _ = T::CONST; | ^^^^^ multiple `CONST` found | note: candidate #1 is defined in the trait `A` --> $DIR/disambiguate-multiple-trait-2.rs:3:5 | LL | const CONST: usize = 1; | ^^^^^^^^^^^^^^^^^^ note: candidate #2 is defined in the trait `B` --> $DIR/disambiguate-multiple-trait-2.rs:9:5 | LL | const CONST: usize; | ^^^^^^^^^^^^^^^^^^ help: use fully-qualified syntax to disambiguate | LL - let _ = T::CONST; LL + let _ = ::CONST; | LL - let _ = T::CONST; LL + let _ = ::CONST; | error[E0223]: ambiguous associated type --> $DIR/disambiguate-multiple-trait-2.rs:52:12 | LL | let _: S::Type; | ^^^^^^^ | help: use fully-qualified syntax | LL - let _: S::Type; LL + let _: ::Type; | LL - let _: S::Type; LL + let _: ::Type; | error[E0034]: multiple applicable items in scope --> $DIR/disambiguate-multiple-trait-2.rs:46:8 | LL | S::foo(&s); | ^^^ multiple `foo` found | note: candidate #1 is defined in an impl of the trait `A` for the type `T` --> $DIR/disambiguate-multiple-trait-2.rs:35:5 | LL | fn foo(&self) {} | ^^^^^^^^^^^^^ note: candidate #2 is defined in an impl of the trait `B` for the type `T` --> $DIR/disambiguate-multiple-trait-2.rs:41:5 | LL | fn foo(&self) {} | ^^^^^^^^^^^^^ help: use fully-qualified syntax to disambiguate | LL - S::foo(&s); LL + A::foo(&s); | LL - S::foo(&s); LL + B::foo(&s); | error[E0034]: multiple applicable items in scope --> $DIR/disambiguate-multiple-trait-2.rs:49:16 | LL | let _ = S::CONST; | ^^^^^ multiple `CONST` found | note: candidate #1 is defined in an impl of the trait `A` for the type `T` --> $DIR/disambiguate-multiple-trait-2.rs:34:5 | LL | const CONST: usize = 1; | ^^^^^^^^^^^^^^^^^^ note: candidate #2 is defined in an impl of the trait `B` for the type `T` --> $DIR/disambiguate-multiple-trait-2.rs:40:5 | LL | const CONST: usize = 1; | ^^^^^^^^^^^^^^^^^^ help: use fully-qualified syntax to disambiguate | LL - let _ = S::CONST; LL + let _ = ::CONST; | LL - let _ = S::CONST; LL + let _ = ::CONST; | error: aborting due to 6 previous errors Some errors have detailed explanations: E0034, E0221, E0223. For more information about an error, try `rustc --explain E0034`.