[][src]Crate see_you_later

A runtime agnostic crete for scheduling async task.

Example

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(())
}

Every x 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(())
}

Structs

DelayedTask

A Future that represent a delayed task

Functions

every

Schedule a periodic task every Duration. The first task is scheduled immediately and subsequently with the given delay from the termination of the last execution Returns the scheduled task which needs to be awaited on and the cancel token.

once

Schedule a onceshot task after the Duration parameter. Returns the scheduled task which needs to be awaited on and the cancel token.