relay_event_normalization/normalize/span/
country_subregion.rs

1//! Mapping betwwen country code and subregion code
2
3/// Subregions regions as defined by UN M49 standards, the enum value corresponds to the region code.
4/// See "Geographical regions" at <https://unstats.un.org/unsd/methodology/m49/.>.
5#[allow(missing_docs)] // We don't need to document each variant, as it can all be explained by the description
6pub enum Subregion {
7    NorthernAmerica = 21,
8    CentralAmerica = 13,
9    Caribbean = 29,
10    SouthAmerica = 5,
11    NorthernEurope = 154,
12    WesternEurope = 155,
13    SouthernEurope = 39,
14    EasternEurope = 151,
15    EasternAsia = 30,
16    SouthernAsia = 34,
17    SouthEasternAsia = 35,
18    WesternAsia = 145,
19    CentralAsia = 143,
20    NorthernAfrica = 15,
21    WesternAfrica = 11,
22    MiddleAfrica = 17,
23    EasternAfrica = 14,
24    SouthernAfrica = 18,
25    Melanesia = 54,
26    Micronesia = 57,
27    Polynesia = 61,
28    AustraliaAndNewZealand = 53,
29}
30
31impl Subregion {
32    /// Maps 2 ISO letter country codes to geoscheme regions based on the UN M.49 standard.
33    pub fn from_iso2(iso2_letter: &str) -> Option<Self> {
34        Some(match iso2_letter {
35            "AF" => Subregion::SouthernAsia,
36            "AL" => Subregion::SouthernEurope,
37            "DZ" => Subregion::NorthernAfrica,
38            "AS" => Subregion::Polynesia,
39            "AD" => Subregion::SouthernEurope,
40            "AO" => Subregion::MiddleAfrica,
41            "AI" => Subregion::Caribbean,
42            // "AQ" => Subregion::Antarctica,
43            "AG" => Subregion::Caribbean,
44            "AR" => Subregion::SouthAmerica,
45            "AM" => Subregion::WesternAsia,
46            "AW" => Subregion::Caribbean,
47            "AU" => Subregion::AustraliaAndNewZealand,
48            "AT" => Subregion::WesternEurope,
49            "AZ" => Subregion::WesternAsia,
50            "BS" => Subregion::Caribbean,
51            "BH" => Subregion::WesternAsia,
52            "BD" => Subregion::SouthernAsia,
53            "BB" => Subregion::Caribbean,
54            "BY" => Subregion::EasternEurope,
55            "BE" => Subregion::WesternEurope,
56            "BZ" => Subregion::CentralAmerica,
57            "BJ" => Subregion::WesternAfrica,
58            "BM" => Subregion::NorthernAmerica,
59            "BT" => Subregion::SouthernAsia,
60            "BO" => Subregion::SouthAmerica,
61            "BA" => Subregion::SouthernEurope,
62            "BW" => Subregion::SouthernAfrica,
63            // "BV" => Subregion::Antarctica,
64            "BR" => Subregion::SouthAmerica,
65            "IO" => Subregion::EasternAfrica,
66            "BN" => Subregion::SouthEasternAsia,
67            "BG" => Subregion::EasternEurope,
68            "BF" => Subregion::WesternAfrica,
69            "BI" => Subregion::EasternAfrica,
70            "CV" => Subregion::WesternAfrica,
71            "KH" => Subregion::SouthEasternAsia,
72            "CM" => Subregion::MiddleAfrica,
73            "CA" => Subregion::NorthernAmerica,
74            "KY" => Subregion::Caribbean,
75            "CF" => Subregion::MiddleAfrica,
76            "TD" => Subregion::MiddleAfrica,
77            "CL" => Subregion::SouthAmerica,
78            "CN" => Subregion::EasternAsia,
79            "CX" => Subregion::AustraliaAndNewZealand,
80            "CC" => Subregion::AustraliaAndNewZealand,
81            "CO" => Subregion::SouthAmerica,
82            "KM" => Subregion::EasternAfrica,
83            "CG" => Subregion::MiddleAfrica,
84            "CD" => Subregion::MiddleAfrica,
85            "CK" => Subregion::Polynesia,
86            "CR" => Subregion::CentralAmerica,
87            "CI" => Subregion::WesternAfrica,
88            "HR" => Subregion::SouthernEurope,
89            "CU" => Subregion::Caribbean,
90            "CY" => Subregion::WesternAsia,
91            "CZ" => Subregion::EasternEurope,
92            "DK" => Subregion::NorthernEurope,
93            "DJ" => Subregion::EasternAfrica,
94            "DM" => Subregion::Caribbean,
95            "DO" => Subregion::Caribbean,
96            "EC" => Subregion::SouthAmerica,
97            "EG" => Subregion::NorthernAfrica,
98            "SV" => Subregion::CentralAmerica,
99            "GQ" => Subregion::MiddleAfrica,
100            "ER" => Subregion::EasternAfrica,
101            "EE" => Subregion::NorthernEurope,
102            "SZ" => Subregion::SouthernAfrica,
103            "ET" => Subregion::EasternAfrica,
104            "FK" => Subregion::SouthAmerica,
105            "FO" => Subregion::NorthernEurope,
106            "FJ" => Subregion::Melanesia,
107            "FI" => Subregion::NorthernEurope,
108            "FR" => Subregion::WesternEurope,
109            "GF" => Subregion::SouthAmerica,
110            "PF" => Subregion::Polynesia,
111            // "TF" => Subregion::Antarctica,
112            "GA" => Subregion::MiddleAfrica,
113            "GM" => Subregion::WesternAfrica,
114            "GE" => Subregion::WesternAsia,
115            "DE" => Subregion::WesternEurope,
116            "GH" => Subregion::WesternAfrica,
117            "GI" => Subregion::SouthernEurope,
118            "GR" => Subregion::SouthernEurope,
119            "GL" => Subregion::NorthernAmerica,
120            "GD" => Subregion::Caribbean,
121            "GP" => Subregion::Caribbean,
122            "GU" => Subregion::Micronesia,
123            "GT" => Subregion::CentralAmerica,
124            "GG" => Subregion::NorthernEurope,
125            "GN" => Subregion::WesternAfrica,
126            "GW" => Subregion::WesternAfrica,
127            "GY" => Subregion::SouthAmerica,
128            "HT" => Subregion::Caribbean,
129            // "HM" => Subregion::Antarctica,
130            "VA" => Subregion::SouthernEurope,
131            "HN" => Subregion::CentralAmerica,
132            "HK" => Subregion::EasternAsia,
133            "HU" => Subregion::EasternEurope,
134            "IS" => Subregion::NorthernEurope,
135            "IN" => Subregion::SouthernAsia,
136            "ID" => Subregion::SouthEasternAsia,
137            "IR" => Subregion::SouthernAsia,
138            "IQ" => Subregion::WesternAsia,
139            "IE" => Subregion::NorthernEurope,
140            "IL" => Subregion::WesternAsia,
141            "IT" => Subregion::SouthernEurope,
142            "JM" => Subregion::Caribbean,
143            "JP" => Subregion::EasternAsia,
144            "JE" => Subregion::NorthernEurope,
145            "JO" => Subregion::WesternAsia,
146            "KZ" => Subregion::CentralAsia,
147            "KE" => Subregion::EasternAfrica,
148            "KI" => Subregion::Micronesia,
149            "KP" => Subregion::EasternAsia,
150            "KR" => Subregion::EasternAsia,
151            "KW" => Subregion::WesternAsia,
152            "KG" => Subregion::CentralAsia,
153            "LA" => Subregion::SouthEasternAsia,
154            "LV" => Subregion::NorthernEurope,
155            "LB" => Subregion::WesternAsia,
156            "LS" => Subregion::SouthernAfrica,
157            "LR" => Subregion::WesternAfrica,
158            "LY" => Subregion::NorthernAfrica,
159            "LI" => Subregion::WesternEurope,
160            "LT" => Subregion::NorthernEurope,
161            "LU" => Subregion::WesternEurope,
162            "MO" => Subregion::EasternAsia,
163            "MG" => Subregion::EasternAfrica,
164            "MW" => Subregion::EasternAfrica,
165            "MY" => Subregion::SouthEasternAsia,
166            "MV" => Subregion::SouthernAsia,
167            "ML" => Subregion::WesternAfrica,
168            "MT" => Subregion::SouthernEurope,
169            "MH" => Subregion::Micronesia,
170            "MQ" => Subregion::Caribbean,
171            "MR" => Subregion::WesternAfrica,
172            "MU" => Subregion::EasternAfrica,
173            "YT" => Subregion::EasternAfrica,
174            "MX" => Subregion::CentralAmerica,
175            "FM" => Subregion::Micronesia,
176            "MD" => Subregion::EasternEurope,
177            "MC" => Subregion::WesternEurope,
178            "MN" => Subregion::EasternAsia,
179            "ME" => Subregion::SouthernEurope,
180            "MS" => Subregion::Caribbean,
181            "MA" => Subregion::NorthernAfrica,
182            "MZ" => Subregion::EasternAfrica,
183            "MM" => Subregion::SouthEasternAsia,
184            "NA" => Subregion::SouthernAfrica,
185            "NR" => Subregion::Micronesia,
186            "NP" => Subregion::SouthernAsia,
187            "NL" => Subregion::WesternEurope,
188            "NC" => Subregion::Melanesia,
189            "NZ" => Subregion::AustraliaAndNewZealand,
190            "NI" => Subregion::CentralAmerica,
191            "NE" => Subregion::WesternAfrica,
192            "NG" => Subregion::WesternAfrica,
193            "NU" => Subregion::Polynesia,
194            "NF" => Subregion::AustraliaAndNewZealand,
195            "MK" => Subregion::SouthernEurope,
196            "MP" => Subregion::Micronesia,
197            "NO" => Subregion::NorthernEurope,
198            "OM" => Subregion::WesternAsia,
199            "PK" => Subregion::SouthernAsia,
200            "PW" => Subregion::Micronesia,
201            "PS" => Subregion::WesternAsia,
202            "PA" => Subregion::CentralAmerica,
203            "PG" => Subregion::Melanesia,
204            "PY" => Subregion::SouthAmerica,
205            "PE" => Subregion::SouthAmerica,
206            "PH" => Subregion::SouthEasternAsia,
207            "PN" => Subregion::Polynesia,
208            "PL" => Subregion::EasternEurope,
209            "PT" => Subregion::SouthernEurope,
210            "PR" => Subregion::Caribbean,
211            "QA" => Subregion::WesternAsia,
212            "RE" => Subregion::EasternAfrica,
213            "RO" => Subregion::EasternEurope,
214            "RU" => Subregion::EasternEurope,
215            "RW" => Subregion::EasternAfrica,
216            "BL" => Subregion::Caribbean,
217            "SH" => Subregion::WesternAfrica,
218            "KN" => Subregion::Caribbean,
219            "LC" => Subregion::Caribbean,
220            "MF" => Subregion::Caribbean,
221            "PM" => Subregion::NorthernAmerica,
222            "VC" => Subregion::Caribbean,
223            "WS" => Subregion::Polynesia,
224            "SM" => Subregion::SouthernEurope,
225            "ST" => Subregion::MiddleAfrica,
226            "SA" => Subregion::WesternAsia,
227            "SN" => Subregion::WesternAfrica,
228            "RS" => Subregion::SouthernEurope,
229            "SC" => Subregion::EasternAfrica,
230            "SL" => Subregion::WesternAfrica,
231            "SG" => Subregion::SouthEasternAsia,
232            "SX" => Subregion::Caribbean,
233            "SK" => Subregion::EasternEurope,
234            "SI" => Subregion::SouthernEurope,
235            "SB" => Subregion::Melanesia,
236            "SO" => Subregion::EasternAfrica,
237            "ZA" => Subregion::SouthernAfrica,
238            "SS" => Subregion::EasternAfrica,
239            "ES" => Subregion::SouthernEurope,
240            "LK" => Subregion::SouthernAsia,
241            "SD" => Subregion::NorthernAfrica,
242            "SR" => Subregion::SouthAmerica,
243            "SJ" => Subregion::NorthernEurope,
244            "SE" => Subregion::NorthernEurope,
245            "CH" => Subregion::WesternEurope,
246            "SY" => Subregion::WesternAsia,
247            "TW" => Subregion::EasternAsia,
248            "TJ" => Subregion::CentralAsia,
249            "TZ" => Subregion::EasternAfrica,
250            "TH" => Subregion::SouthEasternAsia,
251            "TL" => Subregion::SouthEasternAsia,
252            "TG" => Subregion::WesternAfrica,
253            "TK" => Subregion::Polynesia,
254            "TO" => Subregion::Polynesia,
255            "TT" => Subregion::Caribbean,
256            "TN" => Subregion::NorthernAfrica,
257            "TR" => Subregion::WesternAsia,
258            "TM" => Subregion::CentralAsia,
259            "TC" => Subregion::Caribbean,
260            "TV" => Subregion::Polynesia,
261            "UG" => Subregion::EasternAfrica,
262            "UA" => Subregion::EasternEurope,
263            "AE" => Subregion::WesternAsia,
264            "GB" => Subregion::NorthernEurope,
265            "US" => Subregion::NorthernAmerica,
266            "UY" => Subregion::SouthAmerica,
267            "UZ" => Subregion::CentralAsia,
268            "VU" => Subregion::Melanesia,
269            "VE" => Subregion::SouthAmerica,
270            "VN" => Subregion::SouthEasternAsia,
271            "VG" => Subregion::Caribbean,
272            "VI" => Subregion::Caribbean,
273            "WF" => Subregion::Polynesia,
274            "EH" => Subregion::NorthernAfrica,
275            "YE" => Subregion::WesternAsia,
276            "ZM" => Subregion::EasternAfrica,
277            "ZW" => Subregion::EasternAfrica,
278            // Additional ISO codes for territories
279            "AX" => Subregion::NorthernEurope,
280            "BQ" => Subregion::Caribbean,
281            "CW" => Subregion::Caribbean,
282            // "TF" => Subregion::Antarctica,
283            "IM" => Subregion::NorthernEurope,
284            _ => return None,
285        })
286    }
287}