233 lines
6.4 KiB
Rust
233 lines
6.4 KiB
Rust
use std::collections::HashSet;
|
|
use std::sync::LazyLock;
|
|
|
|
/// Returns whether the given country code is supported by Google Gemini.
|
|
///
|
|
/// <https://ai.google.dev/gemini-api/docs/available-regions>
|
|
pub fn is_supported_country(country_code: &str) -> bool {
|
|
SUPPORTED_COUNTRIES.contains(&country_code)
|
|
}
|
|
|
|
/// The list of country codes supported by Google Gemini.
|
|
///
|
|
/// https://ai.google.dev/gemini-api/docs/available-regions
|
|
static SUPPORTED_COUNTRIES: LazyLock<HashSet<&'static str>> = LazyLock::new(|| {
|
|
vec![
|
|
"DZ", // Algeria
|
|
"AS", // American Samoa
|
|
"AO", // Angola
|
|
"AI", // Anguilla
|
|
"AQ", // Antarctica
|
|
"AG", // Antigua and Barbuda
|
|
"AR", // Argentina
|
|
"AM", // Armenia
|
|
"AW", // Aruba
|
|
"AU", // Australia
|
|
"AT", // Austria
|
|
"AZ", // Azerbaijan
|
|
"BS", // The Bahamas
|
|
"BH", // Bahrain
|
|
"BD", // Bangladesh
|
|
"BB", // Barbados
|
|
"BE", // Belgium
|
|
"BZ", // Belize
|
|
"BJ", // Benin
|
|
"BM", // Bermuda
|
|
"BT", // Bhutan
|
|
"BO", // Bolivia
|
|
"BW", // Botswana
|
|
"BR", // Brazil
|
|
"IO", // British Indian Ocean Territory
|
|
"VG", // British Virgin Islands
|
|
"BN", // Brunei
|
|
"BG", // Bulgaria
|
|
"BF", // Burkina Faso
|
|
"BI", // Burundi
|
|
"CV", // Cabo Verde
|
|
"KH", // Cambodia
|
|
"CM", // Cameroon
|
|
"CA", // Canada
|
|
"BQ", // Caribbean Netherlands
|
|
"KY", // Cayman Islands
|
|
"CF", // Central African Republic
|
|
"TD", // Chad
|
|
"CL", // Chile
|
|
"CX", // Christmas Island
|
|
"CC", // Cocos (Keeling) Islands
|
|
"CO", // Colombia
|
|
"KM", // Comoros
|
|
"CK", // Cook Islands
|
|
"CI", // Côte d'Ivoire
|
|
"CR", // Costa Rica
|
|
"HR", // Croatia
|
|
"CW", // Curaçao
|
|
"CZ", // Czech Republic
|
|
"CD", // Democratic Republic of the Congo
|
|
"DK", // Denmark
|
|
"DJ", // Djibouti
|
|
"DM", // Dominica
|
|
"DO", // Dominican Republic
|
|
"EC", // Ecuador
|
|
"EG", // Egypt
|
|
"SV", // El Salvador
|
|
"GQ", // Equatorial Guinea
|
|
"ER", // Eritrea
|
|
"EE", // Estonia
|
|
"SZ", // Eswatini
|
|
"ET", // Ethiopia
|
|
"FK", // Falkland Islands (Islas Malvinas)
|
|
"FJ", // Fiji
|
|
"FI", // Finland
|
|
"FR", // France
|
|
"GA", // Gabon
|
|
"GM", // The Gambia
|
|
"GE", // Georgia
|
|
"DE", // Germany
|
|
"GH", // Ghana
|
|
"GI", // Gibraltar
|
|
"GR", // Greece
|
|
"GD", // Grenada
|
|
"GU", // Guam
|
|
"GT", // Guatemala
|
|
"GG", // Guernsey
|
|
"GN", // Guinea
|
|
"GW", // Guinea-Bissau
|
|
"GY", // Guyana
|
|
"HT", // Haiti
|
|
"HM", // Heard Island and McDonald Islands
|
|
"HN", // Honduras
|
|
"HU", // Hungary
|
|
"IS", // Iceland
|
|
"IN", // India
|
|
"ID", // Indonesia
|
|
"IQ", // Iraq
|
|
"IE", // Ireland
|
|
"IM", // Isle of Man
|
|
"IL", // Israel
|
|
"IT", // Italy
|
|
"JM", // Jamaica
|
|
"JP", // Japan
|
|
"JE", // Jersey
|
|
"JO", // Jordan
|
|
"KZ", // Kazakhstan
|
|
"KE", // Kenya
|
|
"KI", // Kiribati
|
|
"KG", // Kyrgyzstan
|
|
"KW", // Kuwait
|
|
"LA", // Laos
|
|
"LV", // Latvia
|
|
"LB", // Lebanon
|
|
"LS", // Lesotho
|
|
"LR", // Liberia
|
|
"LY", // Libya
|
|
"LI", // Liechtenstein
|
|
"LT", // Lithuania
|
|
"LU", // Luxembourg
|
|
"MG", // Madagascar
|
|
"MW", // Malawi
|
|
"MY", // Malaysia
|
|
"MV", // Maldives
|
|
"ML", // Mali
|
|
"MT", // Malta
|
|
"MH", // Marshall Islands
|
|
"MR", // Mauritania
|
|
"MU", // Mauritius
|
|
"MX", // Mexico
|
|
"FM", // Micronesia
|
|
"MN", // Mongolia
|
|
"MS", // Montserrat
|
|
"MA", // Morocco
|
|
"MZ", // Mozambique
|
|
"NA", // Namibia
|
|
"NR", // Nauru
|
|
"NP", // Nepal
|
|
"NL", // Netherlands
|
|
"NC", // New Caledonia
|
|
"NZ", // New Zealand
|
|
"NI", // Nicaragua
|
|
"NE", // Niger
|
|
"NG", // Nigeria
|
|
"NU", // Niue
|
|
"NF", // Norfolk Island
|
|
"MP", // Northern Mariana Islands
|
|
"NO", // Norway
|
|
"OM", // Oman
|
|
"PK", // Pakistan
|
|
"PW", // Palau
|
|
"PS", // Palestine
|
|
"PA", // Panama
|
|
"PG", // Papua New Guinea
|
|
"PY", // Paraguay
|
|
"PE", // Peru
|
|
"PH", // Philippines
|
|
"PN", // Pitcairn Islands
|
|
"PL", // Poland
|
|
"PT", // Portugal
|
|
"PR", // Puerto Rico
|
|
"QA", // Qatar
|
|
"CY", // Republic of Cyprus
|
|
"CG", // Republic of the Congo
|
|
"RO", // Romania
|
|
"RW", // Rwanda
|
|
"BL", // Saint Barthélemy
|
|
"KN", // Saint Kitts and Nevis
|
|
"LC", // Saint Lucia
|
|
"PM", // Saint Pierre and Miquelon
|
|
"VC", // Saint Vincent and the Grenadines
|
|
"SH", // Saint Helena, Ascension and Tristan da Cunha
|
|
"WS", // Samoa
|
|
"ST", // São Tomé and Príncipe
|
|
"SA", // Saudi Arabia
|
|
"SN", // Senegal
|
|
"SC", // Seychelles
|
|
"SL", // Sierra Leone
|
|
"SG", // Singapore
|
|
"SK", // Slovakia
|
|
"SI", // Slovenia
|
|
"SB", // Solomon Islands
|
|
"SO", // Somalia
|
|
"ZA", // South Africa
|
|
"GS", // South Georgia and the South Sandwich Islands
|
|
"KR", // South Korea
|
|
"SS", // South Sudan
|
|
"ES", // Spain
|
|
"LK", // Sri Lanka
|
|
"SD", // Sudan
|
|
"SR", // Suriname
|
|
"SE", // Sweden
|
|
"CH", // Switzerland
|
|
"TW", // Taiwan
|
|
"TJ", // Tajikistan
|
|
"TZ", // Tanzania
|
|
"TH", // Thailand
|
|
"TL", // Timor-Leste
|
|
"TG", // Togo
|
|
"TK", // Tokelau
|
|
"TO", // Tonga
|
|
"TT", // Trinidad and Tobago
|
|
"TN", // Tunisia
|
|
"TR", // Türkiye
|
|
"TM", // Turkmenistan
|
|
"TC", // Turks and Caicos Islands
|
|
"TV", // Tuvalu
|
|
"UG", // Uganda
|
|
"GB", // United Kingdom
|
|
"AE", // United Arab Emirates
|
|
"US", // United States
|
|
"UM", // United States Minor Outlying Islands
|
|
"VI", // U.S. Virgin Islands
|
|
"UY", // Uruguay
|
|
"UZ", // Uzbekistan
|
|
"VU", // Vanuatu
|
|
"VE", // Venezuela
|
|
"VN", // Vietnam
|
|
"WF", // Wallis and Futuna
|
|
"EH", // Western Sahara
|
|
"YE", // Yemen
|
|
"ZM", // Zambia
|
|
"ZW", // Zimbabwe
|
|
]
|
|
.into_iter()
|
|
.collect()
|
|
});
|