blob: c64538b4e9326c8687ee2e87bfa79139c1a87baf [file] [log] [blame]
Jakub Koturc72d7202020-12-21 17:28:15 +01001use std::error::Error;
2use std::io;
3use std::process;
4
5use serde::Deserialize;
6
7#[derive(Debug, Deserialize)]
8#[serde(rename_all = "PascalCase")]
9struct Record {
10 country: String,
11 city: String,
12 accent_city: String,
13 region: String,
14 population: Option<u64>,
15 latitude: f64,
16 longitude: f64,
17}
18
19fn run() -> Result<u64, Box<dyn Error>> {
20 let mut rdr = csv::Reader::from_reader(io::stdin());
21
22 let mut count = 0;
23 for result in rdr.deserialize() {
24 let record: Record = result?;
25 if record.country == "us" && record.region == "MA" {
26 count += 1;
27 }
28 }
29 Ok(count)
30}
31
32fn main() {
33 match run() {
34 Ok(count) => {
35 println!("{}", count);
36 }
37 Err(err) => {
38 println!("{}", err);
39 process::exit(1);
40 }
41 }
42}