1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
use std::time::Instant;

pub fn time<T>(label: &str, body: impl FnOnce() -> T) -> T {
    let start = Instant::now();
    let result = body();
    log::info!("{} duration={}ms", label, start.elapsed().as_millis());
    result
}

#[cfg(test)]
mod test {
    use super::*;

    #[test]
    fn test_time() {
        let result = time("test_time", || 10_i32.pow(2));
        assert_eq!(result, 100);
    }
}