1use serde::Serialize;
2
3use crate::Country;
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]
6pub enum County {
7 BlekingeLän,
8 DalarnasLän,
9 GotlandsLän,
10 GävleborgsLän,
11 HallandsLän,
12 JämtlandsLän,
13 JönköpingsLän,
14 KalmarLän,
15 KronobergsLän,
16 NorrbottensLän,
17 SkåneLän,
18 StockholmsLän,
19 SödermanlandsLän,
20 UppsalaLän,
21 VärmlandsLän,
22 VästerbottensLän,
23 VästernorrlandsLän,
24 VästmanlandsLän,
25 VästraGötalandsLän,
26 ÖrebroLän,
27 ÖstergötlandsLän,
28}
29
30impl County {
31 pub const fn country(&self) -> Country {
32 match self {
33 County::BlekingeLän => Country::SE,
34 County::DalarnasLän => Country::SE,
35 County::GotlandsLän => Country::SE,
36 County::GävleborgsLän => Country::SE,
37 County::HallandsLän => Country::SE,
38 County::JämtlandsLän => Country::SE,
39 County::JönköpingsLän => Country::SE,
40 County::KalmarLän => Country::SE,
41 County::KronobergsLän => Country::SE,
42 County::NorrbottensLän => Country::SE,
43 County::SkåneLän => Country::SE,
44 County::StockholmsLän => Country::SE,
45 County::SödermanlandsLän => Country::SE,
46 County::UppsalaLän => Country::SE,
47 County::VärmlandsLän => Country::SE,
48 County::VästerbottensLän => Country::SE,
49 County::VästernorrlandsLän => Country::SE,
50 County::VästmanlandsLän => Country::SE,
51 County::VästraGötalandsLän => Country::SE,
52 County::ÖrebroLän => Country::SE,
53 County::ÖstergötlandsLän => Country::SE,
54 }
55 }
56
57 pub const fn as_str(&self) -> &'static str {
58 match self {
59 Self::BlekingeLän => "Blekinge län",
60 Self::DalarnasLän => "Dalarnas län",
61 Self::GotlandsLän => "Gotlands län",
62 Self::GävleborgsLän => "Gävleborgs län",
63 Self::HallandsLän => "Hallands län",
64 Self::JämtlandsLän => "Jämtlands län",
65 Self::JönköpingsLän => "Jönköpings län",
66 Self::KalmarLän => "Kalmar län",
67 Self::KronobergsLän => "Kronobergs län",
68 Self::NorrbottensLän => "Norrbottens län",
69 Self::SkåneLän => "Skåne län",
70 Self::StockholmsLän => "Stockholms län",
71 Self::SödermanlandsLän => "Södermanlands län",
72 Self::UppsalaLän => "Uppsala län",
73 Self::VärmlandsLän => "Värmlands län",
74 Self::VästerbottensLän => "Västerbottens län",
75 Self::VästernorrlandsLän => "Västernorrlands län",
76 Self::VästmanlandsLän => "Västmanlands län",
77 Self::VästraGötalandsLän => "Västra Götalands län",
78 Self::ÖrebroLän => "Örebro län",
79 Self::ÖstergötlandsLän => "Östergötlands län",
80 }
81 }
82
83 pub fn from_str(s: &str) -> Option<Self> {
84 match s.to_ascii_lowercase().as_ref() {
85 "blekinge län" => Some(Self::BlekingeLän),
86 "dalarnas län" => Some(Self::DalarnasLän),
87 "gotlands län" => Some(Self::GotlandsLän),
88 "gävleborgs län" => Some(Self::GävleborgsLän),
89 "hallands län" => Some(Self::HallandsLän),
90 "jämtlands län" => Some(Self::JämtlandsLän),
91 "jönköpings län" => Some(Self::JönköpingsLän),
92 "kalmar län" => Some(Self::KalmarLän),
93 "kronobergs län" => Some(Self::KronobergsLän),
94 "norrbottens län" => Some(Self::NorrbottensLän),
95 "skåne län" => Some(Self::SkåneLän),
96 "stockholms län" => Some(Self::StockholmsLän),
97 "södermanlands län" => Some(Self::SödermanlandsLän),
98 "uppsala län" => Some(Self::UppsalaLän),
99 "värmlands län" => Some(Self::VärmlandsLän),
100 "västerbottens län" => Some(Self::VästerbottensLän),
101 "västernorrlands län" => Some(Self::VästernorrlandsLän),
102 "västmanlands län" => Some(Self::VästmanlandsLän),
103 "västra götalands län" => Some(Self::VästraGötalandsLän),
104 "örebro län" => Some(Self::ÖrebroLän),
105 "östergötlands län" => Some(Self::ÖstergötlandsLän),
106 _ => None,
107 }
108 }
109
110 pub const fn all() -> &'static [Self] {
111 &[
112 Self::BlekingeLän,
113 Self::DalarnasLän,
114 Self::GotlandsLän,
115 Self::GävleborgsLän,
116 Self::HallandsLän,
117 Self::JämtlandsLän,
118 Self::JönköpingsLän,
119 Self::KalmarLän,
120 Self::KronobergsLän,
121 Self::NorrbottensLän,
122 Self::SkåneLän,
123 Self::StockholmsLän,
124 Self::SödermanlandsLän,
125 Self::UppsalaLän,
126 Self::VärmlandsLän,
127 Self::VästerbottensLän,
128 Self::VästernorrlandsLän,
129 Self::VästmanlandsLän,
130 Self::VästraGötalandsLän,
131 Self::ÖrebroLän,
132 Self::ÖstergötlandsLän,
133 ]
134 }
135}