What good is a queue you can't call "push" on, or a mutex you can't "lock?"
It turns out that some common API patterns are bug generators in async Rust code. In the 0.3 release series, I've taken a pass over the OS APIs in lilos (my async embedded OS ) and tried to make the whole OS strictly cancel-safe.
As a side effect, I replaced both "push" and "lock" with subtly different operations that are much harder to use incorrectly. Details in my latest post:
cliffle.com/blog/lilos-cancel-…
#rust
Matt Campbell
in reply to cliffle • • •