Rust:
CSVファイルの操作

How to:

RustでCSVファイルを扱う基本的な方法を示します。

use std::error::Error;
use std::fs::File;
use std::io::{Read, Write};
use csv::ReaderBuilder;
use csv::Writer;

fn main() -> Result<(), Box<dyn Error>> {
    // CSV読み込み
    let mut rdr = ReaderBuilder::new()
        .from_path("data.csv")?;
    for result in rdr.records() {
        let record = result?;
        println!("{:?}", record);
    }

    // CSV書き込み
    let mut wtr = Writer::from_writer(vec![]);
    wtr.write_record(&["year", "make", "model"])?;
    wtr.write_record(&["2023", "Toyota", "Tundra"])?;
    wtr.flush()?;
    let data = String::from_utf8(wtr.into_inner()?)?;
    println!("{}", data);

    Ok(())
}

実行結果:

StringRecord(["year", "make", "model"])
StringRecord(["2023", "Toyota", "Tundra"])
year,make,model
2023,Toyota,Tundra

Deep Dive

CSVは1972年にIBMで使われ始めました。JSONやXMLなどCSVの代替フォーマットがありますが、CSVはその単純さから依然として広く使われています。RustでCSVを扱う際、csvクレートが広く利用されています。高速でメモリ安全なCSVの読み書きが可能で、Serdeライブラリとの統合もサポートしています。

See Also