4 releases

0.2.0 May 25, 2020
0.1.2 May 6, 2020
0.1.1 May 6, 2020
0.1.0 May 4, 2020

#341 in Asynchronous

30 downloads per month
Used in see-you-later

Apache-2.0

16KB
217 lines

wait-for-me

Async CountDownLatch

Install

Install from crates.io

[dependencies]
wait-for-me = "0.1"

Example

with smol

use wait_for_me::CountDownLatch;
use smol::Task;


#[smol_potat::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let latch = CountDownLatch::new(10);
    for _ in 0..10 {
        let latch1 = latch.clone();
        Task::spawn(async move {
            latch1.count_down().await;
        }).detach();
    }
    latch.wait().await;


    Ok(())
}

with timeout

use smol::{Task, Timer};
use std::time::Duration;
use wait_for_me::CountDownLatch;

#[smol_potat::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let latch = CountDownLatch::new(10);
    for _ in 0..10 {
        let latch1 = latch.clone();
        Task::spawn(async move {
            Timer::after(Duration::from_secs(3)).await;
            latch1.count_down().await;
        })
        .detach();
    }
    let result = latch.wait_for(Duration::from_secs(1)).await;

    assert_eq!(false, result);

    Ok(())
}

Dependencies

~1MB
~19K SLoC