cancellable-timer 0.1.0

A timer that can be interrupted.
Documentation
use cancellable_timer::*;
use std::io;
use std::time::Duration;

fn main() {
    let (mut timer, canceller) = Timer::new2().unwrap();

    println!("Wait 2s, uninterrupted.");
    let r = timer.sleep(Duration::from_secs(2));
    println!("Done: {:?}", r);

    println!("Wait 2s, cancelled at once.");
    canceller.cancel().unwrap();
    let r = timer.sleep(Duration::from_secs(2));
    println!("Done {:?}", r);

    println!("Wait 2s, not cancelled.");
    let r = timer.sleep(Duration::from_secs(2));
    println!("Done {:?}", r);

    println!("Wait 10s, cancel after 2s");
    let canceller2 = canceller.clone();
    std::thread::spawn(move || {
        std::thread::sleep(Duration::from_secs(2));
        canceller2.cancel().unwrap();
    });
    match timer.sleep(Duration::from_secs(10)) {
        Err(ref e) if e.kind() == io::ErrorKind::Interrupted => println!("Cancelled"),
        x => panic!("{:?}", x),
    };
}