2 releases
0.1.1 | Apr 27, 2020 |
---|---|
0.1.0 | Apr 6, 2020 |
#213 in Internationalization (i18n)
10,237 downloads per month
34KB
603 lines
Jurisdiction
Lightweight static Jurisdiction
information.
This crate provides interfaces to work with jurisdictions for areas around the world. Information about a jurisdiction includes
- ISO 3166 Alpha2 and Alpha3 character codes.
- ISO 3166 numeric country code.
- UN M49 region classifications.
The Jurisdiction object is a lightweight object, the size of a pointer, suitable for transfer in API surfaces throughout an ecosystem. Serialization on API boundaries may choose to employ any of the standardized classification formats.
Example
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);
}
See docs.rs for more extensive API documentation and examples.
Dependencies
~0.5–1.2MB
~26K SLoC