async-timeouts 0.1.1

An instrument to start async tasks after timeouts
Documentation

Async Timeouts Helper

It is a simple instrument to delay execution of an async task with the possibility to stop timer or reset it with another time value.

It is convinient to use this crate with Notify or different channels (i.e. async_channel).

Example

use std::time::Duration;
use async_timeout::Timeout;
use tokio::sync::Notify;

#[tokio::main]
async fn main() {
    let event = Arc::new(Notify::new());
    let timer = Instant::now();
    {
        let event = event.clone();
        // Let's notify our event after 3 seconds
        Timeout::set(Duration::from_secs(3), async move {
            event.notify_one();
        }).await;
    }
    event.notified().await;
    println!("{} seconds elapsed", timer.elapsed().as_secs());
}

Take a look at one more complex example.