use core::fmt;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum LocationHint {
Afr,
Apac,
EEur,
ENam,
Me,
Oc,
Sam,
WEur,
WNam,
}
impl LocationHint {
#[inline]
pub const fn as_str(&self) -> &'static str {
match self {
Self::Afr => "afr",
Self::Apac => "apac",
Self::EEur => "eeur",
Self::ENam => "enam",
Self::Me => "me",
Self::Oc => "oc",
Self::Sam => "sam",
Self::WEur => "weur",
Self::WNam => "wnam",
}
}
#[inline]
pub const fn name(&self) -> &'static str {
match self {
Self::Afr => "Africa",
Self::Apac => "Asia-Pacific",
Self::EEur => "Eastern Europe",
Self::ENam => "Eastern North America",
Self::Me => "Middle East",
Self::Oc => "Oceania",
Self::Sam => "South America",
Self::WEur => "Western Europe",
Self::WNam => "Western North America",
}
}
pub const ALL: &'static [LocationHint] = &[
Self::Afr,
Self::Apac,
Self::EEur,
Self::ENam,
Self::Me,
Self::Oc,
Self::Sam,
Self::WEur,
Self::WNam,
];
pub fn parse(s: &str) -> Option<Self> {
match s {
"afr" => Some(Self::Afr),
"apac" => Some(Self::Apac),
"eeur" => Some(Self::EEur),
"enam" => Some(Self::ENam),
"me" => Some(Self::Me),
"oc" => Some(Self::Oc),
"sam" => Some(Self::Sam),
"weur" => Some(Self::WEur),
"wnam" => Some(Self::WNam),
_ => None,
}
}
}
impl fmt::Display for LocationHint {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.as_str())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub enum Colo {
AAE,
ABJ,
ABQ,
ACC,
ADB,
ADD,
ADL,
AGR,
AKL,
AKX,
ALA,
ALG,
AMD,
AMM,
AMS,
ANC,
ARI,
ARN,
ARU,
ASK,
ASU,
ATH,
ATL,
AUS,
BAH,
BAQ,
BCN,
BEG,
BEL,
BEY,
BGI,
BGR,
BGW,
BHY,
BKK,
BLR,
BNA,
BNE,
BNU,
BOD,
BOG,
BOM,
BOS,
BRU,
BSB,
BSR,
BTS,
BUD,
BUF,
BWN,
CAI,
CAN,
CAW,
CBR,
CCP,
CCU,
CDG,
CEB,
CFC,
CGB,
CGD,
CGK,
CGO,
CGP,
CGY,
CHC,
CJB,
CKG,
CLE,
CLO,
CLT,
CMB,
CMH,
CNF,
CNI,
CNN,
CNX,
COK,
COR,
CPH,
CPT,
CRK,
CSX,
CTU,
CWB,
CZL,
CZX,
DAC,
DAD,
DAR,
DEL,
DEN,
DEX,
DFW,
DKR,
DLC,
DLP,
DME,
DMM,
DOH,
DPS,
DTW,
DUB,
DUR,
DUS,
DXB,
EBB,
EBL,
EVN,
EWR,
EZE,
FCO,
FIH,
FLN,
FOC,
FOR,
FRA,
FRU,
FSD,
FUK,
FUO,
GBE,
GDL,
GEO,
GIG,
GND,
GOT,
GRU,
GUA,
GUM,
GVA,
GYD,
GYE,
GYN,
HAK,
HAM,
HAN,
HBA,
HEL,
HFA,
HGH,
HKG,
HNL,
HRE,
HYD,
HYN,
IAD,
IAH,
ICN,
IND,
ISB,
IST,
ISU,
IXC,
JAX,
JDO,
JED,
JHB,
JIB,
JNB,
JOG,
JOI,
JXG,
KBP,
KCH,
KEF,
KGL,
KHH,
KHI,
KHN,
KIN,
KIV,
KIX,
KJA,
KMG,
KNU,
KTM,
KUL,
KWE,
KWI,
LAD,
LAS,
LAX,
LCA,
LED,
LHE,
LHR,
LIM,
LIS,
LLK,
LLW,
LOS,
LPB,
LUN,
LUX,
LYS,
MAA,
MAD,
MAN,
MAO,
MBA,
MCI,
MCT,
MDE,
MEL,
MEM,
MEX,
MFM,
MIA,
MLA,
MLE,
MLG,
MNL,
MPM,
MRS,
MRU,
MSP,
MSQ,
MUC,
MXP,
NAG,
NBO,
NJF,
NOU,
NQN,
NQZ,
NRT,
NVT,
OKA,
OKC,
OMA,
ORD,
ORF,
ORN,
OSL,
OTP,
OUA,
PAT,
PBH,
PBM,
PDX,
PER,
PHL,
PHX,
PIT,
PKX,
PMO,
PMW,
PNH,
POA,
POS,
PPT,
PRG,
PTY,
QRO,
QWJ,
RAO,
RDU,
REC,
RIC,
RIX,
RUH,
RUN,
SAN,
SAP,
SAT,
SCL,
SDQ,
SEA,
SFO,
SGN,
SHA,
SIN,
SJC,
SJK,
SJO,
SJP,
SJU,
SJW,
SKG,
SKP,
SLC,
SMF,
SOD,
SOF,
SSA,
STI,
STL,
STR,
SUV,
SYD,
SZX,
TAO,
TBS,
TEN,
TGU,
TIA,
TLH,
TLL,
TLV,
TNA,
TNR,
TPA,
TPE,
TUN,
TXL,
TYN,
UDI,
UIO,
ULN,
URT,
VCP,
VIE,
VIX,
VNO,
VTE,
WAW,
WDH,
WLG,
WRO,
XAP,
XFN,
XIY,
XNH,
YHZ,
YOW,
YUL,
YVR,
YWG,
YXE,
YYC,
YYZ,
ZAG,
ZDM,
ZRH,
}
impl Colo {
#[inline]
pub const fn code(&self) -> &'static str {
match self {
Self::AAE => "AAE",
Self::ABJ => "ABJ",
Self::ABQ => "ABQ",
Self::ACC => "ACC",
Self::ADB => "ADB",
Self::ADD => "ADD",
Self::ADL => "ADL",
Self::AGR => "AGR",
Self::AKL => "AKL",
Self::AKX => "AKX",
Self::ALA => "ALA",
Self::ALG => "ALG",
Self::AMD => "AMD",
Self::AMM => "AMM",
Self::AMS => "AMS",
Self::ANC => "ANC",
Self::ARI => "ARI",
Self::ARN => "ARN",
Self::ARU => "ARU",
Self::ASK => "ASK",
Self::ASU => "ASU",
Self::ATH => "ATH",
Self::ATL => "ATL",
Self::AUS => "AUS",
Self::BAH => "BAH",
Self::BAQ => "BAQ",
Self::BCN => "BCN",
Self::BEG => "BEG",
Self::BEL => "BEL",
Self::BEY => "BEY",
Self::BGI => "BGI",
Self::BGR => "BGR",
Self::BGW => "BGW",
Self::BHY => "BHY",
Self::BKK => "BKK",
Self::BLR => "BLR",
Self::BNA => "BNA",
Self::BNE => "BNE",
Self::BNU => "BNU",
Self::BOD => "BOD",
Self::BOG => "BOG",
Self::BOM => "BOM",
Self::BOS => "BOS",
Self::BRU => "BRU",
Self::BSB => "BSB",
Self::BSR => "BSR",
Self::BTS => "BTS",
Self::BUD => "BUD",
Self::BUF => "BUF",
Self::BWN => "BWN",
Self::CAI => "CAI",
Self::CAN => "CAN",
Self::CAW => "CAW",
Self::CBR => "CBR",
Self::CCP => "CCP",
Self::CCU => "CCU",
Self::CDG => "CDG",
Self::CEB => "CEB",
Self::CFC => "CFC",
Self::CGB => "CGB",
Self::CGD => "CGD",
Self::CGK => "CGK",
Self::CGO => "CGO",
Self::CGP => "CGP",
Self::CGY => "CGY",
Self::CHC => "CHC",
Self::CJB => "CJB",
Self::CKG => "CKG",
Self::CLE => "CLE",
Self::CLO => "CLO",
Self::CLT => "CLT",
Self::CMB => "CMB",
Self::CMH => "CMH",
Self::CNF => "CNF",
Self::CNI => "CNI",
Self::CNN => "CNN",
Self::CNX => "CNX",
Self::COK => "COK",
Self::COR => "COR",
Self::CPH => "CPH",
Self::CPT => "CPT",
Self::CRK => "CRK",
Self::CSX => "CSX",
Self::CTU => "CTU",
Self::CWB => "CWB",
Self::CZL => "CZL",
Self::CZX => "CZX",
Self::DAC => "DAC",
Self::DAD => "DAD",
Self::DAR => "DAR",
Self::DEL => "DEL",
Self::DEN => "DEN",
Self::DEX => "DEX",
Self::DFW => "DFW",
Self::DKR => "DKR",
Self::DLC => "DLC",
Self::DLP => "DLP",
Self::DME => "DME",
Self::DMM => "DMM",
Self::DOH => "DOH",
Self::DPS => "DPS",
Self::DTW => "DTW",
Self::DUB => "DUB",
Self::DUR => "DUR",
Self::DUS => "DUS",
Self::DXB => "DXB",
Self::EBB => "EBB",
Self::EBL => "EBL",
Self::EVN => "EVN",
Self::EWR => "EWR",
Self::EZE => "EZE",
Self::FCO => "FCO",
Self::FIH => "FIH",
Self::FLN => "FLN",
Self::FOC => "FOC",
Self::FOR => "FOR",
Self::FRA => "FRA",
Self::FRU => "FRU",
Self::FSD => "FSD",
Self::FUK => "FUK",
Self::FUO => "FUO",
Self::GBE => "GBE",
Self::GDL => "GDL",
Self::GEO => "GEO",
Self::GIG => "GIG",
Self::GND => "GND",
Self::GOT => "GOT",
Self::GRU => "GRU",
Self::GUA => "GUA",
Self::GUM => "GUM",
Self::GVA => "GVA",
Self::GYD => "GYD",
Self::GYE => "GYE",
Self::GYN => "GYN",
Self::HAK => "HAK",
Self::HAM => "HAM",
Self::HAN => "HAN",
Self::HBA => "HBA",
Self::HEL => "HEL",
Self::HFA => "HFA",
Self::HGH => "HGH",
Self::HKG => "HKG",
Self::HNL => "HNL",
Self::HRE => "HRE",
Self::HYD => "HYD",
Self::HYN => "HYN",
Self::IAD => "IAD",
Self::IAH => "IAH",
Self::ICN => "ICN",
Self::IND => "IND",
Self::ISB => "ISB",
Self::IST => "IST",
Self::ISU => "ISU",
Self::IXC => "IXC",
Self::JAX => "JAX",
Self::JDO => "JDO",
Self::JED => "JED",
Self::JHB => "JHB",
Self::JIB => "JIB",
Self::JNB => "JNB",
Self::JOG => "JOG",
Self::JOI => "JOI",
Self::JXG => "JXG",
Self::KBP => "KBP",
Self::KCH => "KCH",
Self::KEF => "KEF",
Self::KGL => "KGL",
Self::KHH => "KHH",
Self::KHI => "KHI",
Self::KHN => "KHN",
Self::KIN => "KIN",
Self::KIV => "KIV",
Self::KIX => "KIX",
Self::KJA => "KJA",
Self::KMG => "KMG",
Self::KNU => "KNU",
Self::KTM => "KTM",
Self::KUL => "KUL",
Self::KWE => "KWE",
Self::KWI => "KWI",
Self::LAD => "LAD",
Self::LAS => "LAS",
Self::LAX => "LAX",
Self::LCA => "LCA",
Self::LED => "LED",
Self::LHE => "LHE",
Self::LHR => "LHR",
Self::LIM => "LIM",
Self::LIS => "LIS",
Self::LLK => "LLK",
Self::LLW => "LLW",
Self::LOS => "LOS",
Self::LPB => "LPB",
Self::LUN => "LUN",
Self::LUX => "LUX",
Self::LYS => "LYS",
Self::MAA => "MAA",
Self::MAD => "MAD",
Self::MAN => "MAN",
Self::MAO => "MAO",
Self::MBA => "MBA",
Self::MCI => "MCI",
Self::MCT => "MCT",
Self::MDE => "MDE",
Self::MEL => "MEL",
Self::MEM => "MEM",
Self::MEX => "MEX",
Self::MFM => "MFM",
Self::MIA => "MIA",
Self::MLA => "MLA",
Self::MLE => "MLE",
Self::MLG => "MLG",
Self::MNL => "MNL",
Self::MPM => "MPM",
Self::MRS => "MRS",
Self::MRU => "MRU",
Self::MSP => "MSP",
Self::MSQ => "MSQ",
Self::MUC => "MUC",
Self::MXP => "MXP",
Self::NAG => "NAG",
Self::NBO => "NBO",
Self::NJF => "NJF",
Self::NOU => "NOU",
Self::NQN => "NQN",
Self::NQZ => "NQZ",
Self::NRT => "NRT",
Self::NVT => "NVT",
Self::OKA => "OKA",
Self::OKC => "OKC",
Self::OMA => "OMA",
Self::ORD => "ORD",
Self::ORF => "ORF",
Self::ORN => "ORN",
Self::OSL => "OSL",
Self::OTP => "OTP",
Self::OUA => "OUA",
Self::PAT => "PAT",
Self::PBH => "PBH",
Self::PBM => "PBM",
Self::PDX => "PDX",
Self::PER => "PER",
Self::PHL => "PHL",
Self::PHX => "PHX",
Self::PIT => "PIT",
Self::PKX => "PKX",
Self::PMO => "PMO",
Self::PMW => "PMW",
Self::PNH => "PNH",
Self::POA => "POA",
Self::POS => "POS",
Self::PPT => "PPT",
Self::PRG => "PRG",
Self::PTY => "PTY",
Self::QRO => "QRO",
Self::QWJ => "QWJ",
Self::RAO => "RAO",
Self::RDU => "RDU",
Self::REC => "REC",
Self::RIC => "RIC",
Self::RIX => "RIX",
Self::RUH => "RUH",
Self::RUN => "RUN",
Self::SAN => "SAN",
Self::SAP => "SAP",
Self::SAT => "SAT",
Self::SCL => "SCL",
Self::SDQ => "SDQ",
Self::SEA => "SEA",
Self::SFO => "SFO",
Self::SGN => "SGN",
Self::SHA => "SHA",
Self::SIN => "SIN",
Self::SJC => "SJC",
Self::SJK => "SJK",
Self::SJO => "SJO",
Self::SJP => "SJP",
Self::SJU => "SJU",
Self::SJW => "SJW",
Self::SKG => "SKG",
Self::SKP => "SKP",
Self::SLC => "SLC",
Self::SMF => "SMF",
Self::SOD => "SOD",
Self::SOF => "SOF",
Self::SSA => "SSA",
Self::STI => "STI",
Self::STL => "STL",
Self::STR => "STR",
Self::SUV => "SUV",
Self::SYD => "SYD",
Self::SZX => "SZX",
Self::TAO => "TAO",
Self::TBS => "TBS",
Self::TEN => "TEN",
Self::TGU => "TGU",
Self::TIA => "TIA",
Self::TLH => "TLH",
Self::TLL => "TLL",
Self::TLV => "TLV",
Self::TNA => "TNA",
Self::TNR => "TNR",
Self::TPA => "TPA",
Self::TPE => "TPE",
Self::TUN => "TUN",
Self::TXL => "TXL",
Self::TYN => "TYN",
Self::UDI => "UDI",
Self::UIO => "UIO",
Self::ULN => "ULN",
Self::URT => "URT",
Self::VCP => "VCP",
Self::VIE => "VIE",
Self::VIX => "VIX",
Self::VNO => "VNO",
Self::VTE => "VTE",
Self::WAW => "WAW",
Self::WDH => "WDH",
Self::WLG => "WLG",
Self::WRO => "WRO",
Self::XAP => "XAP",
Self::XFN => "XFN",
Self::XIY => "XIY",
Self::XNH => "XNH",
Self::YHZ => "YHZ",
Self::YOW => "YOW",
Self::YUL => "YUL",
Self::YVR => "YVR",
Self::YWG => "YWG",
Self::YXE => "YXE",
Self::YYC => "YYC",
Self::YYZ => "YYZ",
Self::ZAG => "ZAG",
Self::ZDM => "ZDM",
Self::ZRH => "ZRH",
}
}
#[inline]
pub const fn name(&self) -> &'static str {
match self {
Self::AAE => "Annaba, Algeria",
Self::ABJ => "Abidjan, Ivory Coast",
Self::ABQ => "Albuquerque, NM, United States",
Self::ACC => "Accra, Ghana",
Self::ADB => "Izmir, Turkey",
Self::ADD => "Addis Ababa, Ethiopia",
Self::ADL => "Adelaide, SA, Australia",
Self::AGR => "Agra, India",
Self::AKL => "Auckland, New Zealand",
Self::AKX => "Aktobe, Kazakhstan",
Self::ALA => "Almaty, Kazakhstan",
Self::ALG => "Algiers, Algeria",
Self::AMD => "Ahmedabad, India",
Self::AMM => "Amman, Jordan",
Self::AMS => "Amsterdam, Netherlands",
Self::ANC => "Anchorage, AK, United States",
Self::ARI => "Arica, Chile",
Self::ARN => "Stockholm, Sweden",
Self::ARU => "Aracatuba, Brazil",
Self::ASK => "Yamoussoukro, Ivory Coast",
Self::ASU => "Asunción, Paraguay",
Self::ATH => "Athens, Greece",
Self::ATL => "Atlanta, GA, United States",
Self::AUS => "Austin, TX, United States",
Self::BAH => "Manama, Bahrain",
Self::BAQ => "Barranquilla, Colombia",
Self::BCN => "Barcelona, Spain",
Self::BEG => "Belgrade, Serbia",
Self::BEL => "Belém, Brazil",
Self::BEY => "Beirut, Lebanon",
Self::BGI => "Bridgetown, Barbados",
Self::BGR => "Bangor, ME, United States",
Self::BGW => "Baghdad, Iraq",
Self::BHY => "Beihai, China",
Self::BKK => "Bangkok, Thailand",
Self::BLR => "Bangalore, India",
Self::BNA => "Nashville, United States",
Self::BNE => "Brisbane, QLD, Australia",
Self::BNU => "Blumenau, Brazil",
Self::BOD => "Bordeaux, France",
Self::BOG => "Bogota, Colombia",
Self::BOM => "Mumbai, India",
Self::BOS => "Boston, MA, United States",
Self::BRU => "Brussels, Belgium",
Self::BSB => "Brasilia, Brazil",
Self::BSR => "Basra, Iraq",
Self::BTS => "Bratislava, Slovakia",
Self::BUD => "Budapest, Hungary",
Self::BUF => "Buffalo, NY, United States",
Self::BWN => "Bandar Seri Begawan, Brunei",
Self::CAI => "Cairo, Egypt",
Self::CAN => "Guangzhou, China",
Self::CAW => "Campos dos Goytacazes, Brazil",
Self::CBR => "Canberra, ACT, Australia",
Self::CCP => "Concepción, Chile",
Self::CCU => "Kolkata, India",
Self::CDG => "Paris, France",
Self::CEB => "Cebu, Philippines",
Self::CFC => "Cacador, Brazil",
Self::CGB => "Cuiaba, Brazil",
Self::CGD => "Changde, China",
Self::CGK => "Jakarta, Indonesia",
Self::CGO => "Zhengzhou, China",
Self::CGP => "Chittagong, Bangladesh",
Self::CGY => "Cagayan de Oro, Philippines",
Self::CHC => "Christchurch, New Zealand",
Self::CJB => "Coimbatore, India",
Self::CKG => "Chongqing, China",
Self::CLE => "Cleveland, OH, United States",
Self::CLO => "Cali, Colombia",
Self::CLT => "Charlotte, NC, United States",
Self::CMB => "Colombo, Sri Lanka",
Self::CMH => "Columbus, OH, United States",
Self::CNF => "Belo Horizonte, Brazil",
Self::CNI => "Cloud Network Interconnect (CNI)",
Self::CNN => "Kannur, India",
Self::CNX => "Chiang Mai, Thailand",
Self::COK => "Kochi, India",
Self::COR => "Córdoba, Argentina",
Self::CPH => "Copenhagen, Denmark",
Self::CPT => "Cape Town, South Africa",
Self::CRK => "Tarlac City, Philippines",
Self::CSX => "Changsha, China",
Self::CTU => "Chengdu, China",
Self::CWB => "Curitiba, Brazil",
Self::CZL => "Constantine, Algeria",
Self::CZX => "Changzhou, China",
Self::DAC => "Dhaka, Bangladesh",
Self::DAD => "Da Nang, Vietnam",
Self::DAR => "Dar es Salaam, Tanzania",
Self::DEL => "New Delhi, India",
Self::DEN => "Denver, CO, United States",
Self::DEX => "Digital Experience Monitoring (DEX)",
Self::DFW => "Dallas, TX, United States",
Self::DKR => "Dakar, Senegal",
Self::DLC => "Dalian, China",
Self::DLP => "Data Loss Prevention (DLP)",
Self::DME => "Moscow, Russia",
Self::DMM => "Dammam, Saudi Arabia",
Self::DOH => "Doha, Qatar",
Self::DPS => "Denpasar, Indonesia",
Self::DTW => "Detroit, MI, United States",
Self::DUB => "Dublin, Ireland",
Self::DUR => "Durban, South Africa",
Self::DUS => "Düsseldorf, Germany",
Self::DXB => "Dubai, United Arab Emirates",
Self::EBB => "Kampala, Uganda",
Self::EBL => "Erbil, Iraq",
Self::EVN => "Yerevan, Armenia",
Self::EWR => "Newark, NJ, United States",
Self::EZE => "Buenos Aires, Argentina",
Self::FCO => "Rome, Italy",
Self::FIH => "Kinshasa, DR Congo",
Self::FLN => "Florianopolis, Brazil",
Self::FOC => "Fuzhou, China",
Self::FOR => "Fortaleza, Brazil",
Self::FRA => "Frankfurt, Germany",
Self::FRU => "Bishkek, Kyrgyzstan",
Self::FSD => "Sioux Falls, SD, United States",
Self::FUK => "Fukuoka, Japan",
Self::FUO => "Foshan, China",
Self::GBE => "Gaborone, Botswana",
Self::GDL => "Guadalajara, Mexico",
Self::GEO => "Georgetown, Guyana",
Self::GIG => "Rio de Janeiro, Brazil",
Self::GND => "St. George's, Grenada",
Self::GOT => "Gothenburg, Sweden",
Self::GRU => "São Paulo, Brazil",
Self::GUA => "Guatemala City, Guatemala",
Self::GUM => "Hagatna, Guam",
Self::GVA => "Geneva, Switzerland",
Self::GYD => "Baku, Azerbaijan",
Self::GYE => "Guayaquil, Ecuador",
Self::GYN => "Goiania, Brazil",
Self::HAK => "Chengmai, China",
Self::HAM => "Hamburg, Germany",
Self::HAN => "Hanoi, Vietnam",
Self::HBA => "Hobart, Australia",
Self::HEL => "Helsinki, Finland",
Self::HFA => "Haifa, Israel",
Self::HGH => "Shaoxing, China",
Self::HKG => "Hong Kong",
Self::HNL => "Honolulu, HI, United States",
Self::HRE => "Harare, Zimbabwe",
Self::HYD => "Hyderabad, India",
Self::HYN => "Taizhou, China",
Self::IAD => "Ashburn, VA, United States",
Self::IAH => "Houston, TX, United States",
Self::ICN => "Seoul, South Korea",
Self::IND => "Indianapolis, IN, United States",
Self::ISB => "Islamabad, Pakistan",
Self::IST => "Istanbul, Turkey",
Self::ISU => "Sulaymaniyah, Iraq",
Self::IXC => "Chandigarh, India",
Self::JAX => "Jacksonville, FL, United States",
Self::JDO => "Juazeiro do Norte, Brazil",
Self::JED => "Jeddah, Saudi Arabia",
Self::JHB => "Johor Bahru, Malaysia -Â (JHB)",
Self::JIB => "Djibouti, Djibouti",
Self::JNB => "Johannesburg, South Africa",
Self::JOG => "Yogyakarta, Indonesia",
Self::JOI => "Joinville, Brazil",
Self::JXG => "Jiaxing, China",
Self::KBP => "Kyiv, Ukraine",
Self::KCH => "Kuching, Malaysia",
Self::KEF => "ReykjavÃk, Iceland",
Self::KGL => "Kigali, Rwanda",
Self::KHH => "Kaohsiung City, Taiwan",
Self::KHI => "Karachi, Pakistan",
Self::KHN => "Nanchang, China",
Self::KIN => "Kingston, Jamaica",
Self::KIV => "Chișinău, Moldova",
Self::KIX => "Osaka, Japan",
Self::KJA => "Krasnoyarsk, Russia",
Self::KMG => "Kunming, China",
Self::KNU => "Kanpur, India",
Self::KTM => "Kathmandu, Nepal",
Self::KUL => "Kuala Lumpur, Malaysia",
Self::KWE => "Guiyang, China",
Self::KWI => "Kuwait City, Kuwait",
Self::LAD => "Luanda, Angola",
Self::LAS => "Las Vegas, NV, United States",
Self::LAX => "Los Angeles, CA, United States",
Self::LCA => "Nicosia, Cyprus",
Self::LED => "Saint Petersburg, Russia",
Self::LHE => "Lahore, Pakistan",
Self::LHR => "London, United Kingdom",
Self::LIM => "Lima, Peru",
Self::LIS => "Lisbon, Portugal",
Self::LLK => "Astara, Azerbaijan",
Self::LLW => "Lilongwe, Malawi",
Self::LOS => "Lagos, Nigeria",
Self::LPB => "La Paz, Bolivia",
Self::LUN => "Lusaka, Zambia",
Self::LUX => "Luxembourg City, Luxembourg",
Self::LYS => "Lyon, France",
Self::MAA => "Chennai, India",
Self::MAD => "Madrid, Spain",
Self::MAN => "Manchester, United Kingdom",
Self::MAO => "Manaus, Brazil",
Self::MBA => "Mombasa, Kenya",
Self::MCI => "Kansas City, MO, United States",
Self::MCT => "Muscat, Oman",
Self::MDE => "MedellÃn, Colombia",
Self::MEL => "Melbourne, VIC, Australia",
Self::MEM => "Memphis, TN, United States",
Self::MEX => "Mexico City, Mexico",
Self::MFM => "Macau",
Self::MIA => "Miami, FL, United States",
Self::MLA => "Valletta, Malta",
Self::MLE => "Male, Maldives",
Self::MLG => "Malang, Indonesia",
Self::MNL => "Manila, Philippines",
Self::MPM => "Maputo, Mozambique",
Self::MRS => "Marseille, France",
Self::MRU => "Port Louis, Mauritius",
Self::MSP => "Minneapolis, MN, United States",
Self::MSQ => "Minsk, Belarus",
Self::MUC => "Munich, Germany",
Self::MXP => "Milan, Italy",
Self::NAG => "Nagpur, India",
Self::NBO => "Nairobi, Kenya",
Self::NJF => "Najaf, Iraq",
Self::NOU => "Noumea, New Caledonia",
Self::NQN => "Neuquen, Argentina",
Self::NQZ => "Astana, Kazakhstan",
Self::NRT => "Tokyo, Japan",
Self::NVT => "Timbo, Brazil",
Self::OKA => "Naha, Japan",
Self::OKC => "Oklahoma City, OK, United States",
Self::OMA => "Omaha, NE, United States",
Self::ORD => "Chicago, IL, United States",
Self::ORF => "Norfolk, VA, United States",
Self::ORN => "Oran, Algeria",
Self::OSL => "Oslo, Norway",
Self::OTP => "Bucharest, Romania",
Self::OUA => "Ouagadougou, Burkina Faso",
Self::PAT => "Patna, India",
Self::PBH => "Thimphu, Bhutan",
Self::PBM => "Paramaribo, Suriname",
Self::PDX => "Portland, OR, United States",
Self::PER => "Perth, WA, Australia",
Self::PHL => "Philadelphia, United States",
Self::PHX => "Phoenix, AZ, United States",
Self::PIT => "Pittsburgh, PA, United States",
Self::PKX => "Langfang, China",
Self::PMO => "Palermo, Italy",
Self::PMW => "Palmas, Brazil",
Self::PNH => "Phnom Penh, Cambodia",
Self::POA => "Porto Alegre, Brazil",
Self::POS => "Port of Spain, Trinidad and Tobago",
Self::PPT => "Tahiti, French Polynesia",
Self::PRG => "Prague, Czech Republic",
Self::PTY => "Panama City, Panama",
Self::QRO => "Queretaro, MX, Mexico",
Self::QWJ => "Americana, Brazil",
Self::RAO => "Ribeirao Preto, Brazil",
Self::RDU => "Durham, NC, United States",
Self::REC => "Recife, Brazil",
Self::RIC => "Richmond, VA, United States",
Self::RIX => "Riga, Latvia",
Self::RUH => "Riyadh, Saudi Arabia",
Self::RUN => "Saint-Denis, Réunion",
Self::SAN => "San Diego, CA, United States",
Self::SAP => "San Pedro Sula, Honduras",
Self::SAT => "San Antonio, TX, United States",
Self::SCL => "Santiago, Chile",
Self::SDQ => "Santo Domingo, Dominican Republic",
Self::SEA => "Seattle, WA, United States",
Self::SFO => "San Francisco, CA, United States",
Self::SGN => "Ho Chi Minh City, Vietnam",
Self::SHA => "Shanghai, China",
Self::SIN => "Singapore, Singapore",
Self::SJC => "San Jose, CA, United States",
Self::SJK => "São José dos Campos, Brazil",
Self::SJO => "San José, Costa Rica",
Self::SJP => "São José do Rio Preto, Brazil",
Self::SJU => "San Juan, Puerto Rico",
Self::SJW => "Shijiazhuang, China",
Self::SKG => "Thessaloniki, Greece",
Self::SKP => "Skopje, North Macedonia",
Self::SLC => "Salt Lake City, UT, United States",
Self::SMF => "Sacramento, CA, United States",
Self::SOD => "Sorocaba, Brazil",
Self::SOF => "Sofia, Bulgaria",
Self::SSA => "Salvador, Brazil",
Self::STI => "Santiago de los Caballeros, Dominican Republic",
Self::STL => "St. Louis, MO, United States",
Self::STR => "Stuttgart, Germany",
Self::SUV => "Suva, Fiji",
Self::SYD => "Sydney, NSW, Australia",
Self::SZX => "Shenzhen, China",
Self::TAO => "Qingdao, China",
Self::TBS => "Tbilisi, Georgia",
Self::TEN => "Tongren, China",
Self::TGU => "Tegucigalpa, Honduras",
Self::TIA => "Tirana, Albania",
Self::TLH => "Tallahassee, FL, United States",
Self::TLL => "Tallinn, Estonia",
Self::TLV => "Tel Aviv, Israel",
Self::TNA => "Zibo, China",
Self::TNR => "Antananarivo, Madagascar",
Self::TPA => "Tampa, FL, United States",
Self::TPE => "Taipei",
Self::TUN => "Tunis, Tunisia",
Self::TXL => "Berlin, Germany",
Self::TYN => "Yangquan, China",
Self::UDI => "Uberlandia, Brazil",
Self::UIO => "Quito, Ecuador",
Self::ULN => "Ulaanbaatar, Mongolia",
Self::URT => "Surat Thani, Thailand",
Self::VCP => "Campinas, Brazil",
Self::VIE => "Vienna, Austria",
Self::VIX => "Vitoria, Brazil",
Self::VNO => "Vilnius, Lithuania",
Self::VTE => "Vientiane, Laos",
Self::WAW => "Warsaw, Poland",
Self::WDH => "Windhoek, Namibia",
Self::WLG => "WLG",
Self::WRO => "Wroclaw, Poland",
Self::XAP => "Chapeco, Brazil",
Self::XFN => "Xiangyang, China",
Self::XIY => "Baoji, China",
Self::XNH => "Nasiriyah, Iraq",
Self::YHZ => "Halifax, Canada",
Self::YOW => "Ottawa, Canada",
Self::YUL => "Montréal, QC, Canada",
Self::YVR => "Vancouver, BC, Canada",
Self::YWG => "Winnipeg, MB, Canada",
Self::YXE => "Saskatoon, SK, Canada",
Self::YYC => "Calgary, AB, Canada",
Self::YYZ => "Toronto, ON, Canada",
Self::ZAG => "Zagreb, Croatia",
Self::ZDM => "Ramallah",
Self::ZRH => "Zurich, Switzerland",
}
}
#[inline]
pub const fn location_hint(&self) -> Option<LocationHint> {
match self {
Self::AAE => Some(LocationHint::Afr),
Self::ABJ => None,
Self::ABQ => Some(LocationHint::WNam),
Self::ACC => Some(LocationHint::WEur),
Self::ADB => Some(LocationHint::EEur),
Self::ADD => Some(LocationHint::Afr),
Self::ADL => Some(LocationHint::Oc),
Self::AGR => Some(LocationHint::Apac),
Self::AKL => Some(LocationHint::Oc),
Self::AKX => Some(LocationHint::Me),
Self::ALA => Some(LocationHint::EEur),
Self::ALG => Some(LocationHint::Afr),
Self::AMD => Some(LocationHint::Apac),
Self::AMM => Some(LocationHint::Afr),
Self::AMS => Some(LocationHint::Afr),
Self::ANC => None,
Self::ARI => None,
Self::ARN => Some(LocationHint::EEur),
Self::ARU => None,
Self::ASK => Some(LocationHint::Afr),
Self::ASU => Some(LocationHint::Sam),
Self::ATH => Some(LocationHint::Me),
Self::ATL => Some(LocationHint::ENam),
Self::AUS => Some(LocationHint::WNam),
Self::BAH => Some(LocationHint::Apac),
Self::BAQ => Some(LocationHint::ENam),
Self::BCN => Some(LocationHint::WEur),
Self::BEG => Some(LocationHint::EEur),
Self::BEL => Some(LocationHint::ENam),
Self::BEY => Some(LocationHint::Me),
Self::BGI => Some(LocationHint::Sam),
Self::BGR => Some(LocationHint::Sam),
Self::BGW => Some(LocationHint::Me),
Self::BHY => None,
Self::BKK => Some(LocationHint::Apac),
Self::BLR => Some(LocationHint::Apac),
Self::BNA => Some(LocationHint::Sam),
Self::BNE => Some(LocationHint::Oc),
Self::BNU => Some(LocationHint::Sam),
Self::BOD => Some(LocationHint::Afr),
Self::BOG => Some(LocationHint::ENam),
Self::BOM => Some(LocationHint::Apac),
Self::BOS => Some(LocationHint::ENam),
Self::BRU => Some(LocationHint::Afr),
Self::BSB => Some(LocationHint::Sam),
Self::BSR => Some(LocationHint::Me),
Self::BTS => Some(LocationHint::Me),
Self::BUD => Some(LocationHint::Me),
Self::BUF => Some(LocationHint::ENam),
Self::BWN => None,
Self::CAI => Some(LocationHint::WEur),
Self::CAN => None,
Self::CAW => None,
Self::CBR => Some(LocationHint::Oc),
Self::CCP => Some(LocationHint::ENam),
Self::CCU => Some(LocationHint::Apac),
Self::CDG => Some(LocationHint::Afr),
Self::CEB => Some(LocationHint::Apac),
Self::CFC => Some(LocationHint::Sam),
Self::CGB => Some(LocationHint::Sam),
Self::CGD => None,
Self::CGK => Some(LocationHint::Apac),
Self::CGO => None,
Self::CGP => Some(LocationHint::Apac),
Self::CGY => Some(LocationHint::Apac),
Self::CHC => Some(LocationHint::Oc),
Self::CJB => Some(LocationHint::Apac),
Self::CKG => None,
Self::CLE => Some(LocationHint::ENam),
Self::CLO => Some(LocationHint::Sam),
Self::CLT => Some(LocationHint::ENam),
Self::CMB => Some(LocationHint::Oc),
Self::CMH => Some(LocationHint::Sam),
Self::CNF => Some(LocationHint::ENam),
Self::CNI => None,
Self::CNN => Some(LocationHint::Apac),
Self::CNX => Some(LocationHint::Apac),
Self::COK => None,
Self::COR => Some(LocationHint::ENam),
Self::CPH => Some(LocationHint::Afr),
Self::CPT => Some(LocationHint::Afr),
Self::CRK => Some(LocationHint::Apac),
Self::CSX => None,
Self::CTU => None,
Self::CWB => Some(LocationHint::Sam),
Self::CZL => Some(LocationHint::Afr),
Self::CZX => None,
Self::DAC => Some(LocationHint::Apac),
Self::DAD => Some(LocationHint::Apac),
Self::DAR => Some(LocationHint::WEur),
Self::DEL => Some(LocationHint::Apac),
Self::DEN => Some(LocationHint::WNam),
Self::DEX => None,
Self::DFW => Some(LocationHint::WNam),
Self::DKR => Some(LocationHint::Afr),
Self::DLC => None,
Self::DLP => None,
Self::DME => Some(LocationHint::Me),
Self::DMM => Some(LocationHint::Me),
Self::DOH => Some(LocationHint::WEur),
Self::DPS => Some(LocationHint::Apac),
Self::DTW => Some(LocationHint::ENam),
Self::DUB => Some(LocationHint::Afr),
Self::DUR => Some(LocationHint::WEur),
Self::DUS => Some(LocationHint::Afr),
Self::DXB => Some(LocationHint::Apac),
Self::EBB => None,
Self::EBL => Some(LocationHint::Me),
Self::EVN => Some(LocationHint::WEur),
Self::EWR => Some(LocationHint::ENam),
Self::EZE => Some(LocationHint::ENam),
Self::FCO => Some(LocationHint::EEur),
Self::FIH => None,
Self::FLN => Some(LocationHint::Sam),
Self::FOC => None,
Self::FOR => Some(LocationHint::Sam),
Self::FRA => Some(LocationHint::Me),
Self::FRU => Some(LocationHint::EEur),
Self::FSD => Some(LocationHint::ENam),
Self::FUK => Some(LocationHint::Apac),
Self::FUO => None,
Self::GBE => Some(LocationHint::Afr),
Self::GDL => Some(LocationHint::ENam),
Self::GEO => Some(LocationHint::Sam),
Self::GIG => Some(LocationHint::Sam),
Self::GND => None,
Self::GOT => Some(LocationHint::WEur),
Self::GRU => Some(LocationHint::ENam),
Self::GUA => Some(LocationHint::ENam),
Self::GUM => Some(LocationHint::WNam),
Self::GVA => Some(LocationHint::EEur),
Self::GYD => Some(LocationHint::Afr),
Self::GYE => Some(LocationHint::ENam),
Self::GYN => Some(LocationHint::Sam),
Self::HAK => None,
Self::HAM => Some(LocationHint::Me),
Self::HAN => Some(LocationHint::Apac),
Self::HBA => Some(LocationHint::Oc),
Self::HEL => Some(LocationHint::Me),
Self::HFA => None,
Self::HGH => None,
Self::HKG => Some(LocationHint::Apac),
Self::HNL => Some(LocationHint::WNam),
Self::HRE => Some(LocationHint::Afr),
Self::HYD => Some(LocationHint::Apac),
Self::HYN => None,
Self::IAD => Some(LocationHint::ENam),
Self::IAH => Some(LocationHint::ENam),
Self::ICN => Some(LocationHint::Apac),
Self::IND => Some(LocationHint::ENam),
Self::ISB => Some(LocationHint::Apac),
Self::IST => Some(LocationHint::EEur),
Self::ISU => Some(LocationHint::EEur),
Self::IXC => Some(LocationHint::Apac),
Self::JAX => Some(LocationHint::ENam),
Self::JDO => Some(LocationHint::ENam),
Self::JED => Some(LocationHint::WEur),
Self::JHB => None,
Self::JIB => Some(LocationHint::WEur),
Self::JNB => Some(LocationHint::WEur),
Self::JOG => None,
Self::JOI => Some(LocationHint::ENam),
Self::JXG => None,
Self::KBP => Some(LocationHint::EEur),
Self::KCH => Some(LocationHint::Apac),
Self::KEF => Some(LocationHint::WEur),
Self::KGL => Some(LocationHint::Afr),
Self::KHH => Some(LocationHint::Apac),
Self::KHI => Some(LocationHint::Apac),
Self::KHN => None,
Self::KIN => Some(LocationHint::ENam),
Self::KIV => Some(LocationHint::EEur),
Self::KIX => Some(LocationHint::Apac),
Self::KJA => Some(LocationHint::EEur),
Self::KMG => None,
Self::KNU => Some(LocationHint::Apac),
Self::KTM => Some(LocationHint::Apac),
Self::KUL => Some(LocationHint::Apac),
Self::KWE => None,
Self::KWI => Some(LocationHint::WEur),
Self::LAD => Some(LocationHint::Afr),
Self::LAS => None,
Self::LAX => Some(LocationHint::WNam),
Self::LCA => Some(LocationHint::WEur),
Self::LED => Some(LocationHint::Me),
Self::LHE => Some(LocationHint::Apac),
Self::LHR => Some(LocationHint::Afr),
Self::LIM => Some(LocationHint::ENam),
Self::LIS => Some(LocationHint::WEur),
Self::LLK => Some(LocationHint::Afr),
Self::LLW => None,
Self::LOS => Some(LocationHint::WEur),
Self::LPB => None,
Self::LUN => Some(LocationHint::WEur),
Self::LUX => Some(LocationHint::Afr),
Self::LYS => Some(LocationHint::Afr),
Self::MAA => Some(LocationHint::Apac),
Self::MAD => Some(LocationHint::WEur),
Self::MAN => Some(LocationHint::WEur),
Self::MAO => Some(LocationHint::ENam),
Self::MBA => Some(LocationHint::EEur),
Self::MCI => Some(LocationHint::Sam),
Self::MCT => Some(LocationHint::Me),
Self::MDE => Some(LocationHint::ENam),
Self::MEL => Some(LocationHint::Oc),
Self::MEM => Some(LocationHint::ENam),
Self::MEX => Some(LocationHint::ENam),
Self::MFM => Some(LocationHint::Apac),
Self::MIA => Some(LocationHint::ENam),
Self::MLA => Some(LocationHint::Afr),
Self::MLE => Some(LocationHint::Apac),
Self::MLG => Some(LocationHint::Apac),
Self::MNL => Some(LocationHint::Apac),
Self::MPM => Some(LocationHint::Afr),
Self::MRS => Some(LocationHint::WEur),
Self::MRU => Some(LocationHint::Apac),
Self::MSP => Some(LocationHint::ENam),
Self::MSQ => Some(LocationHint::Me),
Self::MUC => Some(LocationHint::Me),
Self::MXP => Some(LocationHint::Me),
Self::NAG => None,
Self::NBO => Some(LocationHint::WEur),
Self::NJF => Some(LocationHint::EEur),
Self::NOU => Some(LocationHint::Oc),
Self::NQN => Some(LocationHint::ENam),
Self::NQZ => None,
Self::NRT => Some(LocationHint::Apac),
Self::NVT => Some(LocationHint::ENam),
Self::OKA => Some(LocationHint::Apac),
Self::OKC => Some(LocationHint::WNam),
Self::OMA => Some(LocationHint::WNam),
Self::ORD => Some(LocationHint::Sam),
Self::ORF => None,
Self::ORN => Some(LocationHint::Afr),
Self::OSL => Some(LocationHint::Me),
Self::OTP => Some(LocationHint::EEur),
Self::OUA => None,
Self::PAT => Some(LocationHint::Apac),
Self::PBH => Some(LocationHint::Apac),
Self::PBM => Some(LocationHint::Sam),
Self::PDX => Some(LocationHint::WNam),
Self::PER => Some(LocationHint::Oc),
Self::PHL => Some(LocationHint::Sam),
Self::PHX => Some(LocationHint::WNam),
Self::PIT => Some(LocationHint::Sam),
Self::PKX => None,
Self::PMO => Some(LocationHint::Me),
Self::PMW => Some(LocationHint::Sam),
Self::PNH => Some(LocationHint::Apac),
Self::POA => Some(LocationHint::ENam),
Self::POS => Some(LocationHint::Sam),
Self::PPT => Some(LocationHint::WNam),
Self::PRG => Some(LocationHint::Me),
Self::PTY => Some(LocationHint::Sam),
Self::QRO => Some(LocationHint::WNam),
Self::QWJ => Some(LocationHint::Sam),
Self::RAO => Some(LocationHint::ENam),
Self::RDU => Some(LocationHint::Sam),
Self::REC => Some(LocationHint::ENam),
Self::RIC => Some(LocationHint::Sam),
Self::RIX => Some(LocationHint::Me),
Self::RUH => Some(LocationHint::Me),
Self::RUN => Some(LocationHint::WEur),
Self::SAN => Some(LocationHint::WNam),
Self::SAP => Some(LocationHint::Sam),
Self::SAT => Some(LocationHint::WNam),
Self::SCL => Some(LocationHint::ENam),
Self::SDQ => Some(LocationHint::ENam),
Self::SEA => Some(LocationHint::WNam),
Self::SFO => None,
Self::SGN => Some(LocationHint::Apac),
Self::SHA => None,
Self::SIN => Some(LocationHint::Apac),
Self::SJC => Some(LocationHint::WNam),
Self::SJK => Some(LocationHint::ENam),
Self::SJO => Some(LocationHint::ENam),
Self::SJP => Some(LocationHint::ENam),
Self::SJU => Some(LocationHint::Sam),
Self::SJW => None,
Self::SKG => Some(LocationHint::EEur),
Self::SKP => None,
Self::SLC => Some(LocationHint::WNam),
Self::SMF => Some(LocationHint::WNam),
Self::SOD => Some(LocationHint::Sam),
Self::SOF => Some(LocationHint::Me),
Self::SSA => Some(LocationHint::Sam),
Self::STI => Some(LocationHint::ENam),
Self::STL => Some(LocationHint::ENam),
Self::STR => Some(LocationHint::EEur),
Self::SUV => Some(LocationHint::Oc),
Self::SYD => Some(LocationHint::Oc),
Self::SZX => None,
Self::TAO => None,
Self::TBS => Some(LocationHint::EEur),
Self::TEN => None,
Self::TGU => Some(LocationHint::ENam),
Self::TIA => Some(LocationHint::Me),
Self::TLH => Some(LocationHint::Sam),
Self::TLL => Some(LocationHint::Me),
Self::TLV => Some(LocationHint::EEur),
Self::TNA => None,
Self::TNR => Some(LocationHint::WEur),
Self::TPA => Some(LocationHint::Sam),
Self::TPE => Some(LocationHint::Apac),
Self::TUN => Some(LocationHint::WEur),
Self::TXL => Some(LocationHint::EEur),
Self::TYN => None,
Self::UDI => Some(LocationHint::WEur),
Self::UIO => Some(LocationHint::ENam),
Self::ULN => Some(LocationHint::EEur),
Self::URT => Some(LocationHint::Apac),
Self::VCP => Some(LocationHint::ENam),
Self::VIE => Some(LocationHint::EEur),
Self::VIX => None,
Self::VNO => Some(LocationHint::EEur),
Self::VTE => Some(LocationHint::Apac),
Self::WAW => Some(LocationHint::EEur),
Self::WDH => None,
Self::WLG => Some(LocationHint::Oc),
Self::WRO => Some(LocationHint::EEur),
Self::XAP => Some(LocationHint::ENam),
Self::XFN => None,
Self::XIY => None,
Self::XNH => Some(LocationHint::EEur),
Self::YHZ => Some(LocationHint::ENam),
Self::YOW => Some(LocationHint::Sam),
Self::YUL => Some(LocationHint::ENam),
Self::YVR => Some(LocationHint::WNam),
Self::YWG => Some(LocationHint::Sam),
Self::YXE => Some(LocationHint::WNam),
Self::YYC => Some(LocationHint::WNam),
Self::YYZ => Some(LocationHint::Sam),
Self::ZAG => Some(LocationHint::Me),
Self::ZDM => Some(LocationHint::WEur),
Self::ZRH => Some(LocationHint::Me),
}
}
pub fn from_code(code: &str) -> Option<Self> {
match code {
"AAE" => Some(Self::AAE),
"ABJ" => Some(Self::ABJ),
"ABQ" => Some(Self::ABQ),
"ACC" => Some(Self::ACC),
"ADB" => Some(Self::ADB),
"ADD" => Some(Self::ADD),
"ADL" => Some(Self::ADL),
"AGR" => Some(Self::AGR),
"AKL" => Some(Self::AKL),
"AKX" => Some(Self::AKX),
"ALA" => Some(Self::ALA),
"ALG" => Some(Self::ALG),
"AMD" => Some(Self::AMD),
"AMM" => Some(Self::AMM),
"AMS" => Some(Self::AMS),
"ANC" => Some(Self::ANC),
"ARI" => Some(Self::ARI),
"ARN" => Some(Self::ARN),
"ARU" => Some(Self::ARU),
"ASK" => Some(Self::ASK),
"ASU" => Some(Self::ASU),
"ATH" => Some(Self::ATH),
"ATL" => Some(Self::ATL),
"AUS" => Some(Self::AUS),
"BAH" => Some(Self::BAH),
"BAQ" => Some(Self::BAQ),
"BCN" => Some(Self::BCN),
"BEG" => Some(Self::BEG),
"BEL" => Some(Self::BEL),
"BEY" => Some(Self::BEY),
"BGI" => Some(Self::BGI),
"BGR" => Some(Self::BGR),
"BGW" => Some(Self::BGW),
"BHY" => Some(Self::BHY),
"BKK" => Some(Self::BKK),
"BLR" => Some(Self::BLR),
"BNA" => Some(Self::BNA),
"BNE" => Some(Self::BNE),
"BNU" => Some(Self::BNU),
"BOD" => Some(Self::BOD),
"BOG" => Some(Self::BOG),
"BOM" => Some(Self::BOM),
"BOS" => Some(Self::BOS),
"BRU" => Some(Self::BRU),
"BSB" => Some(Self::BSB),
"BSR" => Some(Self::BSR),
"BTS" => Some(Self::BTS),
"BUD" => Some(Self::BUD),
"BUF" => Some(Self::BUF),
"BWN" => Some(Self::BWN),
"CAI" => Some(Self::CAI),
"CAN" => Some(Self::CAN),
"CAW" => Some(Self::CAW),
"CBR" => Some(Self::CBR),
"CCP" => Some(Self::CCP),
"CCU" => Some(Self::CCU),
"CDG" => Some(Self::CDG),
"CEB" => Some(Self::CEB),
"CFC" => Some(Self::CFC),
"CGB" => Some(Self::CGB),
"CGD" => Some(Self::CGD),
"CGK" => Some(Self::CGK),
"CGO" => Some(Self::CGO),
"CGP" => Some(Self::CGP),
"CGY" => Some(Self::CGY),
"CHC" => Some(Self::CHC),
"CJB" => Some(Self::CJB),
"CKG" => Some(Self::CKG),
"CLE" => Some(Self::CLE),
"CLO" => Some(Self::CLO),
"CLT" => Some(Self::CLT),
"CMB" => Some(Self::CMB),
"CMH" => Some(Self::CMH),
"CNF" => Some(Self::CNF),
"CNI" => Some(Self::CNI),
"CNN" => Some(Self::CNN),
"CNX" => Some(Self::CNX),
"COK" => Some(Self::COK),
"COR" => Some(Self::COR),
"CPH" => Some(Self::CPH),
"CPT" => Some(Self::CPT),
"CRK" => Some(Self::CRK),
"CSX" => Some(Self::CSX),
"CTU" => Some(Self::CTU),
"CWB" => Some(Self::CWB),
"CZL" => Some(Self::CZL),
"CZX" => Some(Self::CZX),
"DAC" => Some(Self::DAC),
"DAD" => Some(Self::DAD),
"DAR" => Some(Self::DAR),
"DEL" => Some(Self::DEL),
"DEN" => Some(Self::DEN),
"DEX" => Some(Self::DEX),
"DFW" => Some(Self::DFW),
"DKR" => Some(Self::DKR),
"DLC" => Some(Self::DLC),
"DLP" => Some(Self::DLP),
"DME" => Some(Self::DME),
"DMM" => Some(Self::DMM),
"DOH" => Some(Self::DOH),
"DPS" => Some(Self::DPS),
"DTW" => Some(Self::DTW),
"DUB" => Some(Self::DUB),
"DUR" => Some(Self::DUR),
"DUS" => Some(Self::DUS),
"DXB" => Some(Self::DXB),
"EBB" => Some(Self::EBB),
"EBL" => Some(Self::EBL),
"EVN" => Some(Self::EVN),
"EWR" => Some(Self::EWR),
"EZE" => Some(Self::EZE),
"FCO" => Some(Self::FCO),
"FIH" => Some(Self::FIH),
"FLN" => Some(Self::FLN),
"FOC" => Some(Self::FOC),
"FOR" => Some(Self::FOR),
"FRA" => Some(Self::FRA),
"FRU" => Some(Self::FRU),
"FSD" => Some(Self::FSD),
"FUK" => Some(Self::FUK),
"FUO" => Some(Self::FUO),
"GBE" => Some(Self::GBE),
"GDL" => Some(Self::GDL),
"GEO" => Some(Self::GEO),
"GIG" => Some(Self::GIG),
"GND" => Some(Self::GND),
"GOT" => Some(Self::GOT),
"GRU" => Some(Self::GRU),
"GUA" => Some(Self::GUA),
"GUM" => Some(Self::GUM),
"GVA" => Some(Self::GVA),
"GYD" => Some(Self::GYD),
"GYE" => Some(Self::GYE),
"GYN" => Some(Self::GYN),
"HAK" => Some(Self::HAK),
"HAM" => Some(Self::HAM),
"HAN" => Some(Self::HAN),
"HBA" => Some(Self::HBA),
"HEL" => Some(Self::HEL),
"HFA" => Some(Self::HFA),
"HGH" => Some(Self::HGH),
"HKG" => Some(Self::HKG),
"HNL" => Some(Self::HNL),
"HRE" => Some(Self::HRE),
"HYD" => Some(Self::HYD),
"HYN" => Some(Self::HYN),
"IAD" => Some(Self::IAD),
"IAH" => Some(Self::IAH),
"ICN" => Some(Self::ICN),
"IND" => Some(Self::IND),
"ISB" => Some(Self::ISB),
"IST" => Some(Self::IST),
"ISU" => Some(Self::ISU),
"IXC" => Some(Self::IXC),
"JAX" => Some(Self::JAX),
"JDO" => Some(Self::JDO),
"JED" => Some(Self::JED),
"JHB" => Some(Self::JHB),
"JIB" => Some(Self::JIB),
"JNB" => Some(Self::JNB),
"JOG" => Some(Self::JOG),
"JOI" => Some(Self::JOI),
"JXG" => Some(Self::JXG),
"KBP" => Some(Self::KBP),
"KCH" => Some(Self::KCH),
"KEF" => Some(Self::KEF),
"KGL" => Some(Self::KGL),
"KHH" => Some(Self::KHH),
"KHI" => Some(Self::KHI),
"KHN" => Some(Self::KHN),
"KIN" => Some(Self::KIN),
"KIV" => Some(Self::KIV),
"KIX" => Some(Self::KIX),
"KJA" => Some(Self::KJA),
"KMG" => Some(Self::KMG),
"KNU" => Some(Self::KNU),
"KTM" => Some(Self::KTM),
"KUL" => Some(Self::KUL),
"KWE" => Some(Self::KWE),
"KWI" => Some(Self::KWI),
"LAD" => Some(Self::LAD),
"LAS" => Some(Self::LAS),
"LAX" => Some(Self::LAX),
"LCA" => Some(Self::LCA),
"LED" => Some(Self::LED),
"LHE" => Some(Self::LHE),
"LHR" => Some(Self::LHR),
"LIM" => Some(Self::LIM),
"LIS" => Some(Self::LIS),
"LLK" => Some(Self::LLK),
"LLW" => Some(Self::LLW),
"LOS" => Some(Self::LOS),
"LPB" => Some(Self::LPB),
"LUN" => Some(Self::LUN),
"LUX" => Some(Self::LUX),
"LYS" => Some(Self::LYS),
"MAA" => Some(Self::MAA),
"MAD" => Some(Self::MAD),
"MAN" => Some(Self::MAN),
"MAO" => Some(Self::MAO),
"MBA" => Some(Self::MBA),
"MCI" => Some(Self::MCI),
"MCT" => Some(Self::MCT),
"MDE" => Some(Self::MDE),
"MEL" => Some(Self::MEL),
"MEM" => Some(Self::MEM),
"MEX" => Some(Self::MEX),
"MFM" => Some(Self::MFM),
"MIA" => Some(Self::MIA),
"MLA" => Some(Self::MLA),
"MLE" => Some(Self::MLE),
"MLG" => Some(Self::MLG),
"MNL" => Some(Self::MNL),
"MPM" => Some(Self::MPM),
"MRS" => Some(Self::MRS),
"MRU" => Some(Self::MRU),
"MSP" => Some(Self::MSP),
"MSQ" => Some(Self::MSQ),
"MUC" => Some(Self::MUC),
"MXP" => Some(Self::MXP),
"NAG" => Some(Self::NAG),
"NBO" => Some(Self::NBO),
"NJF" => Some(Self::NJF),
"NOU" => Some(Self::NOU),
"NQN" => Some(Self::NQN),
"NQZ" => Some(Self::NQZ),
"NRT" => Some(Self::NRT),
"NVT" => Some(Self::NVT),
"OKA" => Some(Self::OKA),
"OKC" => Some(Self::OKC),
"OMA" => Some(Self::OMA),
"ORD" => Some(Self::ORD),
"ORF" => Some(Self::ORF),
"ORN" => Some(Self::ORN),
"OSL" => Some(Self::OSL),
"OTP" => Some(Self::OTP),
"OUA" => Some(Self::OUA),
"PAT" => Some(Self::PAT),
"PBH" => Some(Self::PBH),
"PBM" => Some(Self::PBM),
"PDX" => Some(Self::PDX),
"PER" => Some(Self::PER),
"PHL" => Some(Self::PHL),
"PHX" => Some(Self::PHX),
"PIT" => Some(Self::PIT),
"PKX" => Some(Self::PKX),
"PMO" => Some(Self::PMO),
"PMW" => Some(Self::PMW),
"PNH" => Some(Self::PNH),
"POA" => Some(Self::POA),
"POS" => Some(Self::POS),
"PPT" => Some(Self::PPT),
"PRG" => Some(Self::PRG),
"PTY" => Some(Self::PTY),
"QRO" => Some(Self::QRO),
"QWJ" => Some(Self::QWJ),
"RAO" => Some(Self::RAO),
"RDU" => Some(Self::RDU),
"REC" => Some(Self::REC),
"RIC" => Some(Self::RIC),
"RIX" => Some(Self::RIX),
"RUH" => Some(Self::RUH),
"RUN" => Some(Self::RUN),
"SAN" => Some(Self::SAN),
"SAP" => Some(Self::SAP),
"SAT" => Some(Self::SAT),
"SCL" => Some(Self::SCL),
"SDQ" => Some(Self::SDQ),
"SEA" => Some(Self::SEA),
"SFO" => Some(Self::SFO),
"SGN" => Some(Self::SGN),
"SHA" => Some(Self::SHA),
"SIN" => Some(Self::SIN),
"SJC" => Some(Self::SJC),
"SJK" => Some(Self::SJK),
"SJO" => Some(Self::SJO),
"SJP" => Some(Self::SJP),
"SJU" => Some(Self::SJU),
"SJW" => Some(Self::SJW),
"SKG" => Some(Self::SKG),
"SKP" => Some(Self::SKP),
"SLC" => Some(Self::SLC),
"SMF" => Some(Self::SMF),
"SOD" => Some(Self::SOD),
"SOF" => Some(Self::SOF),
"SSA" => Some(Self::SSA),
"STI" => Some(Self::STI),
"STL" => Some(Self::STL),
"STR" => Some(Self::STR),
"SUV" => Some(Self::SUV),
"SYD" => Some(Self::SYD),
"SZX" => Some(Self::SZX),
"TAO" => Some(Self::TAO),
"TBS" => Some(Self::TBS),
"TEN" => Some(Self::TEN),
"TGU" => Some(Self::TGU),
"TIA" => Some(Self::TIA),
"TLH" => Some(Self::TLH),
"TLL" => Some(Self::TLL),
"TLV" => Some(Self::TLV),
"TNA" => Some(Self::TNA),
"TNR" => Some(Self::TNR),
"TPA" => Some(Self::TPA),
"TPE" => Some(Self::TPE),
"TUN" => Some(Self::TUN),
"TXL" => Some(Self::TXL),
"TYN" => Some(Self::TYN),
"UDI" => Some(Self::UDI),
"UIO" => Some(Self::UIO),
"ULN" => Some(Self::ULN),
"URT" => Some(Self::URT),
"VCP" => Some(Self::VCP),
"VIE" => Some(Self::VIE),
"VIX" => Some(Self::VIX),
"VNO" => Some(Self::VNO),
"VTE" => Some(Self::VTE),
"WAW" => Some(Self::WAW),
"WDH" => Some(Self::WDH),
"WLG" => Some(Self::WLG),
"WRO" => Some(Self::WRO),
"XAP" => Some(Self::XAP),
"XFN" => Some(Self::XFN),
"XIY" => Some(Self::XIY),
"XNH" => Some(Self::XNH),
"YHZ" => Some(Self::YHZ),
"YOW" => Some(Self::YOW),
"YUL" => Some(Self::YUL),
"YVR" => Some(Self::YVR),
"YWG" => Some(Self::YWG),
"YXE" => Some(Self::YXE),
"YYC" => Some(Self::YYC),
"YYZ" => Some(Self::YYZ),
"ZAG" => Some(Self::ZAG),
"ZDM" => Some(Self::ZDM),
"ZRH" => Some(Self::ZRH),
_ => None,
}
}
pub const ALL: &'static [Colo] = &[
Self::AAE,
Self::ABJ,
Self::ABQ,
Self::ACC,
Self::ADB,
Self::ADD,
Self::ADL,
Self::AGR,
Self::AKL,
Self::AKX,
Self::ALA,
Self::ALG,
Self::AMD,
Self::AMM,
Self::AMS,
Self::ANC,
Self::ARI,
Self::ARN,
Self::ARU,
Self::ASK,
Self::ASU,
Self::ATH,
Self::ATL,
Self::AUS,
Self::BAH,
Self::BAQ,
Self::BCN,
Self::BEG,
Self::BEL,
Self::BEY,
Self::BGI,
Self::BGR,
Self::BGW,
Self::BHY,
Self::BKK,
Self::BLR,
Self::BNA,
Self::BNE,
Self::BNU,
Self::BOD,
Self::BOG,
Self::BOM,
Self::BOS,
Self::BRU,
Self::BSB,
Self::BSR,
Self::BTS,
Self::BUD,
Self::BUF,
Self::BWN,
Self::CAI,
Self::CAN,
Self::CAW,
Self::CBR,
Self::CCP,
Self::CCU,
Self::CDG,
Self::CEB,
Self::CFC,
Self::CGB,
Self::CGD,
Self::CGK,
Self::CGO,
Self::CGP,
Self::CGY,
Self::CHC,
Self::CJB,
Self::CKG,
Self::CLE,
Self::CLO,
Self::CLT,
Self::CMB,
Self::CMH,
Self::CNF,
Self::CNI,
Self::CNN,
Self::CNX,
Self::COK,
Self::COR,
Self::CPH,
Self::CPT,
Self::CRK,
Self::CSX,
Self::CTU,
Self::CWB,
Self::CZL,
Self::CZX,
Self::DAC,
Self::DAD,
Self::DAR,
Self::DEL,
Self::DEN,
Self::DEX,
Self::DFW,
Self::DKR,
Self::DLC,
Self::DLP,
Self::DME,
Self::DMM,
Self::DOH,
Self::DPS,
Self::DTW,
Self::DUB,
Self::DUR,
Self::DUS,
Self::DXB,
Self::EBB,
Self::EBL,
Self::EVN,
Self::EWR,
Self::EZE,
Self::FCO,
Self::FIH,
Self::FLN,
Self::FOC,
Self::FOR,
Self::FRA,
Self::FRU,
Self::FSD,
Self::FUK,
Self::FUO,
Self::GBE,
Self::GDL,
Self::GEO,
Self::GIG,
Self::GND,
Self::GOT,
Self::GRU,
Self::GUA,
Self::GUM,
Self::GVA,
Self::GYD,
Self::GYE,
Self::GYN,
Self::HAK,
Self::HAM,
Self::HAN,
Self::HBA,
Self::HEL,
Self::HFA,
Self::HGH,
Self::HKG,
Self::HNL,
Self::HRE,
Self::HYD,
Self::HYN,
Self::IAD,
Self::IAH,
Self::ICN,
Self::IND,
Self::ISB,
Self::IST,
Self::ISU,
Self::IXC,
Self::JAX,
Self::JDO,
Self::JED,
Self::JHB,
Self::JIB,
Self::JNB,
Self::JOG,
Self::JOI,
Self::JXG,
Self::KBP,
Self::KCH,
Self::KEF,
Self::KGL,
Self::KHH,
Self::KHI,
Self::KHN,
Self::KIN,
Self::KIV,
Self::KIX,
Self::KJA,
Self::KMG,
Self::KNU,
Self::KTM,
Self::KUL,
Self::KWE,
Self::KWI,
Self::LAD,
Self::LAS,
Self::LAX,
Self::LCA,
Self::LED,
Self::LHE,
Self::LHR,
Self::LIM,
Self::LIS,
Self::LLK,
Self::LLW,
Self::LOS,
Self::LPB,
Self::LUN,
Self::LUX,
Self::LYS,
Self::MAA,
Self::MAD,
Self::MAN,
Self::MAO,
Self::MBA,
Self::MCI,
Self::MCT,
Self::MDE,
Self::MEL,
Self::MEM,
Self::MEX,
Self::MFM,
Self::MIA,
Self::MLA,
Self::MLE,
Self::MLG,
Self::MNL,
Self::MPM,
Self::MRS,
Self::MRU,
Self::MSP,
Self::MSQ,
Self::MUC,
Self::MXP,
Self::NAG,
Self::NBO,
Self::NJF,
Self::NOU,
Self::NQN,
Self::NQZ,
Self::NRT,
Self::NVT,
Self::OKA,
Self::OKC,
Self::OMA,
Self::ORD,
Self::ORF,
Self::ORN,
Self::OSL,
Self::OTP,
Self::OUA,
Self::PAT,
Self::PBH,
Self::PBM,
Self::PDX,
Self::PER,
Self::PHL,
Self::PHX,
Self::PIT,
Self::PKX,
Self::PMO,
Self::PMW,
Self::PNH,
Self::POA,
Self::POS,
Self::PPT,
Self::PRG,
Self::PTY,
Self::QRO,
Self::QWJ,
Self::RAO,
Self::RDU,
Self::REC,
Self::RIC,
Self::RIX,
Self::RUH,
Self::RUN,
Self::SAN,
Self::SAP,
Self::SAT,
Self::SCL,
Self::SDQ,
Self::SEA,
Self::SFO,
Self::SGN,
Self::SHA,
Self::SIN,
Self::SJC,
Self::SJK,
Self::SJO,
Self::SJP,
Self::SJU,
Self::SJW,
Self::SKG,
Self::SKP,
Self::SLC,
Self::SMF,
Self::SOD,
Self::SOF,
Self::SSA,
Self::STI,
Self::STL,
Self::STR,
Self::SUV,
Self::SYD,
Self::SZX,
Self::TAO,
Self::TBS,
Self::TEN,
Self::TGU,
Self::TIA,
Self::TLH,
Self::TLL,
Self::TLV,
Self::TNA,
Self::TNR,
Self::TPA,
Self::TPE,
Self::TUN,
Self::TXL,
Self::TYN,
Self::UDI,
Self::UIO,
Self::ULN,
Self::URT,
Self::VCP,
Self::VIE,
Self::VIX,
Self::VNO,
Self::VTE,
Self::WAW,
Self::WDH,
Self::WLG,
Self::WRO,
Self::XAP,
Self::XFN,
Self::XIY,
Self::XNH,
Self::YHZ,
Self::YOW,
Self::YUL,
Self::YVR,
Self::YWG,
Self::YXE,
Self::YYC,
Self::YYZ,
Self::ZAG,
Self::ZDM,
Self::ZRH,
];
}
impl fmt::Display for Colo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.write_str(self.code())
}
}