1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use std::str::FromStr;
use crate::error::Error;
#[derive(Eq, PartialEq, Debug)]
pub enum Category {
A,
B,
C,
CTR,
D,
Danger,
E,
F,
FIR,
G,
Gliding,
Other,
Prohibited,
Restricted,
RMZ,
TMA,
TMZ,
UIR,
Wave,
}
impl FromStr for Category {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"A" => Ok(Category::A),
"B" => Ok(Category::B),
"C" => Ok(Category::C),
"CTR" => Ok(Category::CTR),
"D" => Ok(Category::D),
"DANGER" => Ok(Category::Danger),
"E" => Ok(Category::E),
"F" => Ok(Category::F),
"FIR" => Ok(Category::FIR),
"G" => Ok(Category::G),
"GLIDING" => Ok(Category::Gliding),
"OTH" => Ok(Category::Other),
"PROHIBITED" => Ok(Category::Prohibited),
"RESTRICTED" => Ok(Category::Restricted),
"RMZ" => Ok(Category::RMZ),
"TMA" => Ok(Category::TMA),
"TMZ" => Ok(Category::TMZ),
"UIR" => Ok(Category::UIR),
"WAVE" => Ok(Category::Wave),
_ => Err(Error::UnknownCategory(s.to_string())),
}
}
}