use lustre_executor::prelude::*;
use std::sync::{Arc, Mutex};
use std::time::Duration;
fn main() {
let executor = Arc::new(Mutex::new(Executor::new().unwrap()));
let timer_data = executor.lock().unwrap().timer_data();
let start = std::time::Instant::now();
{
let mut exec = executor.lock().unwrap();
exec.spawn(Task::new(async move {
println!("Starting timer at {:?}", start.elapsed());
std::io::Write::flush(&mut std::io::stdout()).unwrap();
let timer = TimerFuture::new(Duration::from_millis(500), timer_data);
timer.await;
println!("Timer fired at {:?}", start.elapsed());
}));
}
executor.lock().unwrap().run();
}