use std::{error::Error, io, process}; use serde::Serialize; // Note that structs can derive both Serialize and Deserialize! #[derive(Debug, Serialize)] #[serde(rename_all = "PascalCase")] struct Record<'a> { city: &'a str, state: &'a str, population: Option, latitude: f64, longitude: f64, } fn run() -> Result<(), Box> { let mut wtr = csv::Writer::from_writer(io::stdout()); wtr.serialize(Record { city: "Davidsons Landing", state: "AK", population: None, latitude: 65.2419444, longitude: -165.2716667, })?; wtr.serialize(Record { city: "Kenai", state: "AK", population: Some(7610), latitude: 60.5544444, longitude: -151.2583333, })?; wtr.serialize(Record { city: "Oakman", state: "AL", population: None, latitude: 33.7133333, longitude: -87.3886111, })?; wtr.flush()?; Ok(()) } fn main() { if let Err(err) = run() { println!("{}", err); process::exit(1); } }