1
2
3pub trait Timer {
4 fn when(&self) -> u64;
6 fn when_mut(&mut self) -> u64 {
8 self.when()
9 }
10}
11
12macro_rules! impl_primitive_timer {
13 ($ty:ident) => {
14 impl Timer for $ty {
15 #[inline(always)]
16 fn when(&self) -> u64 {
17 *self as u64
18 }
19 }
20 };
21}
22
23impl_primitive_timer!(u8);
24impl_primitive_timer!(u16);
25impl_primitive_timer!(u32);
26impl_primitive_timer!(u64);
27impl_primitive_timer!(u128);
28impl_primitive_timer!(i8);
29impl_primitive_timer!(i16);
30impl_primitive_timer!(i32);
31impl_primitive_timer!(i64);
32impl_primitive_timer!(i128);
33impl_primitive_timer!(f32);
34impl_primitive_timer!(f64);
35impl_primitive_timer!(usize);
36
37mod timer_rbtree;
38mod timer_wheel;
39mod stamp_timer;
40mod step_timer;
41
42pub use timer_wheel::TimerWheel;
43pub use timer_rbtree::TimerRBTree;
44pub use stamp_timer::StampTimer;
45pub use step_timer::StepTimer;