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