Rust:
Работа с CSV

Как это сделать:

Сначала добавьте необходимый контейнер в Cargo.toml:

[dependencies]
csv = "1.1"

Затем обработайте чтение CSV:

use csv::Reader;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let mut rdr = Reader::from_path("data.csv")?;
    for result in rdr.records() {
        let record = result?;
        println!("{:?}", record);
    }
    Ok(())
}

Запись в CSV:

use csv::Writer;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    let mut wtr = Writer::from_path("output.csv")?;
    wtr.write_record(&["name", "city", "age"])?;
    wtr.write_record(&["Jane", "New York", "30"])?;
    wtr.flush()?;
    Ok(())
}

Пример вывода для чтения:

StringRecord(["Jane", "New York", "30"])

Погружение в тему

CSV существует с первых дней персональных компьютеров, используется для обмена данными между программами и системами. Хотя JSON и XML предоставляют больше структурированности, CSV остаётся популярным за его легковесность и простоту использования.

Альтернативы контейнеру csv в Rust включают serde_csv, предлагающий удобную сериализацию и десериализацию, и papercut, сосредоточенный на безопасном и удобном разборе CSV.

Разбор CSV в Rust ограничен вводом-выводом. Эффективная обработка включает использование итераторов и надежную обработку ошибок в Rust для управления неправильно оформленными данными.

См. также