Rust

CSV Read/Write with the csv Crate

admin by @admin ADMIN
1d ago
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
`csv` + `serde` lets you read/write CSVs directly into typed structs. No manual field parsing; column order tolerant via headers.
Rust
Raw
// Cargo.toml:
// csv   = "1"
// serde = { version = "1", features = ["derive"] }

use serde::{Deserialize, Serialize};
use std::error::Error;

#[derive(Deserialize, Serialize, Debug)]
struct User {
    id: u32,
    name: String,
    email: String,
}

fn main() -> Result<(), Box<dyn Error>> {
    // Read into typed structs
    let mut rdr = csv::Reader::from_path("users.csv")?;
    for row in rdr.deserialize::<User>() {
        let user = row?;
        println!("{user:?}");
    }

    // Write typed structs back out
    let mut wtr = csv::Writer::from_path("export.csv")?;
    wtr.serialize(User { id: 1, name: "Alice".into(), email: "a@x.com".into() })?;
    wtr.serialize(User { id: 2, name: "Bob".into(),   email: "b@x.com".into() })?;
    wtr.flush()?;
    Ok(())
}
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.