use pest::Parser; use std::fs; use xmd::CSVParser; use xmd::Rule; fn main() { let unparsed_file = fs::read_to_string("numbers.csv").expect("cannot read file"); let file = CSVParser::parse(Rule::file, &unparsed_file) .expect("unsuccessful parse") .next() .unwrap(); let mut sum: f64 = 0.0; let mut records: i64 = 0; for record in file.into_inner() { match record.as_rule() { Rule::record => { records += 1; for field in record.into_inner() { sum += field.as_str().parse::().unwrap(); } } Rule::EOI => (), _ => unreachable!(), } } println!("Sum of fields: {}", sum); println!("Number of records: {}", records); }