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:5 | LL | fn foo1>(x: I) { | ----- required by this bound in `foo1` ... LL | foo1(a); | ^^^^ expected struct `Bar`, found `usize` error[E0271]: type mismatch resolving `::A == Bar` --> $DIR/associated-types-eq-3.rs:41:9 | LL | baz(&a); | ^^ expected struct `Bar`, found `usize` | = note: required for the cast 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`.