timeout_trait/
fake_impls.rs

1use super::{
2    TickDuration,
3    fugit::{KilohertzU32, RateExtU32},
4    prelude::*,
5};
6
7#[derive(Clone)]
8pub struct FakeTickInstant {
9    elapsed: u64,
10}
11
12impl TickInstant for FakeTickInstant {
13    #[inline]
14    fn frequency() -> KilohertzU32 {
15        1.kHz()
16    }
17
18    #[inline]
19    fn now() -> Self {
20        Self { elapsed: 0 }
21    }
22
23    #[inline]
24    fn elapsed(&mut self) -> TickDuration<Self> {
25        self.elapsed = self.elapsed.wrapping_add(1);
26        TickDuration::from_ticks(self.elapsed)
27    }
28
29    #[inline]
30    fn move_forward(&mut self, dur: &TickDuration<Self>) {
31        self.elapsed = self.elapsed.saturating_sub(dur.ticks());
32    }
33}