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