use crate::{Error, FixedField, Numeric};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub struct Cycle<'a> {
year: Numeric<'a, 2>,
cycle: Numeric<'a, 2>,
}
impl<'a> Cycle<'a> {
pub fn year(&self) -> Result<u8, Error> {
self.year.as_u8()
}
pub fn cycle(&self) -> Result<u8, Error> {
self.cycle.as_u8()
}
}
impl<'a> FixedField<'a> for Cycle<'a> {
const LENGTH: usize = 4;
fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error> {
Ok(Self {
year: Numeric::from_bytes(&bytes[0..2])?,
cycle: Numeric::from_bytes(&bytes[2..4])?,
})
}
}