Um validador completo de documentos brasileiros (CPF e CNPJ) implementado em Rust, com algoritmos de validação oficiais e interface de linha de comando interativa.
- ✅ Validação de CPF (Cadastro de Pessoas Físicas)
- ✅ Validação de CNPJ (Cadastro Nacional da Pessoa Jurídica)
- ✅ Detecção automática do tipo de documento
- ✅ Formatação automática dos documentos
- ✅ Interface de linha de comando interativa
- ✅ Testes unitários abrangentes
- ✅ Tratamento de erros robusto
- Rust (versão 1.70 ou superior)
- Cargo (gerenciador de pacotes do Rust)
git clone <url-do-repositorio>
cd cpf-cnpj-validator
cargo build --release
cargo run
Ou execute o binário compilado:
./target/release/cpf_cnpj_validator
O programa oferece uma interface interativa onde você pode:
- Digite um CPF ou CNPJ (com ou sem formatação)
- Veja o resultado da validação com detalhes
- Digite 'sair' para encerrar o programa
=== Validador de CPF/CNPJ em Rust ===
Digite 'sair' para encerrar o programa
Digite um CPF ou CNPJ: 529.982.247-25
--- Resultado da Validação ---
Tipo: CPF
Documento: 529.982.247-25
Válido: ✅ SIM
Digite um CPF ou CNPJ: 11.222.333/0001-81
--- Resultado da Validação ---
Tipo: CNPJ
Documento: 11.222.333/0001-81
Válido: ✅ SIM
cargo run --example test_examples
cargo test
- Validação de CPFs válidos e inválidos
- Validação de CNPJs válidos e inválidos
- Teste de formatação
- Teste de limpeza de caracteres
- Teste de detecção automática
- Limpeza: Remove caracteres não numéricos
- Verificação de tamanho: Deve ter exatamente 11 dígitos
- Verificação de dígitos iguais: Rejeita CPFs com todos os dígitos iguais
- Cálculo do primeiro dígito verificador:
- Multiplica cada dígito por um peso (10 a 2)
- Soma os resultados
- Calcula o resto da divisão por 11
- Se resto < 2, dígito = 0; senão, dígito = 11 - resto
- Cálculo do segundo dígito verificador:
- Mesmo processo, mas incluindo o primeiro dígito verificador
- Pesos de 11 a 2
- Limpeza: Remove caracteres não numéricos
- Verificação de tamanho: Deve ter exatamente 14 dígitos
- Verificação de dígitos iguais: Rejeita CNPJs com todos os dígitos iguais
- Cálculo do primeiro dígito verificador:
- Multiplica cada dígito por um peso (5,4,3,2,9,8,7,6,5,4,3,2)
- Soma os resultados
- Calcula o resto da divisão por 11
- Se resto < 2, dígito = 0; senão, dígito = 11 - resto
- Cálculo do segundo dígito verificador:
- Mesmo processo, mas incluindo o primeiro dígito verificador
- Pesos de 6,5,4,3,2,9,8,7,6,5,4,3,2
O programa formata automaticamente os documentos:
- CPF:
XXX.XXX.XXX-XX
- CNPJ:
XX.XXX.XXX/XXXX-XX
O programa trata os seguintes casos de erro:
- Documentos com tamanho incorreto
- Documentos com todos os dígitos iguais
- Dígitos verificadores inválidos
- Caracteres não numéricos (são removidos automaticamente)
pub enum DocumentType {
CPF,
CNPJ,
}
pub struct ValidationResult {
pub is_valid: bool,
pub document_type: DocumentType,
pub formatted_document: String,
pub error_message: Option<String>,
}
// Valida um CPF específico
pub fn validate_cpf(cpf: &str) -> ValidationResult
// Valida um CNPJ específico
pub fn validate_cnpj(cnpj: &str) -> ValidationResult
// Detecta automaticamente e valida CPF ou CNPJ
pub fn validate_document(document: &str) -> ValidationResult
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Contribuições são bem-vindas! Sinta-se à vontade para:
- Reportar bugs
- Sugerir melhorias
- Enviar pull requests
Se você encontrar algum problema ou tiver dúvidas, abra uma issue no repositório.
Desenvolvido com ❤️ em Rust