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
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