time_clock/
lib.rs

1use std::sync::Once;
2use std::time::Instant;
3
4pub const CLOCKS_PER_NANO: u64 = 1;
5pub const CLOCKS_PER_MICRO: u64 = 1_000 * CLOCKS_PER_NANO;
6pub const CLOCKS_PER_MILLI: u64 = 1_000 * CLOCKS_PER_MICRO;
7pub const CLOCKS_PER_SEC: u64 = 1_000 * CLOCKS_PER_MILLI;
8
9static mut TIME: Option<Instant> = None;
10static INIT: Once = Once::new();
11
12pub fn clock() -> u64 {
13    unsafe {
14        INIT.call_once(|| {
15            TIME = Some(Instant::now());
16        });
17        TIME.unwrap().elapsed().as_nanos() as u64
18    }
19}