csv — Работа с CSV файлами в Rust

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое csv?

csv — это стандартная библиотека языка Rust для чтения и записи файлов в формате CSV (Comma-Separated Values). Она предоставляет высокопроизводительный и гибкий интерфейс для работы с табличными данными, поддерживая как простые, так и сложные сценарии (например, экранирование, разные разделители, заголовки).

Зачем нужна?

CSV — один из самых распространённых форматов для обмена данными между приложениями, базами данных и электронными таблицами. Библиотека csv позволяет:

  • Быстро загружать и обрабатывать большие наборы данных (логи, экспорт из Excel/Google Sheets, дампы БД).
  • Генерировать отчёты и выгрузки в удобном для человека виде.
  • Интегрировать Rust-приложения с системами, работающими через CSV (например, финансовые системы, ML-пайплайны).

Как установить?

Добавьте зависимость в Cargo.toml вашего проекта:

[dependencies]
csv = "1.3"

Установка выполняется автоматически при сборке через cargo build.

Основные функции

  • Чтение — итерация по строкам с автоматическим парсингом типов.
  • Запись — создание CSV из структур данных с сериализацией.
  • Настройка — кастомный разделитель (табуляция, точка с запятой), экранирование, сжатие.
  • Работа с заголовками — доступ к колонкам по имени.
  • Сериализация/десериализация — интеграция с serde для автоматического преобразования структур.

Пример кода на Rust

use csv::ReaderBuilder;
use serde::Deserialize;
use std::error::Error;

#[derive(Debug, Deserialize)]
struct Record {
    name: String,
    age: u8,
    city: String,
}

fn main() -> Result<(), Box<dyn Error>> {
    let data = "name,age,city\nAlice,30,New York\nBob,25,London";
    let mut reader = ReaderBuilder::new()
        .has_headers(true)
        .from_reader(data.as_bytes());

    for result in reader.deserialize::<Record>() {
        let record: Record = result?;
        println!("{:?}", record);
    }
    Ok(())
}

Когда использовать?

Библиотека csv идеальна для:

  • Обработки логов, экспортов из CRM/ERP.
  • Создания ETL-пайплайнов (извлечение, трансформация, загрузка).
  • Подготовки данных для машинного обучения.
  • Импорта/экспорта конфигураций в простых CLI-утилитах.

Если вам нужна высокая производительность и безопасность типов — csv лучший выбор для Rust.

Рекомендаций