| Crates.io | wait-for-me |
| lib.rs | wait-for-me |
| version | 0.3.0 |
| created_at | 2020-05-04 20:31:47.892689+00 |
| updated_at | 2023-12-21 17:04:17.512632+00 |
| 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(())
}