use crate::calendar::{CalendarError, Date};
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct CeDays(i32);
impl CeDays {
pub const MAX: Self = Self(Date::MAX.ce_days());
pub const MIN: Self = Self(Date::MIN.ce_days());
#[inline]
pub const fn from_num(num: i32) -> Result<Self, CalendarError> {
if num < Date::MIN.ce_days() || num > Date::MAX.ce_days() {
return Err(CalendarError::InvalidCeDays { received: num });
}
Ok(Self(num))
}
#[inline]
pub const fn num(&self) -> i32 {
self.0
}
}
impl TryFrom<i32> for CeDays {
type Error = crate::Error;
#[inline]
fn try_from(from: i32) -> Result<Self, Self::Error> {
Ok(Self::from_num(from)?)
}
}