#iso3166-1 #iso3166-3 #iso3166-2

bin+lib rust_iso3166

ISO 3166-1(国家及其下属区域名称表示法代码 — 第1部分:国家代码)是一个定义国家、从属领土和具有地理兴趣的特殊区域名称代码的标准。它是国际标准化组织(ISO)发布的ISO 3166标准的第一个部分。

9个版本

0.1.13 2024年5月7日
0.1.12 2024年3月1日
0.1.11 2023年10月8日
0.1.10 2023年3月26日
0.1.5 2022年3月31日

#11国际化(i18n)

Download history 1117/week @ 2024-04-24 1338/week @ 2024-05-01 1703/week @ 2024-05-08 1399/week @ 2024-05-15 2538/week @ 2024-05-22 2500/week @ 2024-05-29 2480/week @ 2024-06-05 3417/week @ 2024-06-12 2971/week @ 2024-06-19 3008/week @ 2024-06-26 3163/week @ 2024-07-03 3259/week @ 2024-07-10 4106/week @ 2024-07-17 4951/week @ 2024-07-24 4594/week @ 2024-07-31 3663/week @ 2024-08-07

17,953 每月下载量
用于 8 个Crates(4个直接使用)

Apache-2.0

1.5MB
57K SLoC

rust_iso/iso3166

一个提供ISO 3166 1、ISO 3166 2、ISO 3166 3支持的rust包。

ISO 3166-1是什么

ISO 3166-1是国际标准化组织(ISO)发布的ISO 3166标准的一部分,并定义了国家、从属领土和具有地理兴趣的特殊区域名称的代码。该标准的官方名称是“国家及其下属区域名称表示法代码 — 第1部分:国家代码”。它定义了三组国家代码

  • ISO 3166-1 alpha-2 – 由两个字母组成的国家代码,是三个中最广泛使用的,并且主要用于互联网国家代码顶级域名(除少数例外)。
  • ISO 3166-1 alpha-3 – 由三个字母组成的国家代码,与alpha-2代码相比,允许更好地将代码与国家名称关联。
  • ISO 3166-1 numeric – 由三个数字组成的国家代码,与联合国统计局开发的代码相同,具有脚本(书写系统)独立性的优势,因此对于使用非拉丁文字的人或系统很有用。

-- 维基百科

ISO 3166-2是什么

ISO 3166-2是国际标准化组织(ISO)发布的ISO 3166标准的一部分,并定义了所有在ISO 3166-1中编码的国家的主要下属区域(例如,省份或州)的代码。该标准的官方名称是“国家及其下属区域名称表示法代码 — 第2部分:国家下属区域代码”。它首次于1998年发布。

  • ISO 3166-2的目的是建立一个国际标准,使用简短且独特的字母数字代码来表示所有国家的相关行政区划和从属领土,其形式比全名更方便且更不模糊。每个完整的ISO 3166-2代码由两部分组成,由连字符分隔:[1]
  • 第一部分是国家的ISO 3166-1 alpha-2代码;
  • 第二部分是一串最多由三个字母数字字符组成的字符串,通常来自国家来源,源于相关国家已经使用的编码系统,但也可能由ISO本身开发。

-- 维基百科

什么是ISO 3166-3

ISO 3166-3是国际标准化组织(ISO)发布的ISO 3166标准的一部分,它定义了自1974年首次发布以来从ISO 3166-1中删除的国家名称的代码。该标准的官方名称为《国家及其子区域名称表示法代码——第3部分:已使用国家名称的代码》。[1]它首次于1999年发布。

  • ISO 3166-3中的每个前国家名称都分配了一个四字母的字母代码。前两个字母是前国家的ISO 3166-1 alpha-2代码,而最后两个字母根据以下规则分配:[2]
  • 如果国家更改了名称,则使用新的ISO 3166-1 alpha-2代码(例如,缅甸更名为缅甸,其新的alpha-2代码为MM),或者如果其alpha-2代码未更改,则使用特殊代码AA(例如,白俄罗斯苏维埃社会主义共和国更名为白俄罗斯,保留了相同的alpha-2代码)。
  • 如果国家并入一个现有国家,则使用该国家的ISO 3166-1 alpha-2代码(例如,德意志民主共和国并入德国,其alpha-2代码为DE)。
  • 如果国家被划分为几个部分,则使用特殊代码HH来表示没有单一的后继国家(例如,捷克斯洛伐克被划分为捷克共和国和斯洛伐克),但塞尔维亚和黑山除外,使用XX以避免重复使用相同的ISO 3166-3代码,因为alpha-2代码CS曾两次从ISO 3166-1中删除,第一次是由于捷克斯洛伐克的分裂,第二次是由于塞尔维亚和黑山的分裂。

-- 维基百科

安装

[dependencies]
rust_iso3166 = "0.1.4"

使用

请参阅文档的使用部分。

快速指南

let country = rust_iso3166::from_alpha2("AU");
let country = rust_iso3166::from_alpha3("AUS");
let country = rust_iso3166::from_numeric(036);
let country = rust_iso3166::from_numeric_str("036");

println!("{:?}", rust_iso3166::ALL);

println!("{:?}", rust_iso3166::ALL_ALPHA2);   
println!("{:?}", rust_iso3166::ALL_ALPHA3);   
println!("{:?}", rust_iso3166::ALL_NAME);   
println!("{:?}", rust_iso3166::ALL_NUMERIC);   
println!("{:?}", rust_iso3166::ALL_NUMERIC_STR);   

println!("{:?}", rust_iso3166::NUMERIC_MAP);  
println!("{:?}", rust_iso3166::ALPHA3_MAP);  
println!("{:?}", rust_iso3166::ALPHA2_MAP);  

// for ISO 3166-2
let country = rust_iso3166::from_alpha2("GB").unwrap();
let subdivisions = country.subdivisions();
assert!(subdivisions.unwrap().len() > 0);
let country = rust_iso3166::iso3166_2::from_code("GB-EDH");
assert_eq!("Edinburgh, City of", country.unwrap().name); 

// for ISO 3166-3
let sub = rust_iso3166::iso3166_3::from_code("PZPA");
assert_eq!("Panama Canal Zone", sub.unwrap().name);

数据样本

CountryCode { 
    name: "Australia",
    alpha2: "AU", 
    alpha3: "AUS", 
    numeric: 36 
}

 iso3166_2::Subdivision {
    name: "Bādghīs",
    code: "AF-BDG",
    subdivision_type: "Province",
    country_name: "Afghanistan",
    country_code: "AF",
    region_code: "AF-BDG",
}

iso3166_3::CountryCode3 {
    code: "BQAQ",
    name: "British Antarctic Territory",
    former: CountryCode { 
        name: "British Antarctic Territory",
        alpha2: "BQ", 
        alpha3: "ATB", 
        numeric: 0 
    },
    new_countries: [
        CountryCode { 
            name: "Antarctica",
            alpha2: "AQ", 
            alpha3: "ATA", 
            numeric: 010
        },    
    ],
    validity: [1974,1979],
    desc: "Merged into Antarctica",
}

贡献

欢迎提交拉取请求或创建问题。或者请求rust-iso

许可

rust-iso/rust_iso3166遵循Apache-2.0许可证。

来源(s)

依赖关系

~0.6–9MB
~70K SLoC