2 个版本
0.1.1 | 2020 年 4 月 27 日 |
---|---|
0.1.0 | 2020 年 4 月 6 日 |
136 在 国际化(i18n) 中
每月 10,557 次下载
34KB
603 行
管辖权
轻量级静态 Jurisdiction
信息。
该 crate 提供了用于处理世界各地管辖权的接口。管辖权的信息包括
- ISO 3166 Alpha2 和 Alpha3 字符代码。
- ISO 3166 数字国家代码。
- 联合国 M49 地区分类。
管辖权对象是一个轻量级对象,指针大小,适合在整个生态系统中在 API 表面传输。API 边界上的序列化可以选择采用任何标准化的分类格式。
示例
use anyhow::{Result, anyhow, format_err};
use jurisdiction::{Jurisdiction, Alpha2, Alpha3};
use jurisdiction::region::{Region, SubRegion};
use std::str::FromStr;
fn supported_jurisdiction(alpha: &str) -> Result<Jurisdiction> {
let jurisdiction = Jurisdiction::from_str(alpha)?;
match jurisdiction.alpha2() {
Alpha2::NO | Alpha2::SE | Alpha2::DK => Ok(jurisdiction),
_ => Err(format_err!("only scandinavian countries are supported")),
}
}
fn main() {
let jurisdiction = supported_jurisdiction("NO").expect("unsupported");
assert_eq!(jurisdiction, Alpha2::NO);
assert_eq!(jurisdiction.alpha2(), Alpha2::NO);
assert_eq!(jurisdiction.alpha2().to_string(), "NO");
assert_eq!(jurisdiction, Alpha3::NOR);
assert_eq!(jurisdiction.alpha3(), Alpha3::NOR);
assert_eq!(jurisdiction.alpha3().to_string(), "NOR");
assert_eq!(jurisdiction.country_code(), 578);
assert_eq!(jurisdiction.region(), Region::Europe);
assert_eq!(jurisdiction.sub_region(), SubRegion::NorthernEurope);
}
有关更全面的 API 文档和示例,请参阅 docs.rs。
依赖项
~0.6–1.2MB
~27K SLoC