Rust coroutines evaluate to opaque value types instead of handles, for comparison, so the caller gets to decide what to do with them.
Currently they're a bit unwieldy though, until naming (aliasing) their types becomes possible. The unstable documentation for that is here: https://rust-lang.github.io/impl-trait-initiative/explainer/...
(Edit: Sorry, I'd grabbed the wrong second link. Fixed.)