#![feature(coroutines, coroutine_trait, stmt_expr_attributes)] use std::marker::Unpin; use std::ops::Coroutine; pub fn foo() -> impl Coroutine<(), Yield = (), Return = ()> { #[coroutine] || { if false { yield; } } } pub fn bar(t: T) -> Box + Unpin> { Box::new( #[coroutine] || { yield t; }, ) }