use crate::calendar::CalendarError;
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct DayOfYear(u16);
impl DayOfYear {
pub const ONE: Self = Self(1);
pub const N365: Self = Self(365);
pub const N366: Self = Self(366);
#[inline]
pub const fn from_num(num: u16) -> Result<Self, CalendarError> {
if num < 1 || num > 366 {
return Err(CalendarError::InvalidDayOfTheYear { received: num });
}
Ok(Self(num))
}
#[inline]
pub const fn num(&self) -> u16 {
self.0
}
}
impl TryFrom<u16> for DayOfYear {
type Error = crate::Error;
#[inline]
fn try_from(from: u16) -> Result<Self, Self::Error> {
Ok(Self::from_num(from)?)
}
}