2 个版本
0.1.2 | 2019年12月19日 |
---|---|
0.1.1 | 2019年12月19日 |
0.1.0 |
|
#1426 在 解析器实现
每月下载 125 次
19KB
272 行
Rut 库 🇨🇱
用于解析、格式化和验证智利身份证(RUT)的 Rust 库
用法
此软件包在 crates.io 上,可以通过将 rut-lib
添加到项目的 Cargo.toml 中的依赖项来使用。
[dependencies]
rut-lib = "0.1.2"
如果你使用 Rust 2015,还需要将其添加到 crate 根目录中
extern crate rut_lib;
示例
从字符串解析
使用 from
方法轻松验证和创建一个 Rut
,这返回一个 Result<Rut, Error>
输入必须是有效的 String
格式,以下是一些示例
17.951.585-7
17951585-7
179515857
use rut_lib::Rut;
let stringifier_rut = "17951585-7";
match Rut::from(stringifier_rut) {
Ok(rut) => {
println!("Number: {:#}", rut.number());
println!("DV: {:#}", rut.dv());
println!("RUT: {:#}", rut)
},
Err(error) => println!("Error: {:#}", error)
}
输出
Number: 17951585
DV: 7
RUT: 17951585-7
错误行为
Error::InvalidFormat
use rut_lib::Rut;
let stringifier_rut = "17,951,585-7";
match Rut::from(stringifier_rut) {
Ok(rut) => println!("RUT: {:#}", rut),
Err(error) => println!("Error: {:#}", error)
}
输出
Error: The input format is invalid
Error::InvalidDV
use rut_lib::Rut;
let stringifier_rut = "17951585K";
match Rut::from(stringifier_rut) {
Ok(rut) => println!("RUT: {:#}", rut),
Err(error) => println!("Error: {:#}", error)
}
输出
Error: Invalid DV, must be 7, instead K.
从数字解析
使用 from_number
方法创建一个 Rut
(如果您没有 DV
),这返回一个 Result<Rut, Error>
输入必须是一个 number
(u32
)且在 1_000_000
到 99_999_999
的范围内
use rut_lib::Rut;
let number = 24136773;
match Rut::from_number(number) {
Ok(rut) => {
println!("Number: {:#}", rut.number());
println!("DV: {:#}", rut.dv());
println!("RUT: {:#}", rut)
},
Err(error) => println!("Error: {:#}", error)
}
输出
Number: 24136773
DV: 8
RUT: 24136773-8
错误行为
Error::OutOfRange
use rut_lib::Rut;
let number = 999_999;
match Rut::from_number(number) {
Ok(rut) => {
println!("RUT: {:#}", rut)
},
Err(error) => println!("Error: {:#}", error)
}
输出
Error: The input number must be between 1.000.000 to 99.999.999
随机化 RUT
生成一个用于测试的随机 RUT
示例
use rut_lib::Rut;
let rut = Rut::randomize();
println!("Number: {:#}", rut.number());
println!("DV: {:#}", rut.dv());
println!("RUT: {:#}", rut);
输出
Number: 56606059
DV: 0
RUT: 56606059-0
美化格式
to_format
方法接收一个 Format
(enum
)作为输入,并返回一个美化的 Rut
use rut_lib::{Rut, Format};
let input = "179515857";
let rut = Rut::from(input).unwrap();
println!("Dots: {}", rut.to_format(Format::DOTS));
println!("Dash: {}", rut.to_format(Format::DASH));
println!("None: {}", rut.to_format(Format::NONE));
输出
Dots: 17.951.585-7
Dash: 17951585-7
None: 179515857
许可证
本项目采用 MIT 许可证 许可。
依赖项
~4–6MB
~103K SLoC