use std::fs::File; use std::io::{self, BufRead}; use std::path::Path; fn main() { let mut sum = 0; let mut mus = 0; if let Ok(lines) = read_lines("./input") { for line in lines { if let Ok(text) = line { sum = sum + first_digit(&text); mus = mus + last_digit(&text); } } } println!("{}", 10*sum + mus); } // TODO: Switch to Option(i32) to allow not having a digit in text . fn first_digit(text: &String) -> i32 { for c in text.chars() { if c.is_digit(10) { return c.to_digit(10).unwrap() as i32; } } // TODO: What if there is no digit? 0 } fn last_digit(text: &String) -> i32 { let txet = &mut text.chars().rev().collect(); first_digit(txet) } fn read_lines

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