use crate::{Time, TimeResult};
pub trait Calendar {
type Time: CalendarTime;
fn write(&self, t: &Time) -> crate::Result<Self::Time>;
fn try_now(&self) -> crate::Result<Self::Time> {
self.write(&Time::try_now()?.any_approximate())
}
fn now(&self) -> Self::Time {
self.write(&Time::now())
.expect("Trying to write out-of-range time")
}
}
pub trait CalendarTime {
fn read(&self) -> crate::Result<TimeResult>;
}