#chile #rut #chilean-rut-utils

rut-lib

用于验证/生成智利身份证(RUT)的 Rust 库

2 个版本

0.1.2 2019年12月19日
0.1.1 2019年12月19日
0.1.0 2019年12月19日

#1426解析器实现

Download history 1/week @ 2024-04-07 8/week @ 2024-05-05 44/week @ 2024-05-12 36/week @ 2024-05-19 17/week @ 2024-05-26 75/week @ 2024-06-02 104/week @ 2024-06-09 31/week @ 2024-06-16 64/week @ 2024-06-23 2/week @ 2024-06-30 53/week @ 2024-07-07 47/week @ 2024-07-14 23/week @ 2024-07-21

每月下载 125 次

MIT 许可证

19KB
272

Rut 库 🇨🇱

Build Status codecov Crates.io Documentation

用于解析、格式化和验证智利身份证(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>

输入必须是一个 numberu32)且在 1_000_00099_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 方法接收一个 Formatenum)作为输入,并返回一个美化的 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