I'm in two minds, to be honest. New features are good and generator syntax is good, writing iterators by hand today is annoyingly finickey.
Yet, I am really sad that Rust seems to be diving head-first into the function-colouring mistakes of old though. First `?`, then `.await`, and now `yield`.
These are all the same thing, but now we have a million different incompatible concepts to account for as API designers.
To be honest, I'm quite tired of needing to add `try_`, `async_`, etc. versions of the APIs I write. It's annoying and makes me want to avoid developing APIs that encourage the use of closures, even though - in my view - statically dispatched closures are *the* killer Rust feature that almost all the other killer Rust features sit on top of. This is complexity that *should* be pushed up to the language rather than muddying every single non-trivial API that sits below it.