[][src]Struct piper::Event

pub struct Event { /* fields omitted */ }

A synchronization primitive for notifying async tasks and threads.

Listeners can be registered using listen(). There are two ways of notifying listeners:

  1. notify_one() notifies one listener.
  2. notify_all() notifies all listeners.

If there are no active listeners at the time a notification is sent, it simply gets lost.

Note that notify_one() does not notify one additional listener - it only makes sure at least one listener among the active ones is notified.

There are two ways for a listener to wait for a notification:

  1. In an asynchronous manner using .await.
  2. In a blocking manner by calling wait() on it.

If a notified listener is dropped without ever waiting for a notification, dropping will notify another another active listener.

Listeners are registered and notified in the first-in first-out fashion, ensuring fairness.

Implementations

impl Event[src]

pub fn new() -> Event[src]

Creates a new Event.

pub fn listen(&self) -> EventListener[src]

Returns a guard listening for a notification.

pub fn notify_one(&self)[src]

Notifies a single active listener.

Note that this does not notify one additional listener - it only makes sure at least one listener among the active ones is notified.

pub fn notify_all(&self)[src]

Notifies all active listeners.

Trait Implementations

impl Default for Event[src]

impl Drop for Event[src]

impl Send for Event[src]

impl Sync for Event[src]

Auto Trait Implementations

impl RefUnwindSafe for Event

impl Unpin for Event

impl UnwindSafe for Event

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.