[][src]Struct async_notify::Notify

pub struct Notify { /* fields omitted */ }

Notify a single task to wake up.

Notify provides a basic mechanism to notify a single task of an event. Notify itself does not carry any data. Instead, it is to be used to signal another task to perform an operation.

If notify() is called before notified().await, then the next call to notified().await will complete immediately, consuming the permit. Any subsequent calls to notified().await will wait for a new permit.

If notify() is called multiple times before notified().await, only a single permit is stored. The next call to notified().await will complete immediately, but the one after will wait for a new permit.

Examples

Basic usage.

use std::sync::Arc;
use async_notify::Notify;

#[async_std::main]
async fn main() {
    let notify = Arc::new(Notify::new());
    let notify2 = notify.clone();

    async_std::task::spawn(async move {
        notify2.notified().await;
        println!("received notification");
    });

    println!("sending notification");
    notify.notify();
}

Implementations

impl Notify[src]

Like tokio Notify, this is a async-std version Notify.

pub fn new() -> Self[src]

pub fn notify(&self)[src]

Notifies a waiting task

If a task is currently waiting, that task is notified. Otherwise, a permit is stored in this Notify value and the next call to notified().await will complete immediately consuming the permit made available by this call to notify().

At most one permit may be stored by Notify. Many sequential calls to notify will result in a single permit being stored. The next call to notified().await will complete immediately, but the one after that will wait.

Examples

use std::sync::Arc;
use async_notify::Notify;

#[async_std::main]
async fn main() {
    let notify = Arc::new(Notify::new());
    let notify2 = notify.clone();

    async_std::task::spawn(async move {
        notify2.notified().await;
        println!("received notification");
    });

    println!("sending notification");
    notify.notify();
}

pub async fn notified<'_>(&'_ self)[src]

Wait for a notification.

Each Notify value holds a single permit. If a permit is available from an earlier call to notify(), then notified().await will complete immediately, consuming that permit. Otherwise, notified().await waits for a permit to be made available by the next call to notify().

Examples

use std::sync::Arc;
use async_notify::Notify;

#[async_std::main]
async fn main() {
    let notify = Arc::new(Notify::new());
    let notify2 = notify.clone();

    async_std::task::spawn(async move {
        notify2.notified().await;
        println!("received notification");
    });

    println!("sending notification");
    notify.notify();
}

Trait Implementations

impl Debug for Notify[src]

impl Default for Notify[src]

impl Stream for Notify[src]

type Item = ()

Values yielded by the stream.

Auto Trait Implementations

impl !RefUnwindSafe for Notify

impl Send for Notify

impl Sync for Notify

impl Unpin for Notify

impl !UnwindSafe for Notify

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> StreamExt for T where
    T: Stream + ?Sized
[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.