https://github.com/embassy-rs/embassy/pull/2969 appears to have broken direct `publish_immediate()` on `pubsub::Channel`, as it functionally made `PubSubBehavior` private and didn't delegate this method to the new (private) `SealedPubSubBehavior`. This change moves `publish_immediate`, `capacity`, and `is_full` from `SealedPubSubBehavior` to `PubSubBehavior` in order to restore them to `pub` visibility.
embassy-sync
An Embassy project.
Synchronization primitives and data structures with async support:
- Channel- A Multiple Producer Multiple Consumer (MPMC) channel. Each message is only received by a single consumer.
- PriorityChannel- A Multiple Producer Multiple Consumer (MPMC) channel. Each message is only received by a single consumer. Higher priority items are shifted to the front of the channel.
- PubSubChannel- A broadcast channel (publish-subscribe) channel. Each message is received by all consumers.
- Signal- Signalling latest value to a single consumer.
- Mutex- Mutex for synchronizing state between asynchronous tasks.
- Pipe- Byte stream implementing- embedded_iotraits.
- WakerRegistration- Utility to register and wake a- Waker.
- AtomicWaker- A variant of- WakerRegistrationaccessible using a non-mut API.
- MultiWakerRegistration- Utility registering and waking multiple- Waker's.
- LazyLock- A value which is initialized on the first access
Interoperability
Futures from this crate can run on any executor.