1 #![allow(dead_code)]
2 use std::{error::Error, io, process};
3 
4 use serde::Deserialize;
5 #[derive(Debug, Deserialize)]
6 #[serde(rename_all = "PascalCase")]
7 struct Record {
8     latitude: f64,
9     longitude: f64,
10     #[serde(deserialize_with = "csv::invalid_option")]
11     population: Option<u64>,
12     city: String,
13     state: String,
14 }
15 
run() -> Result<(), Box<dyn Error>>16 fn run() -> Result<(), Box<dyn Error>> {
17     let mut rdr = csv::Reader::from_reader(io::stdin());
18     for result in rdr.deserialize() {
19         let record: Record = result?;
20         println!("{:?}", record);
21     }
22     Ok(())
23 }
24 
main()25 fn main() {
26     if let Err(err) = run() {
27         println!("{}", err);
28         process::exit(1);
29     }
30 }
31