3 ms·
Rust async is a bit different than in other languages. It's more like sugar over state machines instead of sugar over callbacks. This is what makes it work nic
by dirbaio 3y ago
Rust async is a bit different than in other languages. It's more like sugar over state machines instead of sugar over callbacks.
This is what makes it work nicely on embedded. The compiler-generated state machines are structs with fixed size so they can be statically allocated. Callbacks would have to be heap-allocated and garbage-collected/refcounted.
(disclaimer: Embassy maintainer here)
- gpderetta 3y ago> It's more like sugar over state machines instead of sugar over callbacks they are equivalent [1]. There are scheme compilers (a language with have first class continuations and often heap allocated stack frames) that compile everything down to a giant C switch statement. [1] well, continuations are strictly more powerful of course, but the stackless subset needed for async/await is the same.