mod instant;
mod system;
pub use self::{instant::*, system::*};
#[cfg(any(test, feature = "test-util"))]
pub use mock::{with_mock, TimeMock};
#[cfg(any(test, feature = "test-util"))]
mod mock {
use std::time::Duration;
use super::*;
pub fn with_mock(f: impl FnOnce(TimeMock)) {
with_system_time_mock(|system| {
with_instant_mock(|instant| {
f(TimeMock { system, instant });
});
});
}
pub struct TimeMock {
system: SystemTimeMock,
instant: InstantMock,
}
impl TimeMock {
pub fn advance(&self, duration: Duration) {
self.system.advance(duration);
self.instant.advance(duration);
}
}
}