5 releases
0.1.5 | Dec 25, 2022 |
---|---|
0.1.4 | Dec 23, 2022 |
0.1.3 | Dec 9, 2022 |
0.1.2 | Dec 8, 2022 |
0.1.0 | Dec 7, 2022 |
#106 in Internationalization (i18n)
3,451 downloads per month
Used in 6 crates
580KB
1K
SLoC
Package codes-iso-3166
This package contains an implementation of the ISO 3166 parts 1 and 2 standards.
The purpose of ISO 3166 is to define internationally recognized codes of letters and/or numbers that we can use when we refer to countries and their subdivisions. However, it does not define the names of countries – this information comes from United Nations sources (Terminology Bulletin Country Names and the Country and Region Codes for Statistical Use maintained by the United Nations Statistics Divisions).
The country codes can be represented either as a two-letter code (alpha-2) which is recommended as the general-purpose code, a three-letter code (alpha-3) which is more closely related to the country name and a three-digit numeric code (numeric-3) which can be useful if you need to avoid using Latin script.
This package does not include an implementation of part-3, Code for formerly used names of countries.
For notes on the design of the API, see the repository README.
Example
This example shows the use of the part-1 Country Code.
use codes_iso_3166::part_1::CountryCode;
let country = CountryCode::from_str("AG").unwrap();
assert_eq!(country.alpha_2_code(), "AG");
assert_eq!(country.short_name(), "Antigua and Barbuda");
Features
By default only the serde
feature is enabled, and part-1 two-letter
language codes.
serde
- Enables serialization of the different Language Code types.alpha_3_code
- Adds theCountryCode::alpha_3_code
method.numeric_code
- Adds theCountryCode::numeric_code
method.independent
- Adds theCountryCode::independent
method.status
- Adds theCountryCode::status
method.full_name
- Adds theCountryCode::full_name
method.local_names
- Adds theCountryCode::local_short_name
andCountryCode::local_full_name
methods.languages
- Adds theCountryCode::administrative_language
andCountryCode::languages
methods (requires packagecodes-iso-639
).formerly
- Adds theCountryCode::former_short_name
andCountryCode::former_alpha_3_code
methods.part_2
- Adds the corresponding module andSubdivisionCode
.categories
- Adds theSubdivisionCode::category_code
method andSubdivisionCategoryCode
type.territories
- Adds theTerritoryCode
type.languages
- Adds theSubdivisionCode::name_language
method.
Note that the method CountryCode::local_full_name
requires both
local_names
and full_name
features.
Refresh
While ISO licenses the 3166 tables freely, access to the whole data tables is via subscription, and so there is not currently a way to download the tables periodically to keep up-to-date.
Changes
Version 0.1.5
- Catering for new
build
module in codes-common
Version 0.1.4
- Implemented
Standardized
andFixedLengthCode
traits. - Using new
codes-common
CSV handling framework.
Version 0.1.3
- Use new style enumerations for categories and territories in part 2.
Version 0.1.2
- Added
ALL_CODES
constant for all relevant types. - Added
indices
modules to part 1 and 2, partial implementations.
Version 0.1.1
- Added
formerly_alpha_3_code
andformerly_short_name
methods to part_1. - Added
local_short_name
andlocal_full_name
methods to part_1. - Added part-2.
Version 0.1.0
- Initial release, part-1 only.
TODO
- Add local_name to subdivision categories using administrative language.
- Build true indices for secondary code lookups.
Dependencies
~0.3–2.6MB
~42K SLoC