use crate::{Alphanumeric, Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum CustArea<'a> {
Blank,
Customer(Alphanumeric<'a, 3>),
PreferredRoute,
AFR,
CAN,
EEU,
EUR,
LAM,
MES,
PAC,
SAM,
SPA,
USA,
}
impl<'a> FixedField<'a> for CustArea<'a> {
const LENGTH: usize = 3;
fn from_bytes(bytes: &'a [u8]) -> Result<Self, Error> {
Ok(match &bytes[0..3] {
b"AFR" => Self::AFR,
b"CAN" => Self::CAN,
b"EEU" => Self::EEU,
b"EUR" => Self::EUR,
b"LAM" => Self::LAM,
b"MES" => Self::MES,
b"PAC" => Self::PAC,
b"SAM" => Self::SAM,
b"SPA" => Self::SPA,
b"USA" => Self::USA,
b"PDR" => Self::PreferredRoute,
b" " => Self::Blank,
code => Self::Customer(Alphanumeric::from_bytes(code)?),
})
}
}