use std::io; use std::io::BufRead; use std::collections::HashSet; pub fn main(reader: T) -> io::Result<(String, String)> { let values: Vec = reader.lines().map(|l| l.unwrap().parse::().unwrap()).collect(); let part1 = values.iter().sum::(); let mut seen = HashSet::new(); seen.insert(0); let mut res = 0; for val in values.iter().cycle() { res += val; if seen.contains(&res) { return Ok((part1.to_string(), res.to_string())); } else { seen.insert(res); } } Err(io::Error::new(io::ErrorKind::Other, "Invalid input")) }