error[E0277]: the trait bound `B: Bar` is not satisfied --> $DIR/issue-90400-1.rs:22:9 | LL | move || bar.bar() | ^^^^^^^^^^^^^^^^^ the trait `Bar` is not implemented for `B` | note: required by a bound in `::foo` --> $DIR/issue-90400-1.rs:21:15 | LL | fn foo(&self, bar: B) -> Self::FooFn { | ^^^ required by this bound in `::foo` help: consider restricting type parameter `B` | LL | type FooFn = impl FnOnce(); | +++++ error: aborting due to previous error For more information about this error, try `rustc --explain E0277`.