error[E0277]: the trait bound `{coroutine@$DIR/coroutine.rs:18:21: 18:23}: Coroutine` is not satisfied --> $DIR/coroutine.rs:18:21 | LL | needs_coroutine(|| { | _____---------------_^ | | | | | required by a bound introduced by this call LL | | LL | | LL | | LL | | yield (); LL | | }); | |_____^ the trait `Coroutine` is not implemented for `{coroutine@$DIR/coroutine.rs:18:21: 18:23}` | note: required by a bound in `needs_coroutine` --> $DIR/coroutine.rs:14:28 | LL | fn needs_coroutine(_: impl Coroutine) {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `needs_coroutine` error[E0271]: type mismatch resolving `<{coroutine@$DIR/coroutine.rs:18:21: 18:23} as Coroutine>::Yield == B` --> $DIR/coroutine.rs:18:21 | LL | needs_coroutine(|| { | _____---------------_^ | | | | | required by a bound introduced by this call LL | | LL | | LL | | LL | | yield (); LL | | }); | |_____^ types differ | note: required by a bound in `needs_coroutine` --> $DIR/coroutine.rs:14:41 | LL | fn needs_coroutine(_: impl Coroutine) {} | ^^^^^^^^^ required by this bound in `needs_coroutine` error[E0271]: type mismatch resolving `<{coroutine@$DIR/coroutine.rs:18:21: 18:23} as Coroutine>::Return == C` --> $DIR/coroutine.rs:18:21 | LL | needs_coroutine(|| { | _____---------------_^ | | | | | required by a bound introduced by this call LL | | LL | | LL | | LL | | yield (); LL | | }); | |_____^ types differ | note: required by a bound in `needs_coroutine` --> $DIR/coroutine.rs:14:52 | LL | fn needs_coroutine(_: impl Coroutine) {} | ^^^^^^^^^^ required by this bound in `needs_coroutine` error: aborting due to 3 previous errors Some errors have detailed explanations: E0271, E0277. For more information about an error, try `rustc --explain E0271`.