3个版本
0.1.3 | 2022年12月25日 |
---|---|
0.1.2 | 2022年12月23日 |
0.1.0 | 2022年12月20日 |
在 金融 中排名 142
605KB
2K SLoC
包 codes-iso-17442
本包包含ISO 6166国际证券识别号码(ISIN)规范的实现。
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
- 实现了
Standardized
和FixedLengthCode
特性。
版本 0.1.1
- 将校验位代码移动到公共包。
版本 0.1.0
- 初始发布
待办事项
待定
依赖项
~0.7–3.5MB
~57K SLoC