Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

abrahao-dev/cpf-cnpj-validator

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
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

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.