// Created on savesnippets.com ยท https://savesnippets.com/6oOysjDhWFgENC // 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> { // Read into typed structs let mut rdr = csv::Reader::from_path("users.csv")?; for row in rdr.deserialize::() { 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(()) }