1 use std::error::Error;
2 use std::io;
3 use std::process;
4 
5 use serde::Serialize;
6 
7 // Note that structs can derive both Serialize and Deserialize!
8 #[derive(Debug, Serialize)]
9 #[serde(rename_all = "PascalCase")]
10 struct Record<'a> {
11     city: &'a str,
12     state: &'a str,
13     population: Option<u64>,
14     latitude: f64,
15     longitude: f64,
16 }
17 
run() -> Result<(), Box<dyn Error>>18 fn run() -> Result<(), Box<dyn Error>> {
19     let mut wtr = csv::Writer::from_writer(io::stdout());
20 
21     wtr.serialize(Record {
22         city: "Davidsons Landing",
23         state: "AK",
24         population: None,
25         latitude: 65.2419444,
26         longitude: -165.2716667,
27     })?;
28     wtr.serialize(Record {
29         city: "Kenai",
30         state: "AK",
31         population: Some(7610),
32         latitude: 60.5544444,
33         longitude: -151.2583333,
34     })?;
35     wtr.serialize(Record {
36         city: "Oakman",
37         state: "AL",
38         population: None,
39         latitude: 33.7133333,
40         longitude: -87.3886111,
41     })?;
42 
43     wtr.flush()?;
44     Ok(())
45 }
46 
main()47 fn main() {
48     if let Err(err) = run() {
49         println!("{}", err);
50         process::exit(1);
51     }
52 }
53