use std::collections::BTreeSet; use std::fs; use std::io::{self, BufRead}; fn main() { let filename = "etc/p01.txt"; let file = fs::File::open(filename).expect("Can't open file"); let lines = io::BufReader::new(file).lines(); let mut set = BTreeSet::new(); let mut cur_cals: u32 = 0; for l in lines { match l.expect("Can't read line.").parse::() { Ok(cals) => { cur_cals += cals; } _ => { set.insert(cur_cals); println!( "new cals: {}, max so far: {}", cur_cals, set.last().unwrap() ); cur_cals = 0; } } } if cur_cals > 0 { set.insert(cur_cals); } let total: u32 = set.iter().rev().take(3).sum(); println!("calories of top 3 are: {}", total); }