error[E0277]: the trait bound `{coroutine@$DIR/coroutine.rs:20:9: 20:11}: Coroutine` is not satisfied --> $DIR/coroutine.rs:20:9 | LL | needs_coroutine( | --------------- required by a bound introduced by this call LL | #[coroutine] LL | / || { LL | | LL | | LL | | LL | | yield (); LL | | }, | |_________^ the trait `Coroutine` is not implemented for `{coroutine@$DIR/coroutine.rs:20:9: 20:11}` | 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:20:9: 20:11} as Coroutine>::Yield == B` --> $DIR/coroutine.rs:20:9 | LL | needs_coroutine( | --------------- required by a bound introduced by this call LL | #[coroutine] LL | / || { 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:20:9: 20:11} as Coroutine>::Return == C` --> $DIR/coroutine.rs:20:9 | LL | needs_coroutine( | --------------- required by a bound introduced by this call LL | #[coroutine] LL | / || { 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`.