Skip to main content

Crate events

Crate events 

Source
Expand description

Async manual-reset and auto-reset event primitives.

This crate provides async event primitives:

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 is Clone and 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 the embedded() call is unsafe to 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§

AutoResetEvent
Thread-safe async auto-reset event.
EmbeddedAutoResetEvent
Embedded-state container for AutoResetEvent.
EmbeddedAutoResetEventRef
Handle to an embedded AutoResetEvent.
EmbeddedLocalAutoResetEvent
Embedded-state container for LocalAutoResetEvent.
EmbeddedLocalAutoResetEventRef
Handle to an embedded LocalAutoResetEvent.
EmbeddedLocalManualResetEvent
Embedded-state container for LocalManualResetEvent.
EmbeddedLocalManualResetEventRef
Handle to an embedded LocalManualResetEvent.
EmbeddedManualResetEvent
Embedded-state container for ManualResetEvent.
EmbeddedManualResetEventRef
Handle to an embedded ManualResetEvent.
LocalAutoResetEvent
Single-threaded async auto-reset event.
LocalManualResetEvent
Single-threaded async manual-reset event.
ManualResetEvent
Thread-safe async manual-reset event.