grid_tariffs/
county.rs

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}