error[E0277]: the trait bound `fn() -> impl T {foo}: T` is not satisfied --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:17:9 | LL | bar(foo); | --- ^^^ the trait `T` is not implemented for fn item `fn() -> impl T {foo}` | | | required by a bound introduced by this call | note: required by a bound in `bar` --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:14:16 | LL | fn bar(f: impl T) {} | ^^^^^^^ required by this bound in `bar` help: use parentheses to call this function | LL | bar(foo()); | ++ error[E0277]: the trait bound `[closure@$DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:18:19: 18:21]: T` is not satisfied --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:19:9 | LL | bar(closure); | --- ^^^^^^^ the trait `T` is not implemented for closure `[closure@$DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:18:19: 18:21]` | | | required by a bound introduced by this call | note: required by a bound in `bar` --> $DIR/fn-ctor-passed-as-arg-where-it-should-have-been-called.rs:14:16 | LL | fn bar(f: impl T) {} | ^^^^^^^ required by this bound in `bar` help: use parentheses to call this closure | LL | bar(closure()); | ++ error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`.