use std::io::{self, BufRead}; use std::fs::File; use std::path::Path; fn main() { if let Ok(lines) = read_lines("inputs/01.txt") { part1(lines); } if let Ok(lines) = read_lines("inputs/01.txt") { part2(lines); } } fn read_lines

(filename: P) -> io::Result>> where P: AsRef, { let file = File::open(filename)?; Ok(io::BufReader::new(file).lines()) } fn part1(lines: io::Lines>) { let mut last_depth: i64 = 0; let mut num_increased = -1; for line in lines { if let Ok(depth) = line { let di: i64 = depth.parse().unwrap(); if di > last_depth { num_increased = num_increased + 1; } last_depth = di; } } println!("part1: increased: {:?}", num_increased); } fn part2(lines: io::Lines>) { let mut last_total: i64 = 0; let mut num_increased = -1; let mut num1; let mut num2 = -1; let mut num3 = -1; for line in lines { if let Ok(depth) = line { let di: i64 = depth.parse().unwrap(); num1 = num2; num2 = num3; num3 = di; if num1 < 0 || num2 < 0 || num3 < 0 { continue } let total = num1 + num2 + num3; if total > last_total { num_increased = num_increased + 1; } last_total = total; } } println!("part2: increased: {:?}", num_increased); }