blob: 42406dfa496a5147289a0f75d24852c27a9510cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
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::<f64>().unwrap();
}
}
Rule::EOI => (),
_ => unreachable!(),
}
}
println!("Sum of fields: {}", sum);
println!("Number of records: {}", records);
}
|