#![doc = include_str!("../README.md")]
#[cfg(feature = "age")]
pub mod age;
#[cfg(feature = "test-utils")]
pub mod testing;
pub use chrono::{DateTime, Local, TimeDelta, Utc};
#[cfg(doc)]
#[cfg(feature = "test-utils")]
use crate::testing::FrozenClock;
pub trait Clock {
fn now(&self) -> DateTime<Utc>;
}
#[derive(Debug, Default)]
pub struct SystemClock;
impl Clock for SystemClock {
fn now(&self) -> DateTime<Utc> {
Utc::now()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn it_returns_the_system_time() {
let clock = SystemClock::default();
let delta = Utc::now() - clock.now();
let secs = delta.num_seconds();
assert_eq!(secs, 0);
}
}