|
|
|
|
|
by dirbaio
1065 days 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) |
|
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.