Skip to content

abrahao-dev/cpf-cnpj-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Validador de CPF/CNPJ em Rust

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.

🚀 Características

  • ✅ 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

📋 Pré-requisitos

  • Rust (versão 1.70 ou superior)
  • Cargo (gerenciador de pacotes do Rust)

🛠️ Instalação e Uso

1. Clone ou baixe o projeto

git clone <url-do-repositorio>
cd cpf-cnpj-validator

2. Compile o projeto

cargo build --release

3. Execute o programa

cargo run

Ou execute o binário compilado:

./target/release/cpf_cnpj_validator

🎯 Como Usar

Programa Interativo

O programa oferece uma interface interativa onde você pode:

  1. Digite um CPF ou CNPJ (com ou sem formatação)
  2. Veja o resultado da validação com detalhes
  3. Digite 'sair' para encerrar o programa

Exemplo de uso:

=== 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

Executar Exemplos de Teste

cargo run --example test_examples

🧪 Testes

Executar Testes Unitários

cargo test

Exemplos de Teste Incluídos

  • 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

📊 Algoritmos de Validação

CPF

  1. Limpeza: Remove caracteres não numéricos
  2. Verificação de tamanho: Deve ter exatamente 11 dígitos
  3. Verificação de dígitos iguais: Rejeita CPFs com todos os dígitos iguais
  4. 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
  5. Cálculo do segundo dígito verificador:
    • Mesmo processo, mas incluindo o primeiro dígito verificador
    • Pesos de 11 a 2

CNPJ

  1. Limpeza: Remove caracteres não numéricos
  2. Verificação de tamanho: Deve ter exatamente 14 dígitos
  3. Verificação de dígitos iguais: Rejeita CNPJs com todos os dígitos iguais
  4. 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
  5. 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

📝 Formatação

O programa formata automaticamente os documentos:

  • CPF: XXX.XXX.XXX-XX
  • CNPJ: XX.XXX.XXX/XXXX-XX

🚨 Tratamento de Erros

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)

🔧 API do Código

Estruturas Principais

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>,
}

Funções Principais

// 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

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

🤝 Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para:

  • Reportar bugs
  • Sugerir melhorias
  • Enviar pull requests

📞 Suporte

Se você encontrar algum problema ou tiver dúvidas, abra uma issue no repositório.


Desenvolvido com ❤️ em Rust

About

Validador de CPF e CNPJ em Rust com suporte a CLI, formatação automática e algoritmos oficiais.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages