zugferd_code_lists/zugferd_2_3_2/
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 = ();
57 fn from_str(s: &str) -> Result<Self, Self::Err> {
58 <Self as crate::FromCode>::from_code(s).ok_or(())
59 }
60}
61
62impl crate::Code for TRANSPORT {
63 fn code(self) -> &'static str {
64 match self {
65 TRANSPORT::TransportModeNotSpecified => "0",
66 TRANSPORT::MaritimeTransport => "1",
67 TRANSPORT::RailTransport => "2",
68 TRANSPORT::RoadTransport => "3",
69 TRANSPORT::AirTransport => "4",
70 TRANSPORT::Mail => "5",
71 TRANSPORT::MultimodalTranspo => "6",
72 TRANSPORT::FixedTransportInstallation => "7",
73 TRANSPORT::InlandWaterTransport => "8",
74 TRANSPORT::TransportModeNotApplicable => "9",
75 }
76 }
77}
78
79impl crate::Description for TRANSPORT {
80 fn description(self) -> &'static str {
81 match self {
82 TRANSPORT::TransportModeNotSpecified => "Transport mode not specified",
83 TRANSPORT::MaritimeTransport => "Maritime transport",
84 TRANSPORT::RailTransport => "Rail transport",
85 TRANSPORT::RoadTransport => "Road transport",
86 TRANSPORT::AirTransport => "Air transport",
87 TRANSPORT::Mail => "Mail",
88 TRANSPORT::MultimodalTranspo => "Multimodal transpo",
89 TRANSPORT::FixedTransportInstallation => "Fixed transport installation",
90 TRANSPORT::InlandWaterTransport => "Inland water transport",
91 TRANSPORT::TransportModeNotApplicable => "Transport mode not applicable",
92 }
93 }
94}
95
96impl crate::FromCode for TRANSPORT {
97 fn from_code(code: &str) -> Option<Self>
98 where
99 Self: Sized,
100 {
101 match code {
102 "0" => Some(TRANSPORT::TransportModeNotSpecified),
103 "1" => Some(TRANSPORT::MaritimeTransport),
104 "2" => Some(TRANSPORT::RailTransport),
105 "3" => Some(TRANSPORT::RoadTransport),
106 "4" => Some(TRANSPORT::AirTransport),
107 "5" => Some(TRANSPORT::Mail),
108 "6" => Some(TRANSPORT::MultimodalTranspo),
109 "7" => Some(TRANSPORT::FixedTransportInstallation),
110 "8" => Some(TRANSPORT::InlandWaterTransport),
111 "9" => Some(TRANSPORT::TransportModeNotApplicable),
112 _ => None,
113 }
114 }
115}