rbytes_consulta_cep 0.1.0

Consulta de CEP brasileiro com multi-provedores (ViaCEP, BrasilAPI, etc). Inclui fallback automático, timeout configurável e formatação de endereços.
Documentation
// src/validacao.rs
use crate::error::CepError;
use lazy_static::lazy_static;
use regex::Regex;

lazy_static! {
    static ref CEP_REGEX: Regex = Regex::new(r"^(\d{5})-?(\d{3})$").unwrap();
}

pub fn normalizar_cep(cep: &str) -> Result<String, CepError> {
    let cep_limpo = cep.replace(&['-', ' ', '.'][..], "");
    
    if !CEP_REGEX.is_match(cep) && cep_limpo.len() != 8 {
        return Err(CepError::CepInvalido);
    }
    
    if cep_limpo.chars().all(|c| c == '0') {
        return Err(CepError::CepInvalido);
    }
    
    Ok(cep_limpo)
}

pub fn formatar_cep(cep: &str) -> Result<String, CepError> {
    let cep_normalizado = normalizar_cep(cep)?;
    Ok(format!("{}-{}", &cep_normalizado[..5], &cep_normalizado[5..]))
}