// Exemplo de como usar a lib dmed em um comparador use dmed::{processar_arquivo, Pessoa, buscar_por_cpf}; use std::collections::HashMap; fn main() -> std::io::Result<()> { // Processa dois arquivos diferentes println!("=== COMPARADOR DE ARQUIVOS DMED ===\n"); let arquivo1 = "LfsIssDmed068325.txt"; let pessoas1 = processar_arquivo(arquivo1)?; println!("Arquivo 1: {} registros", pessoas1.len()); // let pessoas2 = processar_arquivo("arquivo2.txt")?; // println!("Arquivo 2: {} registros\n", pessoas2.len()); // Cria um mapa de CPF -> Pessoa para busca rápida let mapa1: HashMap<&str, &Pessoa> = pessoas1 .iter() .map(|p| (p.cpf.as_str(), p)) .collect(); // Exemplo 1: Buscar CPF específico println!("=== Busca de CPF ==="); let cpf_busca = "00276808860"; if let Some(pessoa) = buscar_por_cpf(&pessoas1, cpf_busca) { println!("✓ CPF {} encontrado", cpf_busca); println!(" Nome: {}", pessoa.nome); println!(" Valor: R$ {:.2}", pessoa.valor); } // Exemplo 2: Comparar valores de mesmos CPFs entre arquivos println!("\n=== Comparação de valores ==="); // Simulando segundo arquivo com mesmos CPFs mas valores diferentes let cpfs_exemplo = ["00276808860", "00633999032", "01133252826"]; for cpf in &cpfs_exemplo { if let Some(p1) = mapa1.get(cpf) { println!("\nCPF: {}", cpf); println!(" Arquivo 1: R$ {:.2}", p1.valor); // if let Some(p2) = mapa2.get(cpf) { // let diferenca = p2.valor - p1.valor; // println!(" Arquivo 2: R$ {:.2}", p2.valor); // println!(" Diferença: R$ {:.2} ({:+.1}%)", // diferenca, // (diferenca / p1.valor) * 100.0 // ); // } } } // Exemplo 3: Encontrar divergências println!("\n=== Análise de divergências ==="); let total_registros = pessoas1.len(); let com_valor = pessoas1.iter().filter(|p| p.valor > 0.0).count(); let sem_valor = total_registros - com_valor; println!("Total de registros: {}", total_registros); println!("Com valor: {}", com_valor); println!("Sem valor: {}", sem_valor); // Exemplo 4: Top 5 maiores valores println!("\n=== Top 5 maiores valores ==="); let mut pessoas_sorted = pessoas1.clone(); pessoas_sorted.sort_by(|a, b| b.valor.partial_cmp(&a.valor).unwrap()); for (i, pessoa) in pessoas_sorted.iter().take(5).enumerate() { println!("{}. {} - R$ {:.2}", i + 1, pessoa.nome, pessoa.valor ); } Ok(()) }