#numbers #iso #international #identification #securities #country-code #isin

codes-iso-6166

本包包含ISO 6166国际证券识别号码(ISIN)规范的实现

3个版本

0.1.3 2022年12月25日
0.1.2 2022年12月23日
0.1.0 2022年12月20日

金融 中排名 142

MIT 许可证

605KB
2K SLoC

包 codes-iso-17442

本包包含ISO 6166国际证券识别号码(ISIN)规范的实现。

crates.io docs.rs

ISO 6166定义了国际证券识别号码(ISIN)的结构。ISIN可以唯一标识一种可替代证券。

可以使用ISIN的证券包括

  • 股票(股票、单位、存托凭证)
  • 债务工具(债券和其他国际债务工具、国际债券和债务工具、剥离利息和本金、国库券、其他)
  • 权益(权利、认股权证)
  • 衍生品(期权、期货)
  • 其他(商品、货币、指数、利率)

ISIN由两个字母字符组成,代表发行国的ISO 3166-1 alpha-2代码,九个字母数字字符(国家证券识别号码,或NSIN,用于识别证券,必要时用前导零填充),以及一个数字校验位。因此,它们总是12个字符长。当NSIN因公司行为或其他原因而更改时,ISIN也将更改。ISIN的发行是分散到各个国家编号机构(NNAs)。由于各个NNAs管理的现有国家编号方案是ISIN的基础,因此全球范围内各机构分配的方法并不一致。

ISIN不能指定特定的交易地点。除了ISIN外,还需要指定另一个标识符,通常是MIC(市场标识符代码)或三个字母的交易所代码。此外,还需要指定交易货币,以唯一标识使用此方法的工具。

有关API设计的说明,请参阅仓库中的README

示例

以下展示了构造ISIN最常用的方法,使用标准的FromStr特性。

use codes_iso_3166::part_1::CountryCode;
use codes_iso_6166::InternationalSecuritiesId as Isin;
use std::str::FromStr;

let walmart = Isin::from_str("US9311421039").unwrap();
assert_eq!(walmart.country_code(), CountryCode::US);
assert_eq!(walmart.national_number(), "931142103");
assert_eq!(walmart.check_digit(), 9);

或者,可以从ISO 3166国家代码和NSIN字符串的组合中构造ISIN。这将计算并附加ISIN校验位。

use codes_iso_3166::part_1::CountryCode;
use codes_iso_6166::InternationalSecuritiesId as Isin;
use std::str::FromStr;

let bae_systems = Isin::new(CountryCode::GB, "263494").unwrap();
assert!(&format!("{}", bae_systems), "GB0002634946");
assert!(&format!("{:#}", bae_systems), "GB-000263494-6");

以下展示了nsin模块中的功能,它允许创建针对特定国家代码的验证工具。

# let test_code: &str = "263494";
use codes_iso_3166::part_1::CountryCode;
use codes_iso_6166::nsin::{NsinScheme, national_number_scheme_for};

if let Some(nsin) = national_number_scheme_for(&CountryCode::GB) {
    if !nsin.is_valid(test_code) {
        panic!("Not a valid {} (NSIN).", nsin.name());
    }
}

特性

默认情况下,仅启用serde特性。

  • serde - 启用InternationalSecuritiesId类型的序列化。
  • url - 启用 ISIN 和 URL(URN)格式之间的转换。

变更

版本 0.1.3

  • 为 codes-common 模块添加新的 build 模块。

版本 0.1.2

  • 实现了 StandardizedFixedLengthCode 特性。

版本 0.1.1

  • 将校验位代码移动到公共包。

版本 0.1.0

  • 初始发布

待办事项

待定

依赖项

~0.7–3.5MB
~57K SLoC