Crates.io | wait-for-me |
lib.rs | wait-for-me |
version | 0.3.0 |
source | src |
created_at | 2020-05-04 20:31:47.892689 |
updated_at | 2023-12-21 17:04:17.512632 |
description | Async CountDownLatch |
homepage | |
repository | https://github.com/wolf4ood/wait-for-me |
max_upload_size | |
id | 237537 |
size | 68,909 |
Install from crates.io
[dependencies]
wait-for-me = "0.1"
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(())
}