no_std async fences and OnceLock.
Defines a core async_fence that creates one notifier and some number of
waiters.
The number of waiters can be either static (for no_alloc), or dynamic (with
the alloc feature).
All other abstractions are built on top of async_fence for that same static
and dynamic support.
- Tokio's OnceCell
- Is alloc because it uses a linked list internally.
- async-once-cell
- Is alloc because it uses a Vec internally.
- Embassy's OnceLock
- Is blocking instead of async.
- Support for smallvec
- Look into removing mutex entirely through atomic fencing