zugferd_code_lists/zugferd_2_3_3/
transport.rs1#![allow(non_camel_case_types)]
2
3#[cfg_attr(feature = "specta", derive(specta::Type))]
4#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
5#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Clone, Copy, Hash)]
6pub enum TRANSPORT {
7 TransportModeNotSpecified,
11 MaritimeTransport,
15 RailTransport,
19 RoadTransport,
23 AirTransport,
27 Mail,
31 MultimodalTranspo,
35 FixedTransportInstallation,
39 InlandWaterTransport,
43 TransportModeNotApplicable,
47}
48
49impl std::fmt::Display for TRANSPORT {
50 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
51 write!(f, "{}", <Self as crate::Code>::code(*self))
52 }
53}
54
55impl std::str::FromStr for TRANSPORT {
56 type Err = crate::ParseError<Self>;
57 fn from_str(s: &str) -> Result<Self, Self::Err> {
58 <Self as crate::FromCode>::from_code(s)
59 .ok_or_else(|| crate::ParseError::<Self>::new(s.to_owned()))
60 }
61}
62
63impl crate::Code for TRANSPORT {
64 fn code(self) -> &'static str {
65 match self {
66 TRANSPORT::TransportModeNotSpecified => "0",
67 TRANSPORT::MaritimeTransport => "1",
68 TRANSPORT::RailTransport => "2",
69 TRANSPORT::RoadTransport => "3",
70 TRANSPORT::AirTransport => "4",
71 TRANSPORT::Mail => "5",
72 TRANSPORT::MultimodalTranspo => "6",
73 TRANSPORT::FixedTransportInstallation => "7",
74 TRANSPORT::InlandWaterTransport => "8",
75 TRANSPORT::TransportModeNotApplicable => "9",
76 }
77 }
78}
79
80impl crate::Description for TRANSPORT {
81 fn description(self) -> &'static str {
82 match self {
83 TRANSPORT::TransportModeNotSpecified => "Transport mode not specified",
84 TRANSPORT::MaritimeTransport => "Maritime transport",
85 TRANSPORT::RailTransport => "Rail transport",
86 TRANSPORT::RoadTransport => "Road transport",
87 TRANSPORT::AirTransport => "Air transport",
88 TRANSPORT::Mail => "Mail",
89 TRANSPORT::MultimodalTranspo => "Multimodal transpo",
90 TRANSPORT::FixedTransportInstallation => "Fixed transport installation",
91 TRANSPORT::InlandWaterTransport => "Inland water transport",
92 TRANSPORT::TransportModeNotApplicable => "Transport mode not applicable",
93 }
94 }
95}
96
97impl crate::FromCode for TRANSPORT {
98 fn from_code(code: &str) -> Option<Self>
99 where
100 Self: Sized,
101 {
102 match code {
103 "0" => Some(TRANSPORT::TransportModeNotSpecified),
104 "1" => Some(TRANSPORT::MaritimeTransport),
105 "2" => Some(TRANSPORT::RailTransport),
106 "3" => Some(TRANSPORT::RoadTransport),
107 "4" => Some(TRANSPORT::AirTransport),
108 "5" => Some(TRANSPORT::Mail),
109 "6" => Some(TRANSPORT::MultimodalTranspo),
110 "7" => Some(TRANSPORT::FixedTransportInstallation),
111 "8" => Some(TRANSPORT::InlandWaterTransport),
112 "9" => Some(TRANSPORT::TransportModeNotApplicable),
113 _ => None,
114 }
115 }
116}