error[E0308]: mismatched types --> $DIR/in-assoc-type.rs:20:22 | LL | type Bar = impl std::fmt::Debug; | -------------------- the expected opaque type ... LL | fn foo(&self) -> >::Bar {} | --- ^^^^^^^^^^^^^^^^^^^^^^ expected opaque type, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | = note: expected opaque type `<() as Foo<()>>::Bar` found unit type `()` note: this item must have the opaque type in its signature in order to be able to register hidden types --> $DIR/in-assoc-type.rs:20:8 | LL | fn foo(&self) -> >::Bar {} | ^^^ error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.