[go: up one dir, main page]

tokio-timer 0.1.1

Timer facilities for Tokio
Documentation
use std::time::{Duration, Instant};

pub struct Elapsed {
    duration: Duration,
}

const TOLERANCE_MS: u64 = 20;

pub fn time<F: FnOnce()>(f: F) -> Elapsed {
    let now = Instant::now();

    f();

    Elapsed { duration: now.elapsed() }
}

impl Elapsed {
    pub fn assert_is_about(&self, dur: Duration) {
        let tolerance = Duration::from_millis(TOLERANCE_MS);

        if self.duration > dur {
            assert!(self.duration - dur <= tolerance, "expect={:?}; actual={:?}", dur, self.duration);
        } else {
            assert!(dur - self.duration <= tolerance, "expect={:?}; actual={:?}", dur, self.duration);
        }
    }
}