use std::time::{Duration, Instant};
use rand::Rng;
use set_timeout::TimeoutScheduler;
lazy_static::lazy_static! {
static ref TIMEOUT_SCHEDULER: TimeoutScheduler = TimeoutScheduler::new(None);
}
#[tokio::main]
async fn main() {
for _ in 0..10 {
tokio::spawn(async move {
let start = Instant::now();
let delay = Duration::from_millis(rand::thread_rng().gen_range(100..=1000));
TIMEOUT_SCHEDULER.set_timeout(delay, async move {
println!(
"desired delay: {:?}, actual delay: {:?}",
delay,
start.elapsed()
);
})
});
}
tokio::time::sleep(Duration::from_secs(2)).await;
}