libsw_core/instant_impls/
coarsetime.rs

1// libsw: stopwatch library
2// copyright (C) 2022-2023 Ula Shipman <ula.hello@mailbox.org>
3// licensed under MIT OR Apache-2.0
4
5extern crate coarsetime;
6
7use ::core::time::Duration;
8
9use crate::Instant;
10
11/* TODO: coarsetime::Instant uses coarsetime::Duration but this lib uses
12 * core::time::Duration. this may create friction in the api. */
13
14impl Instant for coarsetime::Instant {
15    fn now() -> Self {
16        Self::now()
17    }
18
19    fn checked_add(&self, duration: Duration) -> Option<Self> {
20        let coarse_dur = coarsetime::Duration::from(duration);
21        coarsetime::Instant::checked_add(*self, coarse_dur)
22    }
23
24    fn checked_sub(&self, duration: Duration) -> Option<Self> {
25        let coarse_dur = coarsetime::Duration::from(duration);
26        coarsetime::Instant::checked_sub(*self, coarse_dur)
27    }
28
29    fn saturating_duration_since(&self, earlier: Self) -> Duration {
30        self.duration_since(earlier).into()
31    }
32}