5 unstable releases
0.3.0 | Dec 21, 2023 |
---|---|
0.2.0 | May 25, 2020 |
0.1.2 | May 6, 2020 |
0.1.1 | May 6, 2020 |
0.1.0 | May 4, 2020 |
#1344 in Asynchronous
401 downloads per month
Used in 2 crates
19KB
352 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
~1.5MB
~24K SLoC