Expand description
Async manual-reset and auto-reset event primitives.
This crate provides async event primitives:
- Manual-reset events (
ManualResetEvent,LocalManualResetEvent) — a gate that, once set, releases all current and future awaiters until explicitly reset viareset(). - Auto-reset events (
AutoResetEvent,LocalAutoResetEvent) — a signal that releases at most one awaiter perset()call, automatically consuming the signal when an awaiter is released.
Each family comes in a thread-safe variant (Send + Sync) and a
single-threaded Local variant for improved efficiency when thread safety
is not required.
§Boxed vs embedded storage
Every event type can be created in two ways:
boxed()— the event manages its own storage. Simple to use: the returned handle isCloneand can be shared freely. Best for most use cases.embedded()— borrows caller-provided storage (Embedded*types) instead of allocating. This eliminates one allocation per event, which matters when events are created on a hot path or embedded inside other data structures. The caller must ensure the storage outlives all handles and wait futures, and theembedded()call isunsafeto reflect this contract.
Events are lightweight cloneable handles. All clones from the same
boxed() or
embedded() origin share the same
underlying state.
§Manual-reset example
use events::ManualResetEvent;
#[tokio::main]
async fn main() {
let event = ManualResetEvent::boxed();
let setter = event.clone();
// Producer opens the gate from a background task.
tokio::spawn(async move {
setter.set();
});
// Consumer waits for the gate to open.
event.wait().await;
// The gate stays open — it must be explicitly closed.
assert!(event.try_wait());
}§Auto-reset example
use events::AutoResetEvent;
#[tokio::main]
async fn main() {
let event = AutoResetEvent::boxed();
let setter = event.clone();
// Producer signals from a background task.
tokio::spawn(async move {
setter.set();
});
// Consumer waits for the signal.
event.wait().await;
// Signal was consumed.
assert!(!event.try_wait());
}Modules§
- futures
- Future types returned by event
wait()methods.
Structs§
- Auto
Reset Event - Thread-safe async auto-reset event.
- Embedded
Auto Reset Event - Embedded-state container for
AutoResetEvent. - Embedded
Auto Reset Event Ref - Handle to an embedded
AutoResetEvent. - Embedded
Local Auto Reset Event - Embedded-state container for
LocalAutoResetEvent. - Embedded
Local Auto Reset Event Ref - Handle to an embedded
LocalAutoResetEvent. - Embedded
Local Manual Reset Event - Embedded-state container for
LocalManualResetEvent. - Embedded
Local Manual Reset Event Ref - Handle to an embedded
LocalManualResetEvent. - Embedded
Manual Reset Event - Embedded-state container for
ManualResetEvent. - Embedded
Manual Reset Event Ref - Handle to an embedded
ManualResetEvent. - Local
Auto Reset Event - Single-threaded async auto-reset event.
- Local
Manual Reset Event - Single-threaded async manual-reset event.
- Manual
Reset Event - Thread-safe async manual-reset event.