lib.rs
use std::cmp::Ordering;
use std::fmt;
use std::str::FromStr;
use serde::{
Serialize,
Serializer,
};
#[derive(Debug)]
pub struct Error(String);
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "{}", self.0)
}
}
/// Country
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum Country {
China,
India,
UnitedStates,
Indonesia,
Pakistan,
Brazil,
Nigeria,
Bangladesh,
Russia,
Mexico,
Japan,
Ethiopia,
Philippines,
Egypt,
Vietnam,
DRCongo,
Iran,
Turkey,
Germany,
France,
UnitedKingdom,
Thailand,
SouthAfrica,
Tanzania,
Italy,
Myanmar,
SouthKorea,
Colombia,
Kenya,
Spain,
Argentina,
Algeria,
Sudan,
Uganda,
Ukraine,
Iraq,
Canada,
Poland,
Morocco,
Uzbekistan,
SaudiArabia,
Peru,
Afghanistan,
Malaysia,
Angola,
Ghana,
Mozambique,
Yemen,
Nepal,
Venezuela,
IvoryCoast,
Madagascar,
Australia,
NorthKorea,
Cameroon,
Niger,
Taiwan,
SriLanka,
BurkinaFaso,
Mali,
Chile,
Romania,
Kazakhstan,
Malawi,
Zambia,
Syria,
Ecuador,
Netherlands,
Senegal,
Guatemala,
Chad,
Somalia,
Zimbabwe,
Cambodia,
SouthSudan,
Rwanda,
Guinea,
Burundi,
Benin,
Bolivia,
Haiti,
Tunisia,
Belgium,
Cuba,
Jordan,
Greece,
CzechRepublic,
DominicanRepublic,
Sweden,
Portugal,
Azerbaijan,
Hungary,
UnitedArabEmirates,
Honduras,
Belarus,
Israel,
Tajikistan,
PapuaNewGuinea,
Austria,
Switzerland,
SierraLeone,
Togo,
HongKong,
Paraguay,
Laos,
Libya,
Bulgaria,
Serbia,
ElSalvador,
Lebanon,
Kyrgyzstan,
Nicaragua,
Turkmenistan,
Denmark,
Singapore,
Congo,
CentralAfricanRepublic,
Finland,
Slovakia,
Norway,
Palestine,
CostaRica,
NewZealand,
Ireland,
Liberia,
Oman,
Kuwait,
Panama,
Mauritania,
Croatia,
Georgia,
Eritrea,
Uruguay,
Mongolia,
BosniaAndHerzegovina,
PuertoRico,
Armenia,
Albania,
Lithuania,
Jamaica,
Qatar,
Moldova,
Namibia,
Botswana,
Gambia,
Gabon,
Slovenia,
NorthMacedonia,
Lesotho,
Latvia,
Kosovo,
GuineaBissau,
Bahrain,
EquatorialGuinea,
TrinidadAndTobago,
Estonia,
EastTimor,
Mauritius,
Eswatini,
Djibouti,
Fiji,
Cyprus,
Comoros,
Bhutan,
Guyana,
SolomonIslands,
Macau,
Luxembourg,
Montenegro,
WesternSahara,
Suriname,
CapeVerde,
Malta,
Transnistria,
Brunei,
Belize,
Bahamas,
Maldives,
NorthernCyprus,
Iceland,
Vanuatu,
Barbados,
FrenchPolynesia,
NewCaledonia,
Abkhazia,
SaoTomeAndPrincipe,
Samoa,
SaintLucia,
Guam,
Curacao,
RepublicOfArtsakh,
Kiribati,
Grenada,
Aruba,
SaintVincentAndTheGrenadines,
Jersey,
FSMicronesia,
USVirginIslands,
Tonga,
AntiguaAndBarbuda,
Seychelles,
IsleOfMan,
Andorra,
Dominica,
CaymanIslands,
Bermuda,
Guernsey,
AmericanSamoa,
NorthernMarianaIslands,
Greenland,
MarshallIslands,
SaintKittsandNevis,
SouthOssetia,
FaroeIslands,
TurksandCaicosIslands,
SintMaarten,
Liechtenstein,
Monaco,
SaintMartin,
Gibraltar,
SanMarino,
AlandIslands,
BritishVirginIslands,
Palau,
CookIslands,
Anguilla,
Nauru,
WallisandFutuna,
Tuvalu,
SaintBarthelemy,
SaintPierreAndMiquelon,
SaintHelenaAndTristanDaCunha,
Montserrat,
FalklandIslands,
ChristmasIsland,
NorfolkIsland,
Niue,
Tokelau,
VaticanCity,
CocosKeelingIslands,
PitcairnIslands,
}
impl Serialize for Country {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
serializer.serialize_str(&self.to_string())
}
}
impl Country {
/// Return the country name in lowercase with underscores replacing spaces.
pub fn as_path(&self) -> String {
self.to_string().to_lowercase().replace(' ', "_")
}
}
impl PartialOrd for Country {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
Some(self.to_string().cmp(&other.to_string()))
}
}
impl Ord for Country {
fn cmp(&self, other: &Self) -> Ordering {
self.to_string().cmp(&other.to_string())
}
}
impl FromStr for Country {
type Err = Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
let cleaned = s.to_lowercase().replace('_', " ");
match cleaned.as_str() {
"china" => Ok(Country::China),
"india" => Ok(Country::India),
"united states" => Ok(Country::UnitedStates),
"indonesia" => Ok(Country::Indonesia),
"pakistan" => Ok(Country::Pakistan),
"brazil" => Ok(Country::Brazil),
"nigeria" => Ok(Country::Nigeria),
"bangladesh" => Ok(Country::Bangladesh),
"russia" => Ok(Country::Russia),
"mexico" => Ok(Country::Mexico),
"japan" => Ok(Country::Japan),
"ethiopia" => Ok(Country::Ethiopia),
"philippines" => Ok(Country::Philippines),
"egypt" => Ok(Country::Egypt),
"vietnam" => Ok(Country::Vietnam),
"dr congo" => Ok(Country::DRCongo),
"iran" => Ok(Country::Iran),
"turkey" => Ok(Country::Turkey),
"germany" => Ok(Country::Germany),
"france" => Ok(Country::France),
"united kingdom" => Ok(Country::UnitedKingdom),
"thailand" => Ok(Country::Thailand),
"south africa" => Ok(Country::SouthAfrica),
"tanzania" => Ok(Country::Tanzania),
"italy" => Ok(Country::Italy),
"myanmar" => Ok(Country::Myanmar),
"south korea" => Ok(Country::SouthKorea),
"colombia" => Ok(Country::Colombia),
"kenya" => Ok(Country::Kenya),
"spain" => Ok(Country::Spain),
"argentina" => Ok(Country::Argentina),
"algeria" => Ok(Country::Algeria),
"sudan" => Ok(Country::Sudan),
"uganda" => Ok(Country::Uganda),
"ukraine" => Ok(Country::Ukraine),
"iraq" => Ok(Country::Iraq),
"canada" => Ok(Country::Canada),
"poland" => Ok(Country::Poland),
"morocco" => Ok(Country::Morocco),
"uzbekistan" => Ok(Country::Uzbekistan),
"saudi arabia" => Ok(Country::SaudiArabia),
"peru" => Ok(Country::Peru),
"afghanistan" => Ok(Country::Afghanistan),
"malaysia" => Ok(Country::Malaysia),
"angola" => Ok(Country::Angola),
"ghana" => Ok(Country::Ghana),
"mozambique" => Ok(Country::Mozambique),
"yemen" => Ok(Country::Yemen),
"nepal" => Ok(Country::Nepal),
"venezuela" => Ok(Country::Venezuela),
"ivory coast" => Ok(Country::IvoryCoast),
"madagascar" => Ok(Country::Madagascar),
"australia" => Ok(Country::Australia),
"north korea" => Ok(Country::NorthKorea),
"cameroon" => Ok(Country::Cameroon),
"niger" => Ok(Country::Niger),
"taiwan" => Ok(Country::Taiwan),
"srilanka" => Ok(Country::SriLanka),
"burkina faso" => Ok(Country::BurkinaFaso),
"mali" => Ok(Country::Mali),
"chile" => Ok(Country::Chile),
"romania" => Ok(Country::Romania),
"kazakhstan" => Ok(Country::Kazakhstan),
"malawi" => Ok(Country::Malawi),
"zambia" => Ok(Country::Zambia),
"syria" => Ok(Country::Syria),
"ecuador" => Ok(Country::Ecuador),
"netherlands" => Ok(Country::Netherlands),
"senegal" => Ok(Country::Senegal),
"guatemala" => Ok(Country::Guatemala),
"chad" => Ok(Country::Chad),
"somalia" => Ok(Country::Somalia),
"zimbabwe" => Ok(Country::Zimbabwe),
"cambodia" => Ok(Country::Cambodia),
"south sudan" => Ok(Country::SouthSudan),
"rwanda" => Ok(Country::Rwanda),
"guinea" => Ok(Country::Guinea),
"burundi" => Ok(Country::Burundi),
"benin" => Ok(Country::Benin),
"bolivia" => Ok(Country::Bolivia),
"haiti" => Ok(Country::Haiti),
"tunisia" => Ok(Country::Tunisia),
"belgium" => Ok(Country::Belgium),
"cuba" => Ok(Country::Cuba),
"jordan" => Ok(Country::Jordan),
"greece" => Ok(Country::Greece),
"czech republic" => Ok(Country::CzechRepublic),
"dominican republic" => Ok(Country::DominicanRepublic),
"sweden" => Ok(Country::Sweden),
"portugal" => Ok(Country::Portugal),
"azerbaijan" => Ok(Country::Azerbaijan),
"hungary" => Ok(Country::Hungary),
"united arab emirates" => Ok(Country::UnitedArabEmirates),
"honduras" => Ok(Country::Honduras),
"belarus" => Ok(Country::Belarus),
"israel" => Ok(Country::Israel),
"tajikistan" => Ok(Country::Tajikistan),
"papua new guinea" => Ok(Country::PapuaNewGuinea),
"austria" => Ok(Country::Austria),
"switzerland" => Ok(Country::Switzerland),
"sierraLeone" => Ok(Country::SierraLeone),
"togo" => Ok(Country::Togo),
"hongkong" => Ok(Country::HongKong),
"paraguay" => Ok(Country::Paraguay),
"laos" => Ok(Country::Laos),
"libya" => Ok(Country::Libya),
"bulgaria" => Ok(Country::Bulgaria),
"serbia" => Ok(Country::Serbia),
"el salvador" => Ok(Country::ElSalvador),
"lebanon" => Ok(Country::Lebanon),
"kyrgyzstan" => Ok(Country::Kyrgyzstan),
"nicaragua" => Ok(Country::Nicaragua),
"turkmenistan" => Ok(Country::Turkmenistan),
"denmark" => Ok(Country::Denmark),
"singapore" => Ok(Country::Singapore),
"congo" => Ok(Country::Congo),
"central african republic" => Ok(Country::CentralAfricanRepublic),
"finland" => Ok(Country::Finland),
"slovakia" => Ok(Country::Slovakia),
"norway" => Ok(Country::Norway),
"palestine" => Ok(Country::Palestine),
"costa Rica" => Ok(Country::CostaRica),
"new zealand" => Ok(Country::NewZealand),
"ireland" => Ok(Country::Ireland),
"liberia" => Ok(Country::Liberia),
"oman" => Ok(Country::Oman),
"kuwait" => Ok(Country::Kuwait),
"panama" => Ok(Country::Panama),
"mauritania" => Ok(Country::Mauritania),
"croatia" => Ok(Country::Croatia),
"georgia" => Ok(Country::Georgia),
"eritrea" => Ok(Country::Eritrea),
"uruguay" => Ok(Country::Uruguay),
"mongolia" => Ok(Country::Mongolia),
"bosnia and herzegovina" => Ok(Country::BosniaAndHerzegovina),
"puerto rico" => Ok(Country::PuertoRico),
"armenia" => Ok(Country::Armenia),
"albania" => Ok(Country::Albania),
"lithuania" => Ok(Country::Lithuania),
"jamaica" => Ok(Country::Jamaica),
"qatar" => Ok(Country::Qatar),
"moldova" => Ok(Country::Moldova),
"namibia" => Ok(Country::Namibia),
"botswana" => Ok(Country::Botswana),
"gambia" => Ok(Country::Gambia),
"gabon" => Ok(Country::Gabon),
"slovenia" => Ok(Country::Slovenia),
"north macedonia" => Ok(Country::NorthMacedonia),
"lesotho" => Ok(Country::Lesotho),
"latvia" => Ok(Country::Latvia),
"kosovo" => Ok(Country::Kosovo),
"guinea bissau" => Ok(Country::GuineaBissau),
"bahrain" => Ok(Country::Bahrain),
"equatorial guinea" => Ok(Country::EquatorialGuinea),
"trinidad and tobago" => Ok(Country::TrinidadAndTobago),
"estonia" => Ok(Country::Estonia),
"east timor" => Ok(Country::EastTimor),
"mauritius" => Ok(Country::Mauritius),
"eswatini" => Ok(Country::Eswatini),
"djibouti" => Ok(Country::Djibouti),
"fiji" => Ok(Country::Fiji),
"cyprus" => Ok(Country::Cyprus),
"comoros" => Ok(Country::Comoros),
"bhutan" => Ok(Country::Bhutan),
"guyana" => Ok(Country::Guyana),
"solomon islands" => Ok(Country::SolomonIslands),
"macau" => Ok(Country::Macau),
"luxembourg" => Ok(Country::Luxembourg),
"montenegro" => Ok(Country::Montenegro),
"western sahara" => Ok(Country::WesternSahara),
"suriname" => Ok(Country::Suriname),
"cape verde" => Ok(Country::CapeVerde),
"malta" => Ok(Country::Malta),
"transnistria" => Ok(Country::Transnistria),
"brunei" => Ok(Country::Brunei),
"belize" => Ok(Country::Belize),
"bahamas" => Ok(Country::Bahamas),
"maldives" => Ok(Country::Maldives),
"northern cyprus" => Ok(Country::NorthernCyprus),
"iceland" => Ok(Country::Iceland),
"vanuatu" => Ok(Country::Vanuatu),
"barbados" => Ok(Country::Barbados),
"french polynesia" => Ok(Country::FrenchPolynesia),
"new caledonia" => Ok(Country::NewCaledonia),
"abkhazia" => Ok(Country::Abkhazia),
"são tomé and príncipe" => Ok(Country::SaoTomeAndPrincipe),
"samoa" => Ok(Country::Samoa),
"saint lucia" => Ok(Country::SaintLucia),
"guam" => Ok(Country::Guam),
"curaçao" => Ok(Country::Curacao),
"republic Of artsakh" => Ok(Country::RepublicOfArtsakh),
"kiribati" => Ok(Country::Kiribati),
"grenada" => Ok(Country::Grenada),
"aruba" => Ok(Country::Aruba),
"saint vincent and the grenadines" => Ok(Country::SaintVincentAndTheGrenadines),
"jersey" => Ok(Country::Jersey),
"fs micronesia" => Ok(Country::FSMicronesia),
"us virgin islands" => Ok(Country::USVirginIslands),
"tonga" => Ok(Country::Tonga),
"antigua and barbuda" => Ok(Country::AntiguaAndBarbuda),
"seychelles" => Ok(Country::Seychelles),
"isle of man" => Ok(Country::IsleOfMan),
"andorra" => Ok(Country::Andorra),
"dominica" => Ok(Country::Dominica),
"cayman islands" => Ok(Country::CaymanIslands),
"bermuda" => Ok(Country::Bermuda),
"guernsey" => Ok(Country::Guernsey),
"american samoa" => Ok(Country::AmericanSamoa),
"northern mariana islands" => Ok(Country::NorthernMarianaIslands),
"greenland" => Ok(Country::Greenland),
"marshall islands" => Ok(Country::MarshallIslands),
"saint kitts and nevis" => Ok(Country::SaintKittsandNevis),
"south ossetia" => Ok(Country::SouthOssetia),
"faroe islands" => Ok(Country::FaroeIslands),
"turks and caicos islands" => Ok(Country::TurksandCaicosIslands),
"sint maarten" => Ok(Country::SintMaarten),
"liechtenstein" => Ok(Country::Liechtenstein),
"monaco" => Ok(Country::Monaco),
"saint martin" => Ok(Country::SaintMartin),
"gibraltar" => Ok(Country::Gibraltar),
"san marino" => Ok(Country::SanMarino),
"åland islands" => Ok(Country::AlandIslands),
"british virgin islands" => Ok(Country::BritishVirginIslands),
"palau" => Ok(Country::Palau),
"cook islands" => Ok(Country::CookIslands),
"anguilla" => Ok(Country::Anguilla),
"nauru" => Ok(Country::Nauru),
"wallis and futuna" => Ok(Country::WallisandFutuna),
"tuvalu" => Ok(Country::Tuvalu),
"saint barthélemy" => Ok(Country::SaintBarthelemy),
"saint pierre and miquelon" => Ok(Country::SaintPierreAndMiquelon),
"saint helena and tristan da cunha" => Ok(Country::SaintHelenaAndTristanDaCunha),
"montserrat" => Ok(Country::Montserrat),
"falkland Islands" => Ok(Country::FalklandIslands),
"christmas island" => Ok(Country::ChristmasIsland),
"norfolk island" => Ok(Country::NorfolkIsland),
"niue" => Ok(Country::Niue),
"tokelau" => Ok(Country::Tokelau),
"vatican city" => Ok(Country::VaticanCity),
"cocos keeling islands" => Ok(Country::CocosKeelingIslands),
"pitcairn islands" => Ok(Country::PitcairnIslands),
err => {
Err(Error(format!( "Failed to parse country from [{}].", err)))
},
}
}
}
impl fmt::Display for Country {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let s = match self {
Country::China => "China",
Country::India => "India",
Country::UnitedStates => "United States",
Country::Indonesia => "Indonesia",
Country::Pakistan => "Pakistan",
Country::Brazil => "Brazil",
Country::Nigeria => "Nigeria",
Country::Bangladesh => "Bangladesh",
Country::Russia => "Russia",
Country::Mexico => "Mexico",
Country::Japan => "Japan",
Country::Ethiopia => "Ethiopia",
Country::Philippines => "Philippines",
Country::Egypt => "Egypt",
Country::Vietnam => "Vietnam",
Country::DRCongo => "DR Congo",
Country::Iran => "Iran",
Country::Turkey => "Turkey",
Country::Germany => "Germany",
Country::France => "France",
Country::UnitedKingdom => "United Kingdom",
Country::Thailand => "Thailand",
Country::SouthAfrica => "South Africa",
Country::Tanzania => "Tanzania",
Country::Italy => "Italy",
Country::Myanmar => "Myanmar",
Country::SouthKorea => "South Korea",
Country::Colombia => "Colombia",
Country::Kenya => "Kenya",
Country::Spain => "Spain",
Country::Argentina => "Argentina",
Country::Algeria => "Algeria",
Country::Sudan => "Sudan",
Country::Uganda => "Uganda",
Country::Ukraine => "Ukraine",
Country::Iraq => "Iraq",
Country::Canada => "Canada",
Country::Poland => "Poland",
Country::Morocco => "Morocco",
Country::Uzbekistan => "Uzbekistan",
Country::SaudiArabia => "Saudi Arabia",
Country::Peru => "Peru",
Country::Afghanistan => "Afghanistan",
Country::Malaysia => "Malaysia",
Country::Angola => "Angola",
Country::Ghana => "Ghana",
Country::Mozambique => "Mozambique",
Country::Yemen => "Yemen",
Country::Nepal => "Nepal",
Country::Venezuela => "Venezuela",
Country::IvoryCoast => "Ivory Coast",
Country::Madagascar => "Madagascar",
Country::Australia => "Australia",
Country::NorthKorea => "North Korea",
Country::Cameroon => "Cameroon",
Country::Niger => "Niger",
Country::Taiwan => "Taiwan",
Country::SriLanka => "SriLanka",
Country::BurkinaFaso => "Burkina Faso",
Country::Mali => "Mali",
Country::Chile => "Chile",
Country::Romania => "Romania",
Country::Kazakhstan => "Kazakhstan",
Country::Malawi => "Malawi",
Country::Zambia => "Zambia",
Country::Syria => "Syria",
Country::Ecuador => "Ecuador",
Country::Netherlands => "Netherlands",
Country::Senegal => "Senegal",
Country::Guatemala => "Guatemala",
Country::Chad => "Chad",
Country::Somalia => "Somalia",
Country::Zimbabwe => "Zimbabwe",
Country::Cambodia => "Cambodia",
Country::SouthSudan => "South Sudan",
Country::Rwanda => "Rwanda",
Country::Guinea => "Guinea",
Country::Burundi => "Burundi",
Country::Benin => "Benin",
Country::Bolivia => "Bolivia",
Country::Haiti => "Haiti",
Country::Tunisia => "Tunisia",
Country::Belgium => "Belgium",
Country::Cuba => "Cuba",
Country::Jordan => "Jordan",
Country::Greece => "Greece",
Country::CzechRepublic => "Czech Republic",
Country::DominicanRepublic => "Dominican Republic",
Country::Sweden => "Sweden",
Country::Portugal => "Portugal",
Country::Azerbaijan => "Azerbaijan",
Country::Hungary => "Hungary",
Country::UnitedArabEmirates => "United Arab Emirates",
Country::Honduras => "Honduras",
Country::Belarus => "Belarus",
Country::Israel => "Israel",
Country::Tajikistan => "Tajikistan",
Country::PapuaNewGuinea => "Papua New Guinea",
Country::Austria => "Austria",
Country::Switzerland => "Switzerland",
Country::SierraLeone => "SierraLeone",
Country::Togo => "Togo",
Country::HongKong => "HongKong",
Country::Paraguay => "Paraguay",
Country::Laos => "Laos",
Country::Libya => "Libya",
Country::Bulgaria => "Bulgaria",
Country::Serbia => "Serbia",
Country::ElSalvador => "El Salvador",
Country::Lebanon => "Lebanon",
Country::Kyrgyzstan => "Kyrgyzstan",
Country::Nicaragua => "Nicaragua",
Country::Turkmenistan => "Turkmenistan",
Country::Denmark => "Denmark",
Country::Singapore => "Singapore",
Country::Congo => "Congo",
Country::CentralAfricanRepublic => "Central African Republic",
Country::Finland => "Finland",
Country::Slovakia => "Slovakia",
Country::Norway => "Norway",
Country::Palestine => "Palestine",
Country::CostaRica => "Costa Rica",
Country::NewZealand => "New Zealand",
Country::Ireland => "Ireland",
Country::Liberia => "Liberia",
Country::Oman => "Oman",
Country::Kuwait => "Kuwait",
Country::Panama => "Panama",
Country::Mauritania => "Mauritania",
Country::Croatia => "Croatia",
Country::Georgia => "Georgia",
Country::Eritrea => "Eritrea",
Country::Uruguay => "Uruguay",
Country::Mongolia => "Mongolia",
Country::BosniaAndHerzegovina => "Bosnia and Herzegovina",
Country::PuertoRico => "Puerto Rico",
Country::Armenia => "Armenia",
Country::Albania => "Albania",
Country::Lithuania => "Lithuania",
Country::Jamaica => "Jamaica",
Country::Qatar => "Qatar",
Country::Moldova => "Moldova",
Country::Namibia => "Namibia",
Country::Botswana => "Botswana",
Country::Gambia => "Gambia",
Country::Gabon => "Gabon",
Country::Slovenia => "Slovenia",
Country::NorthMacedonia => "North Macedonia",
Country::Lesotho => "Lesotho",
Country::Latvia => "Latvia",
Country::Kosovo => "Kosovo",
Country::GuineaBissau => "Guinea Bissau",
Country::Bahrain => "Bahrain",
Country::EquatorialGuinea => "Equatorial Guinea",
Country::TrinidadAndTobago => "Trinidad and Tobago",
Country::Estonia => "Estonia",
Country::EastTimor => "East Timor",
Country::Mauritius => "Mauritius",
Country::Eswatini => "Eswatini",
Country::Djibouti => "Djibouti",
Country::Fiji => "Fiji",
Country::Cyprus => "Cyprus",
Country::Comoros => "Comoros",
Country::Bhutan => "Bhutan",
Country::Guyana => "Guyana",
Country::SolomonIslands => "Solomon Islands",
Country::Macau => "Macau",
Country::Luxembourg => "Luxembourg",
Country::Montenegro => "Montenegro",
Country::WesternSahara => "Western Sahara",
Country::Suriname => "Suriname",
Country::CapeVerde => "Cape Verde",
Country::Malta => "Malta",
Country::Transnistria => "Transnistria",
Country::Brunei => "Brunei",
Country::Belize => "Belize",
Country::Bahamas => "Bahamas",
Country::Maldives => "Maldives",
Country::NorthernCyprus => "Northern Cyprus",
Country::Iceland => "Iceland",
Country::Vanuatu => "Vanuatu",
Country::Barbados => "Barbados",
Country::FrenchPolynesia => "French Polynesia",
Country::NewCaledonia => "New Caledonia",
Country::Abkhazia => "Abkhazia",
Country::SaoTomeAndPrincipe => "São Tomé and Príncipe",
Country::Samoa => "Samoa",
Country::SaintLucia => "Saint Lucia",
Country::Guam => "Guam",
Country::Curacao => "Curaçao",
Country::RepublicOfArtsakh => "Republic Of Artsakh",
Country::Kiribati => "Kiribati",
Country::Grenada => "Grenada",
Country::Aruba => "Aruba",
Country::SaintVincentAndTheGrenadines => "Saint Vincent and the Grenadines",
Country::Jersey => "Jersey",
Country::FSMicronesia => "FS Micronesia",
Country::USVirginIslands => "US Virgin Islands",
Country::Tonga => "Tonga",
Country::AntiguaAndBarbuda => "Antigua and Barbuda",
Country::Seychelles => "Seychelles",
Country::IsleOfMan => "Isle of Man",
Country::Andorra => "Andorra",
Country::Dominica => "Dominica",
Country::CaymanIslands => "Cayman Islands",
Country::Bermuda => "Bermuda",
Country::Guernsey => "Guernsey",
Country::AmericanSamoa => "American Samoa",
Country::NorthernMarianaIslands => "Northern Mariana Islands",
Country::Greenland => "Greenland",
Country::MarshallIslands => "Marshall Islands",
Country::SaintKittsandNevis => "Saint Kitts and Nevis",
Country::SouthOssetia => "South Ossetia",
Country::FaroeIslands => "Faroe Islands",
Country::TurksandCaicosIslands => "Turks and Caicos Islands",
Country::SintMaarten => "Sint Maarten",
Country::Liechtenstein => "Liechtenstein",
Country::Monaco => "Monaco",
Country::SaintMartin => "Saint Martin",
Country::Gibraltar => "Gibraltar",
Country::SanMarino => "San Marino",
Country::AlandIslands => "Åland Islands",
Country::BritishVirginIslands => "British Virgin Islands",
Country::Palau => "Palau",
Country::CookIslands => "Cook Islands",
Country::Anguilla => "Anguilla",
Country::Nauru => "Nauru",
Country::WallisandFutuna => "Wallis and Futuna",
Country::Tuvalu => "Tuvalu",
Country::SaintBarthelemy => "Saint Barthélemy",
Country::SaintPierreAndMiquelon => "Saint Pierre and Miquelon",
Country::SaintHelenaAndTristanDaCunha => "Saint Helena and Tristan Da Cunha",
Country::Montserrat => "Montserrat",
Country::FalklandIslands => "Falkland Islands",
Country::ChristmasIsland => "Christmas Island",
Country::NorfolkIsland => "Norfolk Island",
Country::Niue => "Niue",
Country::Tokelau => "Tokelau",
Country::VaticanCity => "Vatican City",
Country::CocosKeelingIslands => "Cocos Keeling Islands",
Country::PitcairnIslands => "Pitcairn Islands",
};
write!(f, "{}", s)
}
}