Biblioteca csv para Rust: guia completo
1. O que é e para que serve
A biblioteca csv para Rust é um parser de alto desempenho, seguro e flexível para trabalhar com arquivos CSV (Comma-Separated Values). Ela fornece ferramentas para ler, escrever e processar dados tabulares no formato CSV, um dos formatos mais comuns para troca de dados entre sistemas, bancos de dados e planilhas eletrônicas.
A principal vantagem desta biblioteca é a tipagem forte do Rust e o gerenciamento de memória sem coletor de lixo. Diferente de alternativas em Python ou JavaScript, a biblioteca csv permite processar arquivos de gigabytes com consumo mínimo de memória e performance previsível. Ela suporta delimitadores personalizáveis, escape de aspas, trabalho com cabeçalhos e conversão automática de tipos de dados.
A biblioteca é ideal para tarefas de ETL (Extract, Transform, Load), análise de dados, importação/exportação de informações de bancos de dados, processamento de logs e qualquer cenário que exija manipulação confiável e rápida de dados tabulares. Graças à integração com o ecossistema Rust, o csv combina facilmente com outras bibliotecas, como serde para desserializar dados em estruturas.
2. Instalação
Para instalar a biblioteca csv em um projeto Rust, use o gerenciador de pacotes cargo. Adicione a seguinte linha ao arquivo Cargo.toml do seu projeto:
[dependencies]
csv = "1.3"
Depois, execute o comando no terminal:
cargo build
Para trabalhar com serialização/desserialização de estruturas, recomenda-se instalar também o serde:
[dependencies]
csv = "1.3"
serde = { version = "1.0", features = ["derive"] }
3. Primeiros passos
Exemplo mínimo de leitura de um arquivo CSV e exibição do conteúdo no console:
use std::error::Error;
use csv::Reader;
fn main() -> Result<(), Box<dyn Error>> {
// Cria um leitor CSV a partir do arquivo
let mut reader = Reader::from_path("dados.csv")?;
// Percorre todos os registros
for result in reader.records() {
let record = result?;
// Exibe cada registro
println!("{:?}", record);
}
Ok(())
}
Exemplo do arquivo dados.csv:
nome,idade,cidade
Ana,30,São Paulo
Carlos,25,Rio de Janeiro
Maria,35,Belo Horizonte
Este código abrirá o arquivo, lerá todas as linhas e as exibirá como vetores de strings. Observe o tratamento de erros com Result — é a abordagem padrão em Rust.
4. Métodos e funções principais
4.1. Reader::from_path
Assinatura: pub fn from_path<P: AsRef<Path>>(path: P) -> Result<Reader<File>>
Cria um novo leitor CSV a partir de um arquivo no caminho especificado. Detecta automaticamente a codificação e abre o arquivo para leitura.
use csv::Reader;
let mut reader = Reader::from_path("usuarios.csv").expect("Não foi possível abrir o arquivo");
for record in reader.records() {
println!("{:?}", record.unwrap());
}
4.2. Reader::records
Assinatura: pub fn records(&mut self) -> Records<'_, R>
Retorna um iterador sobre todos os registros do arquivo CSV. Cada registro é um StringRecord, que pode ser convertido em um vetor de strings.
Também na biblioteca