Brazilian Utils - Rust
Português
Uma biblioteca Rust que fornece funções utilitárias para validação, formatação e geração de dados específicos do Brasil.
Funcionalidades
Esta biblioteca fornece utilitários abrangentes para manipular documentos, identificadores e formatos de dados brasileiros:
📋 Validação e Formatação de Documentos
- CPF (Cadastro de Pessoas Físicas) - Registro de Contribuinte Individual
- CNPJ (Cadastro Nacional da Pessoa Jurídica) - Registro Nacional de Pessoas Jurídicas
- CNH (Carteira Nacional de Habilitação) - Carteira de Motorista Nacional
- PIS (Programa de Integração Social) - Programa de Integração Social
- Título de Eleitor - Registro Eleitoral
🚗 Veículos e Transporte
- Placas de Veículo - Validação e conversão de formatos antigo e Mercosul
- RENAVAM (Registro Nacional de Veículos Automotores) - Registro Nacional de Veículos
🏛️ Legal e Administrativo
- Processo Judicial - Números de processo do sistema jurídico brasileiro
- Natureza Jurídica - Classificação de entidades jurídicas (60+ códigos oficiais)
📍 Localização e Comunicação
- CEP (Código de Endereçamento Postal) - Código Postal com busca de endereço
- Telefone - Validação de celular e fixo com formatação
💰 Financeiro e Texto
- Moeda - Formatação de Real (BRL) e conversão para texto
- Utilitários de Data - Verificação de feriados e conversão de data para texto
- Email - Validação compatível com RFC 5322
Instalação
Adicione ao seu Cargo.toml:
[]
= "0.1.0"
Exemplos de Uso
Validação e Formatação de CPF
use cpf;
// Validar
assert!;
// Formatar
let formatado = format_cpf;
assert_eq!;
// Gerar CPF válido aleatório
let numero_cpf = generate;
assert!;
Validação e Formatação de CNPJ
use cnpj;
// Validar
assert!;
// Formatar
let formatado = format_cnpj;
assert_eq!;
// Gerar CNPJ válido aleatório
let numero_cnpj = generate;
assert!;
CEP (Código Postal) com Busca de Endereço
use cep;
// Validar
assert!;
// Formatar
let formatado = format_cep;
assert_eq!;
// Buscar endereço pelo CEP (requer internet)
if let Some = get_address_from_cep
Placa de Veículo (Antiga e Mercosul)
use license_plate;
// Validar formato antigo
assert!;
// Validar formato Mercosul
assert!;
// Converter antiga para Mercosul
let mercosul = convert_to_mercosul;
assert_eq!;
// Formatar
let formatado = format_license_plate;
assert_eq!;
Formatação e Conversão de Moeda
use currency;
// Formatar como moeda
let formatado = format_currency;
assert_eq!;
// Converter para texto
let texto = convert_real_to_text;
assert_eq!;
Validação de Número de Telefone
use phone;
// Validar celular
assert!;
// Validar fixo
assert!;
// Formatar
let formatado = format_phone;
assert_eq!;
// Gerar aleatório
let numero_telefone = generate;
assert!;
Título de Eleitor
use voter_id;
// Validar
assert!;
// Formatar
let formatado = format_voter_id;
assert_eq!;
// Gerar para um estado específico
let titulo_sp = generate.unwrap;
assert!;
Número de Processo Judicial
use legal_process;
// Validar
assert!;
// Formatar
let formatado = format_legal_process;
assert_eq!;
// Gerar aleatório
let processo = generate;
assert!;
Utilitários de Data
use date_utils;
use NaiveDate;
// Verificar se é feriado
let natal = from_ymd_opt.unwrap;
assert!;
// Converter data para texto
let data = from_ymd_opt.unwrap;
let texto = convert_date_to_text;
assert_eq!;
Todos os Módulos Disponíveis
| Módulo | Funções | Descrição |
|---|---|---|
cep |
is_valid, format_cep, remove_symbols, generate, get_address_from_cep, get_cep_information_from_address |
Validação de CEP e busca de endereço |
cnh |
is_valid_cnh |
Validação de CNH |
cnpj |
is_valid, validate, format_cnpj, remove_symbols, generate, hashdigit, compute_checksum |
Validação de registro empresarial |
cpf |
is_valid, validate, format_cpf, remove_symbols, generate, hashdigit, compute_checksum |
Validação de CPF |
currency |
format_currency, convert_real_to_text, number_to_words |
Formatação e conversão de moeda |
date_utils |
is_holiday, convert_date_to_text |
Utilitários de data e verificação de feriados |
email |
is_valid |
Validação de email RFC 5322 |
legal_nature |
is_valid, get_description, list_all |
Códigos de natureza jurídica (60+ códigos) |
legal_process |
is_valid, format_legal_process, remove_symbols, generate |
Validação de número de processo |
license_plate |
is_valid, format_license_plate, remove_symbols, convert_to_mercosul, get_format, generate |
Placa de veículo (antiga/Mercosul) |
phone |
is_valid, format_phone, remove_symbols, generate, remove_international_dialing_code |
Validação de telefone |
pis |
is_valid, format_pis, remove_symbols, generate, checksum |
Número de integração social |
renavam |
is_valid, generate, calculate_checksum |
Número de registro de veículo |
voter_id |
is_valid, format_voter_id, generate, calculate_vd1, calculate_vd2 |
Validação de título de eleitor |
Executando Testes
# Executar todos os testes
# Executar testes de um módulo específico
# Executar com saída detalhada
Executando Exemplos
A biblioteca inclui exemplos de demonstração abrangentes para cada módulo:
# Demonstração de CPF
# Demonstração de CNPJ
# Demonstração de Placa de Veículo
# Demonstração de Título de Eleitor
# E muitos mais...
Cobertura de Testes
- 149 testes unitários cobrindo toda a lógica de validação
- 55 testes de documentação garantindo que os exemplos funcionem corretamente
- Total: 204 testes com 100% de aprovação
Dependências
rand- Geração de números aleatóriosreqwest- Cliente HTTP para busca de endereço por CEPserde/serde_json- Serialização JSONchrono- Manipulação de data e horaregex- Correspondência de expressões regularesunicode-normalization- Normalização de strings
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.
Licença
Este projeto está licenciado sob a Licença MIT.
Agradecimentos
Inspirado em brazilian-utils/python - Uma biblioteca Python com utilitários similares para dados brasileiros.
English
A Rust library providing utility functions for Brazilian-specific data validation, formatting, and generation.
Features
This library provides comprehensive utilities for handling Brazilian documents, identifiers, and data formats:
📋 Document Validation & Formatting
- CPF (Cadastro de Pessoas Físicas) - Individual Taxpayer Registry
- CNPJ (Cadastro Nacional da Pessoa Jurídica) - National Registry of Legal Entities
- CNH (Carteira Nacional de Habilitação) - National Driver's License
- PIS (Programa de Integração Social) - Social Integration Program
- Voter ID (Título de Eleitor) - Electoral Registration
🚗 Vehicle & Transportation
- License Plate - Old and Mercosul format validation and conversion
- RENAVAM (Registro Nacional de Veículos Automotores) - National Motor Vehicle Registry
🏛️ Legal & Administrative
- Legal Process - Brazilian legal system process numbers
- Legal Nature - Legal entity classification (60+ official codes)
📍 Location & Communication
- CEP (Código de Endereçamento Postal) - Postal Code with address lookup
- Phone - Mobile and landline validation with formatting
💰 Financial & Text
- Currency - Real (BRL) formatting and text conversion
- Date Utils - Holiday checking and date text conversion
- Email - RFC 5322 compliant validation
Installation
Add this to your Cargo.toml:
[]
= "0.1.0"
Usage Examples
CPF Validation and Formatting
use cpf;
// Validate
assert!;
// Format
let formatted = format_cpf;
assert_eq!;
// Generate random valid CPF
let cpf_number = generate;
assert!;
CNPJ Validation and Formatting
use cnpj;
// Validate
assert!;
// Format
let formatted = format_cnpj;
assert_eq!;
// Generate random valid CNPJ
let cnpj_number = generate;
assert!;
CEP (Postal Code) with Address Lookup
use cep;
// Validate
assert!;
// Format
let formatted = format_cep;
assert_eq!;
// Get address from CEP (requires internet)
if let Some = get_address_from_cep
License Plate (Old and Mercosul)
use license_plate;
// Validate old format
assert!;
// Validate Mercosul format
assert!;
// Convert old to Mercosul
let mercosul = convert_to_mercosul;
assert_eq!;
// Format
let formatted = format_license_plate;
assert_eq!;
Currency Formatting and Text Conversion
use currency;
// Format as currency
let formatted = format_currency;
assert_eq!;
// Convert to text
let text = convert_real_to_text;
assert_eq!;
Phone Number Validation
use phone;
// Validate mobile
assert!;
// Validate landline
assert!;
// Format
let formatted = format_phone;
assert_eq!;
// Generate random
let phone_number = generate;
assert!;
Voter ID (Título de Eleitor)
use voter_id;
// Validate
assert!;
// Format
let formatted = format_voter_id;
assert_eq!;
// Generate for a specific state
let voter_id_sp = generate.unwrap;
assert!;
Legal Process Number
use legal_process;
// Validate
assert!;
// Format
let formatted = format_legal_process;
assert_eq!;
// Generate random
let process = generate;
assert!;
Date Utilities
use date_utils;
use NaiveDate;
// Check if date is a holiday
let christmas = from_ymd_opt.unwrap;
assert!;
// Convert date to text
let date = from_ymd_opt.unwrap;
let text = convert_date_to_text;
assert_eq!;
All Available Modules
| Module | Functions | Description |
|---|---|---|
cep |
is_valid, format_cep, remove_symbols, generate, get_address_from_cep, get_cep_information_from_address |
Postal code validation and address lookup |
cnh |
is_valid_cnh |
Driver's license validation |
cnpj |
is_valid, validate, format_cnpj, remove_symbols, generate, hashdigit, compute_checksum |
Company registration validation |
cpf |
is_valid, validate, format_cpf, remove_symbols, generate, hashdigit, compute_checksum |
Individual taxpayer validation |
currency |
format_currency, convert_real_to_text, number_to_words |
Currency formatting and text conversion |
date_utils |
is_holiday, convert_date_to_text |
Date utilities and holiday checking |
email |
is_valid |
RFC 5322 email validation |
legal_nature |
is_valid, get_description, list_all |
Legal entity nature codes (60+ codes) |
legal_process |
is_valid, format_legal_process, remove_symbols, generate |
Legal process number validation |
license_plate |
is_valid, format_license_plate, remove_symbols, convert_to_mercosul, get_format, generate |
Vehicle license plate (old/Mercosul) |
phone |
is_valid, format_phone, remove_symbols, generate, remove_international_dialing_code |
Phone number validation |
pis |
is_valid, format_pis, remove_symbols, generate, checksum |
Social integration number |
renavam |
is_valid, generate, calculate_checksum |
Vehicle registration number |
voter_id |
is_valid, format_voter_id, generate, calculate_vd1, calculate_vd2 |
Electoral registration validation |
Running Tests
# Run all tests
# Run tests for a specific module
# Run with output
Running Examples
The library includes comprehensive demo examples for each module:
# CPF demonstration
# CNPJ demonstration
# License Plate demonstration
# Voter ID demonstration
# And many more...
Test Coverage
- 149 unit tests covering all validation logic
- 55 documentation tests ensuring examples work correctly
- Total: 204 tests with 100% passing rate
Dependencies
rand- Random number generationreqwest- HTTP client for CEP address lookupserde/serde_json- JSON serializationchrono- Date and time handlingregex- Regular expression matchingunicode-normalization- String normalization
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License.
Acknowledgments
Inspired by brazilian-utils/python - A Python library with similar utilities for Brazilian data.