Skip to main content

opening_hours/localization/country/
generated.rs

1// Generated by scripts/generate-holidays.py
2
3use std::fmt::Display;
4use std::str::FromStr;
5
6use super::UnknownCountryCode;
7
8/// An enum for selecting a country.
9///
10/// ```
11/// use opening_hours::localization::Country;
12///
13/// let country: Country = "FR".parse().unwrap();
14/// assert_eq!(country, Country::FR);
15/// ```
16#[derive(Copy, Clone, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
17pub enum Country {
18    /// Andorra
19    AD,
20    /// Albania
21    AL,
22    /// Armenia
23    AM,
24    /// Argentina
25    AR,
26    /// Austria
27    AT,
28    /// Australia
29    AU,
30    /// Åland Islands
31    AX,
32    /// Bosnia and Herzegovina
33    BA,
34    /// Barbados
35    BB,
36    /// Belgium
37    BE,
38    /// Bulgaria
39    BG,
40    /// Benin
41    BJ,
42    /// Bolivia
43    BO,
44    /// Brazil
45    BR,
46    /// Bahamas
47    BS,
48    /// Botswana
49    BW,
50    /// Belarus
51    BY,
52    /// Belize
53    BZ,
54    /// Canada
55    CA,
56    /// DR Congo
57    CD,
58    /// Congo
59    CG,
60    /// Switzerland
61    CH,
62    /// Chile
63    CL,
64    /// China
65    CN,
66    /// Colombia
67    CO,
68    /// Costa Rica
69    CR,
70    /// Cuba
71    CU,
72    /// Cyprus
73    CY,
74    /// Czechia
75    CZ,
76    /// Germany
77    DE,
78    /// Denmark
79    DK,
80    /// Dominican Republic
81    DO,
82    /// Ecuador
83    EC,
84    /// Estonia
85    EE,
86    /// Egypt
87    EG,
88    /// Spain
89    ES,
90    /// Finland
91    FI,
92    /// Faroe Islands
93    FO,
94    /// France
95    FR,
96    /// Gabon
97    GA,
98    /// United Kingdom
99    GB,
100    /// Grenada
101    GD,
102    /// Georgia
103    GE,
104    /// Guernsey
105    GG,
106    /// Ghana
107    GH,
108    /// Gibraltar
109    GI,
110    /// Greenland
111    GL,
112    /// Gambia
113    GM,
114    /// Greece
115    GR,
116    /// Guatemala
117    GT,
118    /// Guyana
119    GY,
120    /// Hong Kong
121    HK,
122    /// Honduras
123    HN,
124    /// Croatia
125    HR,
126    /// Haiti
127    HT,
128    /// Hungary
129    HU,
130    /// Indonesia
131    ID,
132    /// Ireland
133    IE,
134    /// Isle of Man
135    IM,
136    /// Iceland
137    IS,
138    /// Italy
139    IT,
140    /// Jersey
141    JE,
142    /// Jamaica
143    JM,
144    /// Japan
145    JP,
146    /// Kenya
147    KE,
148    /// South Korea
149    KR,
150    /// Kazakhstan
151    KZ,
152    /// Liechtenstein
153    LI,
154    /// Lesotho
155    LS,
156    /// Lithuania
157    LT,
158    /// Luxembourg
159    LU,
160    /// Latvia
161    LV,
162    /// Morocco
163    MA,
164    /// Monaco
165    MC,
166    /// Moldova
167    MD,
168    /// Montenegro
169    ME,
170    /// Madagascar
171    MG,
172    /// North Macedonia
173    MK,
174    /// Mongolia
175    MN,
176    /// Montserrat
177    MS,
178    /// Malta
179    MT,
180    /// Mexico
181    MX,
182    /// Mozambique
183    MZ,
184    /// Namibia
185    NA,
186    /// Niger
187    NE,
188    /// Nigeria
189    NG,
190    /// Nicaragua
191    NI,
192    /// Netherlands
193    NL,
194    /// Norway
195    NO,
196    /// New Zealand
197    NZ,
198    /// Panama
199    PA,
200    /// Peru
201    PE,
202    /// Papua New Guinea
203    PG,
204    /// Philippines
205    PH,
206    /// Poland
207    PL,
208    /// Puerto Rico
209    PR,
210    /// Portugal
211    PT,
212    /// Paraguay
213    PY,
214    /// Romania
215    RO,
216    /// Serbia
217    RS,
218    /// Russia
219    RU,
220    /// Seychelles
221    SC,
222    /// Sweden
223    SE,
224    /// Singapore
225    SG,
226    /// Slovenia
227    SI,
228    /// Svalbard and Jan Mayen
229    SJ,
230    /// Slovakia
231    SK,
232    /// San Marino
233    SM,
234    /// Suriname
235    SR,
236    /// El Salvador
237    SV,
238    /// Tunisia
239    TN,
240    /// Türkiye
241    TR,
242    /// Ukraine
243    UA,
244    /// United States
245    US,
246    /// Uruguay
247    UY,
248    /// Vatican City
249    VA,
250    /// Venezuela
251    VE,
252    /// Vietnam
253    VN,
254    /// South Africa
255    ZA,
256    /// Zimbabwe
257    ZW,
258}
259
260impl Country {
261    pub const ALL: [Self; 120] = [
262        Self::AD,
263        Self::AL,
264        Self::AM,
265        Self::AR,
266        Self::AT,
267        Self::AU,
268        Self::AX,
269        Self::BA,
270        Self::BB,
271        Self::BE,
272        Self::BG,
273        Self::BJ,
274        Self::BO,
275        Self::BR,
276        Self::BS,
277        Self::BW,
278        Self::BY,
279        Self::BZ,
280        Self::CA,
281        Self::CD,
282        Self::CG,
283        Self::CH,
284        Self::CL,
285        Self::CN,
286        Self::CO,
287        Self::CR,
288        Self::CU,
289        Self::CY,
290        Self::CZ,
291        Self::DE,
292        Self::DK,
293        Self::DO,
294        Self::EC,
295        Self::EE,
296        Self::EG,
297        Self::ES,
298        Self::FI,
299        Self::FO,
300        Self::FR,
301        Self::GA,
302        Self::GB,
303        Self::GD,
304        Self::GE,
305        Self::GG,
306        Self::GH,
307        Self::GI,
308        Self::GL,
309        Self::GM,
310        Self::GR,
311        Self::GT,
312        Self::GY,
313        Self::HK,
314        Self::HN,
315        Self::HR,
316        Self::HT,
317        Self::HU,
318        Self::ID,
319        Self::IE,
320        Self::IM,
321        Self::IS,
322        Self::IT,
323        Self::JE,
324        Self::JM,
325        Self::JP,
326        Self::KE,
327        Self::KR,
328        Self::KZ,
329        Self::LI,
330        Self::LS,
331        Self::LT,
332        Self::LU,
333        Self::LV,
334        Self::MA,
335        Self::MC,
336        Self::MD,
337        Self::ME,
338        Self::MG,
339        Self::MK,
340        Self::MN,
341        Self::MS,
342        Self::MT,
343        Self::MX,
344        Self::MZ,
345        Self::NA,
346        Self::NE,
347        Self::NG,
348        Self::NI,
349        Self::NL,
350        Self::NO,
351        Self::NZ,
352        Self::PA,
353        Self::PE,
354        Self::PG,
355        Self::PH,
356        Self::PL,
357        Self::PR,
358        Self::PT,
359        Self::PY,
360        Self::RO,
361        Self::RS,
362        Self::RU,
363        Self::SC,
364        Self::SE,
365        Self::SG,
366        Self::SI,
367        Self::SJ,
368        Self::SK,
369        Self::SM,
370        Self::SR,
371        Self::SV,
372        Self::TN,
373        Self::TR,
374        Self::UA,
375        Self::US,
376        Self::UY,
377        Self::VA,
378        Self::VE,
379        Self::VN,
380        Self::ZA,
381        Self::ZW,
382    ];
383
384    /// Get the country's full name.
385    ///
386    /// ```
387    /// use opening_hours::localization::Country;
388    ///
389    /// assert_eq!(Country::FR.name(), "France");
390    /// ```
391    pub fn name(self) -> &'static str {
392        match self {
393            Self::AD => "Andorra",
394            Self::AL => "Albania",
395            Self::AM => "Armenia",
396            Self::AR => "Argentina",
397            Self::AT => "Austria",
398            Self::AU => "Australia",
399            Self::AX => "Åland Islands",
400            Self::BA => "Bosnia and Herzegovina",
401            Self::BB => "Barbados",
402            Self::BE => "Belgium",
403            Self::BG => "Bulgaria",
404            Self::BJ => "Benin",
405            Self::BO => "Bolivia",
406            Self::BR => "Brazil",
407            Self::BS => "Bahamas",
408            Self::BW => "Botswana",
409            Self::BY => "Belarus",
410            Self::BZ => "Belize",
411            Self::CA => "Canada",
412            Self::CD => "DR Congo",
413            Self::CG => "Congo",
414            Self::CH => "Switzerland",
415            Self::CL => "Chile",
416            Self::CN => "China",
417            Self::CO => "Colombia",
418            Self::CR => "Costa Rica",
419            Self::CU => "Cuba",
420            Self::CY => "Cyprus",
421            Self::CZ => "Czechia",
422            Self::DE => "Germany",
423            Self::DK => "Denmark",
424            Self::DO => "Dominican Republic",
425            Self::EC => "Ecuador",
426            Self::EE => "Estonia",
427            Self::EG => "Egypt",
428            Self::ES => "Spain",
429            Self::FI => "Finland",
430            Self::FO => "Faroe Islands",
431            Self::FR => "France",
432            Self::GA => "Gabon",
433            Self::GB => "United Kingdom",
434            Self::GD => "Grenada",
435            Self::GE => "Georgia",
436            Self::GG => "Guernsey",
437            Self::GH => "Ghana",
438            Self::GI => "Gibraltar",
439            Self::GL => "Greenland",
440            Self::GM => "Gambia",
441            Self::GR => "Greece",
442            Self::GT => "Guatemala",
443            Self::GY => "Guyana",
444            Self::HK => "Hong Kong",
445            Self::HN => "Honduras",
446            Self::HR => "Croatia",
447            Self::HT => "Haiti",
448            Self::HU => "Hungary",
449            Self::ID => "Indonesia",
450            Self::IE => "Ireland",
451            Self::IM => "Isle of Man",
452            Self::IS => "Iceland",
453            Self::IT => "Italy",
454            Self::JE => "Jersey",
455            Self::JM => "Jamaica",
456            Self::JP => "Japan",
457            Self::KE => "Kenya",
458            Self::KR => "South Korea",
459            Self::KZ => "Kazakhstan",
460            Self::LI => "Liechtenstein",
461            Self::LS => "Lesotho",
462            Self::LT => "Lithuania",
463            Self::LU => "Luxembourg",
464            Self::LV => "Latvia",
465            Self::MA => "Morocco",
466            Self::MC => "Monaco",
467            Self::MD => "Moldova",
468            Self::ME => "Montenegro",
469            Self::MG => "Madagascar",
470            Self::MK => "North Macedonia",
471            Self::MN => "Mongolia",
472            Self::MS => "Montserrat",
473            Self::MT => "Malta",
474            Self::MX => "Mexico",
475            Self::MZ => "Mozambique",
476            Self::NA => "Namibia",
477            Self::NE => "Niger",
478            Self::NG => "Nigeria",
479            Self::NI => "Nicaragua",
480            Self::NL => "Netherlands",
481            Self::NO => "Norway",
482            Self::NZ => "New Zealand",
483            Self::PA => "Panama",
484            Self::PE => "Peru",
485            Self::PG => "Papua New Guinea",
486            Self::PH => "Philippines",
487            Self::PL => "Poland",
488            Self::PR => "Puerto Rico",
489            Self::PT => "Portugal",
490            Self::PY => "Paraguay",
491            Self::RO => "Romania",
492            Self::RS => "Serbia",
493            Self::RU => "Russia",
494            Self::SC => "Seychelles",
495            Self::SE => "Sweden",
496            Self::SG => "Singapore",
497            Self::SI => "Slovenia",
498            Self::SJ => "Svalbard and Jan Mayen",
499            Self::SK => "Slovakia",
500            Self::SM => "San Marino",
501            Self::SR => "Suriname",
502            Self::SV => "El Salvador",
503            Self::TN => "Tunisia",
504            Self::TR => "Türkiye",
505            Self::UA => "Ukraine",
506            Self::US => "United States",
507            Self::UY => "Uruguay",
508            Self::VA => "Vatican City",
509            Self::VE => "Venezuela",
510            Self::VN => "Vietnam",
511            Self::ZA => "South Africa",
512            Self::ZW => "Zimbabwe",
513        }
514    }
515
516    /// Get the country's iso code.
517    ///
518    /// ```
519    /// use opening_hours::localization::Country;
520    ///
521    /// assert_eq!(Country::FR.iso_code(), "FR");
522    /// ```
523    pub fn iso_code(self) -> &'static str {
524        match self {
525            Self::AD => "AD",
526            Self::AL => "AL",
527            Self::AM => "AM",
528            Self::AR => "AR",
529            Self::AT => "AT",
530            Self::AU => "AU",
531            Self::AX => "AX",
532            Self::BA => "BA",
533            Self::BB => "BB",
534            Self::BE => "BE",
535            Self::BG => "BG",
536            Self::BJ => "BJ",
537            Self::BO => "BO",
538            Self::BR => "BR",
539            Self::BS => "BS",
540            Self::BW => "BW",
541            Self::BY => "BY",
542            Self::BZ => "BZ",
543            Self::CA => "CA",
544            Self::CD => "CD",
545            Self::CG => "CG",
546            Self::CH => "CH",
547            Self::CL => "CL",
548            Self::CN => "CN",
549            Self::CO => "CO",
550            Self::CR => "CR",
551            Self::CU => "CU",
552            Self::CY => "CY",
553            Self::CZ => "CZ",
554            Self::DE => "DE",
555            Self::DK => "DK",
556            Self::DO => "DO",
557            Self::EC => "EC",
558            Self::EE => "EE",
559            Self::EG => "EG",
560            Self::ES => "ES",
561            Self::FI => "FI",
562            Self::FO => "FO",
563            Self::FR => "FR",
564            Self::GA => "GA",
565            Self::GB => "GB",
566            Self::GD => "GD",
567            Self::GE => "GE",
568            Self::GG => "GG",
569            Self::GH => "GH",
570            Self::GI => "GI",
571            Self::GL => "GL",
572            Self::GM => "GM",
573            Self::GR => "GR",
574            Self::GT => "GT",
575            Self::GY => "GY",
576            Self::HK => "HK",
577            Self::HN => "HN",
578            Self::HR => "HR",
579            Self::HT => "HT",
580            Self::HU => "HU",
581            Self::ID => "ID",
582            Self::IE => "IE",
583            Self::IM => "IM",
584            Self::IS => "IS",
585            Self::IT => "IT",
586            Self::JE => "JE",
587            Self::JM => "JM",
588            Self::JP => "JP",
589            Self::KE => "KE",
590            Self::KR => "KR",
591            Self::KZ => "KZ",
592            Self::LI => "LI",
593            Self::LS => "LS",
594            Self::LT => "LT",
595            Self::LU => "LU",
596            Self::LV => "LV",
597            Self::MA => "MA",
598            Self::MC => "MC",
599            Self::MD => "MD",
600            Self::ME => "ME",
601            Self::MG => "MG",
602            Self::MK => "MK",
603            Self::MN => "MN",
604            Self::MS => "MS",
605            Self::MT => "MT",
606            Self::MX => "MX",
607            Self::MZ => "MZ",
608            Self::NA => "NA",
609            Self::NE => "NE",
610            Self::NG => "NG",
611            Self::NI => "NI",
612            Self::NL => "NL",
613            Self::NO => "NO",
614            Self::NZ => "NZ",
615            Self::PA => "PA",
616            Self::PE => "PE",
617            Self::PG => "PG",
618            Self::PH => "PH",
619            Self::PL => "PL",
620            Self::PR => "PR",
621            Self::PT => "PT",
622            Self::PY => "PY",
623            Self::RO => "RO",
624            Self::RS => "RS",
625            Self::RU => "RU",
626            Self::SC => "SC",
627            Self::SE => "SE",
628            Self::SG => "SG",
629            Self::SI => "SI",
630            Self::SJ => "SJ",
631            Self::SK => "SK",
632            Self::SM => "SM",
633            Self::SR => "SR",
634            Self::SV => "SV",
635            Self::TN => "TN",
636            Self::TR => "TR",
637            Self::UA => "UA",
638            Self::US => "US",
639            Self::UY => "UY",
640            Self::VA => "VA",
641            Self::VE => "VE",
642            Self::VN => "VN",
643            Self::ZA => "ZA",
644            Self::ZW => "ZW",
645        }
646    }
647}
648
649impl Display for Country {
650    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
651        write!(f, "{}", self.name())
652    }
653}
654
655impl FromStr for Country {
656    type Err = UnknownCountryCode;
657
658    fn from_str(s: &str) -> Result<Self, Self::Err> {
659        match s {
660            "AD" => Ok(Self::AD),
661            "AL" => Ok(Self::AL),
662            "AM" => Ok(Self::AM),
663            "AR" => Ok(Self::AR),
664            "AT" => Ok(Self::AT),
665            "AU" => Ok(Self::AU),
666            "AX" => Ok(Self::AX),
667            "BA" => Ok(Self::BA),
668            "BB" => Ok(Self::BB),
669            "BE" => Ok(Self::BE),
670            "BG" => Ok(Self::BG),
671            "BJ" => Ok(Self::BJ),
672            "BO" => Ok(Self::BO),
673            "BR" => Ok(Self::BR),
674            "BS" => Ok(Self::BS),
675            "BW" => Ok(Self::BW),
676            "BY" => Ok(Self::BY),
677            "BZ" => Ok(Self::BZ),
678            "CA" => Ok(Self::CA),
679            "CD" => Ok(Self::CD),
680            "CG" => Ok(Self::CG),
681            "CH" => Ok(Self::CH),
682            "CL" => Ok(Self::CL),
683            "CN" => Ok(Self::CN),
684            "CO" => Ok(Self::CO),
685            "CR" => Ok(Self::CR),
686            "CU" => Ok(Self::CU),
687            "CY" => Ok(Self::CY),
688            "CZ" => Ok(Self::CZ),
689            "DE" => Ok(Self::DE),
690            "DK" => Ok(Self::DK),
691            "DO" => Ok(Self::DO),
692            "EC" => Ok(Self::EC),
693            "EE" => Ok(Self::EE),
694            "EG" => Ok(Self::EG),
695            "ES" => Ok(Self::ES),
696            "FI" => Ok(Self::FI),
697            "FO" => Ok(Self::FO),
698            "FR" => Ok(Self::FR),
699            "GA" => Ok(Self::GA),
700            "GB" => Ok(Self::GB),
701            "GD" => Ok(Self::GD),
702            "GE" => Ok(Self::GE),
703            "GG" => Ok(Self::GG),
704            "GH" => Ok(Self::GH),
705            "GI" => Ok(Self::GI),
706            "GL" => Ok(Self::GL),
707            "GM" => Ok(Self::GM),
708            "GR" => Ok(Self::GR),
709            "GT" => Ok(Self::GT),
710            "GY" => Ok(Self::GY),
711            "HK" => Ok(Self::HK),
712            "HN" => Ok(Self::HN),
713            "HR" => Ok(Self::HR),
714            "HT" => Ok(Self::HT),
715            "HU" => Ok(Self::HU),
716            "ID" => Ok(Self::ID),
717            "IE" => Ok(Self::IE),
718            "IM" => Ok(Self::IM),
719            "IS" => Ok(Self::IS),
720            "IT" => Ok(Self::IT),
721            "JE" => Ok(Self::JE),
722            "JM" => Ok(Self::JM),
723            "JP" => Ok(Self::JP),
724            "KE" => Ok(Self::KE),
725            "KR" => Ok(Self::KR),
726            "KZ" => Ok(Self::KZ),
727            "LI" => Ok(Self::LI),
728            "LS" => Ok(Self::LS),
729            "LT" => Ok(Self::LT),
730            "LU" => Ok(Self::LU),
731            "LV" => Ok(Self::LV),
732            "MA" => Ok(Self::MA),
733            "MC" => Ok(Self::MC),
734            "MD" => Ok(Self::MD),
735            "ME" => Ok(Self::ME),
736            "MG" => Ok(Self::MG),
737            "MK" => Ok(Self::MK),
738            "MN" => Ok(Self::MN),
739            "MS" => Ok(Self::MS),
740            "MT" => Ok(Self::MT),
741            "MX" => Ok(Self::MX),
742            "MZ" => Ok(Self::MZ),
743            "NA" => Ok(Self::NA),
744            "NE" => Ok(Self::NE),
745            "NG" => Ok(Self::NG),
746            "NI" => Ok(Self::NI),
747            "NL" => Ok(Self::NL),
748            "NO" => Ok(Self::NO),
749            "NZ" => Ok(Self::NZ),
750            "PA" => Ok(Self::PA),
751            "PE" => Ok(Self::PE),
752            "PG" => Ok(Self::PG),
753            "PH" => Ok(Self::PH),
754            "PL" => Ok(Self::PL),
755            "PR" => Ok(Self::PR),
756            "PT" => Ok(Self::PT),
757            "PY" => Ok(Self::PY),
758            "RO" => Ok(Self::RO),
759            "RS" => Ok(Self::RS),
760            "RU" => Ok(Self::RU),
761            "SC" => Ok(Self::SC),
762            "SE" => Ok(Self::SE),
763            "SG" => Ok(Self::SG),
764            "SI" => Ok(Self::SI),
765            "SJ" => Ok(Self::SJ),
766            "SK" => Ok(Self::SK),
767            "SM" => Ok(Self::SM),
768            "SR" => Ok(Self::SR),
769            "SV" => Ok(Self::SV),
770            "TN" => Ok(Self::TN),
771            "TR" => Ok(Self::TR),
772            "UA" => Ok(Self::UA),
773            "US" => Ok(Self::US),
774            "UY" => Ok(Self::UY),
775            "VA" => Ok(Self::VA),
776            "VE" => Ok(Self::VE),
777            "VN" => Ok(Self::VN),
778            "ZA" => Ok(Self::ZA),
779            "ZW" => Ok(Self::ZW),
780            _ => Err(UnknownCountryCode(s.to_string())),
781        }
782    }
783}