mod cache;
mod constants;
mod constants_utils;
mod date_time;
mod duration;
mod error;
mod seconds_format;
mod utils;
pub use constants::{
EPOCH, NANOS_PER_DAY, NANOS_PER_HOUR, NANOS_PER_LEAP_MONTH, NANOS_PER_LEAP_YEAR,
NANOS_PER_MICRO, NANOS_PER_MILLI, NANOS_PER_MINUTE, NANOS_PER_MONTH, NANOS_PER_SEC,
NANOS_PER_YEAR, SECS_PER_DAY, SECS_PER_HOUR, SECS_PER_LEAP_YEAR, SECS_PER_MINUTE,
SECS_PER_MONTH, SECS_PER_YEAR,
};
use crate::error_info;
pub use date_time::DateTime;
pub use duration::Duration;
pub use error::Error;
pub use seconds_format::SecondsFormat;
use crate::rails::ext::syn::RailsMapErrTracer;
#[cfg(feature = "std")]
use std::time::{SystemTime, UNIX_EPOCH};
pub trait TimeNow {
type Error;
fn time_now() -> Result<Duration, Self::Error>;
}
#[cfg(feature = "std")]
impl TimeNow for SystemTime {
type Error = crate::error::tracer::DynTracerError;
fn time_now() -> Result<Duration, Self::Error> {
SystemTime::now()
.duration_since(UNIX_EPOCH)
.map(|t| Duration::from_secs(t.as_secs() as i64))
.map_dyn_tracer_err(error_info!())
}
}