An implementation of timer uses time-wheel algorithm
1 ```rust use std::time::{Duration, SystemTime}; use time_wheel::FrontEnd;
fn main() { let mut fe = FrontEnd::new(Duration::from_millis(32), 60, 4);
let time0 = SystemTime::now();
let timer_id = fe.put_timer(Duration::from_millis(1500));
println!("timer_id = {}", timer_id);
let timer = fe.receiver.recv().unwrap();
println!("Trigger {:?}", timer);
println!("cost {:?}", time0.elapsed().unwrap());
}
output
text
timer_id = 1
Trigger Timer(1, 1628603696.593087s)
cost 1.507511s
2 ```rust use std::time::{Duration}; use timewheel::{FrontEnd, unixnow_ms};
fn integerafterfunc() {
let mut fe = FrontEnd::new(Duration::frommillis(32), 60, 4);
fe.afterfunc(Duration::frommillis(100), |t| {
println!(
" error={:?} func trigger -> {:?}",
unixnowms() - t.when,
t
);
});
sleep(Duration::fromsecs(1));
}
output
text
error=32.338ms func trigger -> Timer(1, 1628646155.685307s)
```