use core::{
ops::AddAssign,
time::Duration,
};
use super::{NowSource, TemporalSample};
#[derive(Debug, Default, Copy, Clone)]
pub struct FakeNowSource {
pub now: Duration,
}
impl NowSource for FakeNowSource {
type Instant = Duration;
fn now(&mut self) -> Duration {
self.now
}
}
impl AddAssign<Duration> for FakeNowSource {
fn add_assign(&mut self, rhs: Duration) {
self.now += rhs
}
}
impl TemporalSample for Duration {
fn time_since(&self, origin: &Duration) -> Option<Duration> {
self.checked_sub(*origin)
}
fn advanced_by(&self, amount: Duration) -> Duration {
*self + amount
}
}