Crates.io | see-you-later |
lib.rs | see-you-later |
version | 0.1.0 |
source | src |
created_at | 2020-05-09 22:07:51.679151 |
updated_at | 2020-05-09 22:07:51.679151 |
description | Delay and schedule async task |
homepage | |
repository | https://github.com/wolf4ood/see-you-later |
max_upload_size | |
id | 239415 |
size | 42,304 |
Install from crates.io
[dependencies]
see-you-later = "0.1"
with smol oneshot schedule
use see_you_later::once;
use std::sync::{
atomic::{AtomicBool, Ordering},
Arc,
};
use std::time::Duration;
#[smol_potat::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let invoked = Arc::new(AtomicBool::new(false));
let invoked1 = invoked.clone();
let (_, task) = once(Duration::from_secs(1), || async {
invoked1.store(true, Ordering::Relaxed);
});
task.await;
assert_eq!(true, invoked.load(Ordering::Relaxed));
Ok(())
}
with smol periodic schedule.
use see_you_later::every;
use smol::{self, Task};
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);
let inner_latch = latch.clone();
let (cancel, task) = every(Duration::from_millis(100), || async {
inner_latch.count_down().await;
});
Task::spawn(async move {
latch.wait().await;
cancel.cancel().await
})
.detach();
task.await;
Ok(())
}