error[E0308]: mismatched types --> $DIR/associated-types-eq-3.rs:23:18 | LL | let _: Bar = x.boo(); | --- ^^^^^^^ expected struct `Bar`, found associated type | | | expected due to this | = note: expected struct `Bar` found associated type `::A` help: consider constraining the associated type `::A` to `Bar` | LL | fn foo2>(x: I) { | +++++++++ error[E0271]: type mismatch resolving `::A == Bar` --> $DIR/associated-types-eq-3.rs:38:10 | LL | foo1(a); | ---- ^ type mismatch resolving `::A == Bar` | | | required by a bound introduced by this call | note: expected this to be `Bar` --> $DIR/associated-types-eq-3.rs:12:14 | LL | type A = usize; | ^^^^^ note: required by a bound in `foo1` --> $DIR/associated-types-eq-3.rs:18:16 | LL | fn foo1>(x: I) { | ^^^^^ required by this bound in `foo1` error[E0271]: type mismatch resolving `::A == Bar` --> $DIR/associated-types-eq-3.rs:40:9 | LL | baz(&a); | ^^ type mismatch resolving `::A == Bar` | note: expected this to be `Bar` --> $DIR/associated-types-eq-3.rs:12:14 | LL | type A = usize; | ^^^^^ = note: required for the cast from `isize` to the object type `dyn Foo` error: aborting due to 3 previous errors Some errors have detailed explanations: E0271, E0308. For more information about an error, try `rustc --explain E0271`.