use lazy_static::lazy_static; use std::collections::HashMap; lazy_static! { static ref COUNTRIES_FR: HashMap = serde_json::from_str(include_str!("../../assets/iso-3166_country_french.json")).unwrap(); } pub fn is_code_valid(code: &str) -> bool { rust_iso3166::ALL_ALPHA2.contains(&code) } #[derive(serde::Serialize, Debug, Copy, Clone)] pub struct CountryCode { code: &'static str, en: &'static str, fr: &'static str, } /// Get the entire list of countries pub fn get_list() -> Vec { rust_iso3166::ALL .iter() .map(|c| CountryCode { code: c.alpha2, en: c.name, fr: COUNTRIES_FR .get(c.alpha2) .map(|s| s.as_str()) .unwrap_or(c.name), }) .collect() } #[cfg(test)] mod test { use crate::utils::countries_utils::is_code_valid; #[test] fn test_code_fr() { assert!(is_code_valid("FR")) } #[test] fn test_code_bad() { assert!(!is_code_valid("ZZ")) } }