Crates.io | rut-lib |
lib.rs | rut-lib |
version | 0.1.2 |
source | src |
created_at | 2019-12-19 04:57:50.624444 |
updated_at | 2019-12-19 14:50:21.613577 |
description | A Rust Library for validate/generate an Chilean ID (RUT) |
homepage | https://github.com/erikjara/rut-lib |
repository | https://github.com/erikjara/rut-lib |
max_upload_size | |
id | 190495 |
size | 36,671 |
A Rust library for parsing, format and validate a Chilean ID (RUT)
This crate is on crates.io and can be used by adding rut-lib
to your dependencies in your project's Cargo.toml.
[dependencies]
rut-lib = "0.1.2"
If you're using Rust 2015, then you'll also need to add it to your crate root:
extern crate rut_lib;
A easy way to validate and create a Rut
using the from
method, this returns a Result<Rut, Error>
The input must be a valid String
format, a few examples:
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)
}
Output
Number: 17951585
DV: 7
RUT: 17951585-7
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)
}
Output
Error: The input format is invalid
use rut_lib::Rut;
let stringifier_rut = "17951585K";
match Rut::from(stringifier_rut) {
Ok(rut) => println!("RUT: {:#}", rut),
Err(error) => println!("Error: {:#}", error)
}
Output
Error: Invalid DV, must be 7, instead K.
Create a Rut
using the from_number
method (If you don't have a DV
), this returns a Result<Rut, Error>
The input must be a number
(u32
) and stay in a range from 1_000_000
to 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)
}
Output
Number: 24136773
DV: 8
RUT: 24136773-8
use rut_lib::Rut;
let number = 999_999;
match Rut::from_number(number) {
Ok(rut) => {
println!("RUT: {:#}", rut)
},
Err(error) => println!("Error: {:#}", error)
}
Output
Error: The input number must be between 1.000.000 to 99.999.999
Generate a randomize rut from scratch for testing use
Example:
use rut_lib::Rut;
let rut = Rut::randomize();
println!("Number: {:#}", rut.number());
println!("DV: {:#}", rut.dv());
println!("RUT: {:#}", rut);
Output
Number: 56606059
DV: 0
RUT: 56606059-0
The to_format
method receive a Format
(enum
) as input to returns a Prettify 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));
Output
Dots: 17.951.585-7
Dash: 17951585-7
None: 179515857
This project is licensed under the terms of the MIT License.