use cancellable_timer::*;
use std::io;
use std::time::Duration;
fn main() {
let callback = |status: io::Result<()>| match status {
Ok(_) => println!("Called"),
Err(ref e) if e.kind() == io::ErrorKind::Interrupted => println!("Cancelled"),
Err(e) => eprintln!("Error: {:?}", e),
};
println!("Run callback after 2s");
Timer::after(Duration::from_secs(2), callback).unwrap();
println!("Wait 4s");
std::thread::sleep(Duration::from_secs(4));
println!("Run callback after 4s");
let canceller = Timer::after(Duration::from_secs(4), callback).unwrap();
std::thread::sleep(Duration::from_secs(2));
println!("Cancel timer.");
canceller.cancel().unwrap();
std::thread::sleep(Duration::from_secs(3));
}