use std::fs::File; use std::io::{self, BufRead}; use std::path::Path; fn update_signal(cycle: i32, register: i32, signal: i32) -> i32 { match cycle % 40 { 20 => signal + register * cycle, _ => signal } } fn main() { let file_path = String::from("input"); let mut cycle: i32 = 0; let mut register: i32 = 1; let mut signal: i32 = 0; println!("In file {}", file_path); if let Ok(lines) = read_lines(file_path) { // Consumes the iterator, returns an (Optional) String for line in lines { if let Ok(ip) = line { let split: Vec<&str> = ip.split(" ").collect(); let v = split.get(1).unwrap_or(&"").parse::(); match v { Ok(n) => { cycle += 1; signal = update_signal(cycle, register, signal); cycle += 1; signal = update_signal(cycle, register, signal); register += n; }, Err(_) => { cycle += 1; signal = update_signal(cycle, register, signal); }, } } } } println!("signal {}", signal); } fn read_lines

(filename: P) -> io::Result>> where P: AsRef, { let file = File::open(filename)?; Ok(io::BufReader::new(file).lines()) }