1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
// Copyright 2018 Ricardo Silva Veloso // // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or // https://www.apache.org/licenses/LICENSE-2.0> or the MIT license // <LICENSE-MIT or https://opensource.org/licenses/MIT>, at your // option. This file may not be copied, modified, or distributed // except according to those terms. //! Parse and generate random CPF/ICN and CNPJ, Brazil's ID numbers. //! //! # Usage //! //! First, add the following to your `Cargo.toml`: //! //! ```toml //! [dependencies] //! brids = "0.3" //! ``` //! //! Next, add this to your crate root: //! //! ```rust //! extern crate brids; //! ``` //! //! # Dependencies //! //! The [rand] crate is an optional dependency enabled by default. To disable, use like this: //! //! [rand]: https://crates.io/crates/rand //! //! ```toml //! [dependencies] //! brids = { version = "0.3", default-features = false } //! ``` //! //! # Examples //! //! Parse and format: //! //! ```rust //! extern crate brids; //! //! use brids::Cpf; //! use std::io::{stdin, stdout, Write}; //! //! fn main() { //! print!("Input a CPF/ICN number: "); //! stdout().flush().ok(); //! //! let mut input = String::with_capacity(14); //! stdin().read_line(&mut input).ok(); //! //! match input.trim().parse::<Cpf>() { //! Ok(cpf) => println!("{} is a valid number.", cpf), //! Err(err) => println!("Error: {}", err), //! } //! } //! ``` //! //! Generate random CNPJ and CPF/ICN numbers: //! //! ```rust //! extern crate brids; //! //! use brids::{Cnpj, Cpf}; //! //! fn main() { //! println!("Random CNPJ number: {}", Cnpj::generate()); //! println!("Random CPF/ICN number: {}", Cpf::generate()); //! } //! ``` //! //! Using a different generator: //! //! ```rust //! extern crate brids; //! extern crate rand; //! //! use brids::{Cnpj, Cpf}; //! use rand::{ChaChaRng, Rng}; //! //! fn main() { //! let mut rng = ChaChaRng::new_unseeded(); //! println!("Random CNPJ number: {}", rng.gen::<Cnpj>()); //! println!("Random CPF/ICN number: {}", rng.gen::<Cpf>()); //! } //! ``` #[macro_use] extern crate failure; #[cfg(feature = "random")] extern crate rand; #[cfg(test)] #[macro_use] extern crate matches; mod cpf; mod cnpj; pub use cpf::*; pub type Icn = Cpf; pub use cnpj::*;