use crate::{Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum Datum {
ADI,
AFG,
AIN,
AMA,
ANO,
AIA,
ARF,
ARS,
ASC,
ATF,
SHB,
TRN,
ASQ,
AUA,
AUG,
PHA,
IBE,
BER,
BID,
BOO,
BUR,
CAZ,
CAI,
CAO,
CAP,
CAC,
CGE,
CHI,
CHU,
EST,
COA,
DAL,
DAN,
DID,
BAT,
GIZ,
EAS,
EUR,
FOT,
GAA,
GAN,
GEO,
GRA,
GRX,
GSE,
DOB,
HEN,
HER,
HJO,
HKD,
HTN,
IND,
INF,
ING,
INH,
IDN,
IRL,
ISG,
IST,
JOH,
KAN,
KEG,
KEA,
KUS,
LCF,
LEH,
LIB,
LUZ,
MPO,
MIK,
MCN,
MAS,
MER,
MID,
MIN,
MOL,
ASM,
NAH,
NAN,
NAP,
NAS,
NAR,
NSD,
FLO,
OEG,
OHA,
FAH,
OGB,
PAM,
PLN,
PIT,
PTB,
PTN,
POS,
PDM,
PRP,
HIT,
PUR,
PUK,
QAT,
QUO,
REU,
MOD,
RTS,
SPK,
SAE,
SAO,
SAP,
SCK,
SGM,
SRL,
CCD,
SAN,
SOA,
STO,
SYO,
TAN,
TIL,
TOY,
TRI,
TDC,
Unknown,
MVS,
VOI,
VOR,
WAK,
ENW,
WGA,
WGB,
WGC,
WGE,
YAC,
ZAN,
}
impl<'a> FixedField<'a> for Datum {
const LENGTH: usize = 3;
fn from_bytes(bytes: &[u8]) -> Result<Self, Error> {
match &bytes[0..3] {
b"ADI" => Ok(Self::ADI),
b"AFG" => Ok(Self::AFG),
b"AIN" => Ok(Self::AIN),
b"AMA" => Ok(Self::AMA),
b"ANO" => Ok(Self::ANO),
b"AIA" => Ok(Self::AIA),
b"ARF" => Ok(Self::ARF),
b"ARS" => Ok(Self::ARS),
b"ASC" => Ok(Self::ASC),
b"ATF" => Ok(Self::ATF),
b"SHB" => Ok(Self::SHB),
b"TRN" => Ok(Self::TRN),
b"ASQ" => Ok(Self::ASQ),
b"AUA" => Ok(Self::AUA),
b"AUG" => Ok(Self::AUG),
b"PHA" => Ok(Self::PHA),
b"IBE" => Ok(Self::IBE),
b"BER" => Ok(Self::BER),
b"BID" => Ok(Self::BID),
b"BOO" => Ok(Self::BOO),
b"BUR" => Ok(Self::BUR),
b"CAZ" => Ok(Self::CAZ),
b"CAI" => Ok(Self::CAI),
b"CAO" => Ok(Self::CAO),
b"CAP" => Ok(Self::CAP),
b"CAC" => Ok(Self::CAC),
b"CGE" => Ok(Self::CGE),
b"CHI" => Ok(Self::CHI),
b"CHU" => Ok(Self::CHU),
b"EST" => Ok(Self::EST),
b"COA" => Ok(Self::COA),
b"DAL" => Ok(Self::DAL),
b"DAN" => Ok(Self::DAN),
b"DID" => Ok(Self::DID),
b"BAT" => Ok(Self::BAT),
b"GIZ" => Ok(Self::GIZ),
b"EAS" => Ok(Self::EAS),
b"EUR" => Ok(Self::EUR),
b"FOT" => Ok(Self::FOT),
b"GAA" => Ok(Self::GAA),
b"GAN" => Ok(Self::GAN),
b"GEO" => Ok(Self::GEO),
b"GRA" => Ok(Self::GRA),
b"GRX" => Ok(Self::GRX),
b"GSE" => Ok(Self::GSE),
b"DOB" => Ok(Self::DOB),
b"HEN" => Ok(Self::HEN),
b"HER" => Ok(Self::HER),
b"HJO" => Ok(Self::HJO),
b"HKD" => Ok(Self::HKD),
b"HTN" => Ok(Self::HTN),
b"IND" => Ok(Self::IND),
b"INF" => Ok(Self::INF),
b"ING" => Ok(Self::ING),
b"INH" => Ok(Self::INH),
b"IDN" => Ok(Self::IDN),
b"IRL" => Ok(Self::IRL),
b"ISG" => Ok(Self::ISG),
b"IST" => Ok(Self::IST),
b"JOH" => Ok(Self::JOH),
b"KAN" => Ok(Self::KAN),
b"KEG" => Ok(Self::KEG),
b"KEA" => Ok(Self::KEA),
b"KUS" => Ok(Self::KUS),
b"LCF" => Ok(Self::LCF),
b"LEH" => Ok(Self::LEH),
b"LIB" => Ok(Self::LIB),
b"LUZ" => Ok(Self::LUZ),
b"MPO" => Ok(Self::MPO),
b"MIK" => Ok(Self::MIK),
b"MCN" => Ok(Self::MCN),
b"MAS" => Ok(Self::MAS),
b"MER" => Ok(Self::MER),
b"MID" => Ok(Self::MID),
b"MIN" => Ok(Self::MIN),
b"MOL" => Ok(Self::MOL),
b"ASM" => Ok(Self::ASM),
b"NAH" => Ok(Self::NAH),
b"NAN" => Ok(Self::NAN),
b"NAP" => Ok(Self::NAP),
b"NAS" => Ok(Self::NAS),
b"NAR" => Ok(Self::NAR),
b"NSD" => Ok(Self::NSD),
b"FLO" => Ok(Self::FLO),
b"OEG" => Ok(Self::OEG),
b"OHA" => Ok(Self::OHA),
b"FAH" => Ok(Self::FAH),
b"OGB" => Ok(Self::OGB),
b"PAM" => Ok(Self::PAM),
b"PLN" => Ok(Self::PLN),
b"PIT" => Ok(Self::PIT),
b"PTB" => Ok(Self::PTB),
b"PTN" => Ok(Self::PTN),
b"POS" => Ok(Self::POS),
b"PDM" => Ok(Self::PDM),
b"PRP" => Ok(Self::PRP),
b"HIT" => Ok(Self::HIT),
b"PUR" => Ok(Self::PUR),
b"PUK" => Ok(Self::PUK),
b"QAT" => Ok(Self::QAT),
b"QUO" => Ok(Self::QUO),
b"REU" => Ok(Self::REU),
b"MOD" => Ok(Self::MOD),
b"RTS" => Ok(Self::RTS),
b"SPK" => Ok(Self::SPK),
b"SAE" => Ok(Self::SAE),
b"SAO" => Ok(Self::SAO),
b"SAP" => Ok(Self::SAP),
b"SCK" => Ok(Self::SCK),
b"SGM" => Ok(Self::SGM),
b"SRL" => Ok(Self::SRL),
b"CCD" => Ok(Self::CCD),
b"SAN" => Ok(Self::SAN),
b"SOA" => Ok(Self::SOA),
b"STO" => Ok(Self::STO),
b"SYO" => Ok(Self::SYO),
b"TAN" => Ok(Self::TAN),
b"TIL" => Ok(Self::TIL),
b"TOY" => Ok(Self::TOY),
b"TRI" => Ok(Self::TRI),
b"TDC" => Ok(Self::TDC),
b"U " => Ok(Self::Unknown),
b"MVS" => Ok(Self::MVS),
b"VOI" => Ok(Self::VOI),
b"VOR" => Ok(Self::VOR),
b"WAK" => Ok(Self::WAK),
b"ENW" => Ok(Self::ENW),
b"WGA" => Ok(Self::WGA),
b"WGB" => Ok(Self::WGB),
b"WGC" => Ok(Self::WGC),
b"WGE" => Ok(Self::WGE),
b"YAC" => Ok(Self::YAC),
b"ZAN" => Ok(Self::ZAN),
_ => Err(Error::InvalidVariant {
field: "Datum",
bytes: Vec::from(bytes),
expected: "datum according to ARINC 424-17 attachment 2",
}),
}
}
}