// 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(())
}
Create a free account and build your private vault. Share publicly whenever you want.