I’m just starting to learn Rust, and was wondering if there is a good way to do coroutines/channels. I’ve grown fond of languages based around CSP, but am not sure that maps well to idiomatic Rust.
Thanks in advance!
I’m just starting to learn Rust, and was wondering if there is a good way to do coroutines/channels. I’ve grown fond of languages based around CSP, but am not sure that maps well to idiomatic Rust.
Thanks in advance!
Wait is there a difference between coroutines and async/await? I thought they were practically the same model.
Coroutines are one means of implementing async; the way they are implemented in Rust is more like building a state machine out of the async function. It can still be mapped to coroutines, and there are probably crates that use async and macros to make coroutines usable on stable, but the effort to have a stable language feature is still ongoing, with https://lang-team.rust-lang.org/design_notes/general_coroutines.html giving the overview.
Someone please correct me because I’m fairly sure I’m not entirely correct here, but IIRC from the ‘Programming Lua’ book, (symmetric) coroutines allow you to pass data back into the routine at the
await
point. Or, in Lua parlance,coroutine.resume()
can take arguments.