diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..23fd35f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 0f6fd6a..8f0de84 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" [dependencies] anyhow = "1.0" -itertools = "0.10" +itertools = "0.11" lazy_static = "1.4" num-traits = "0.2" regex = "1.7" diff --git a/src/common/file.rs b/src/common/file.rs index a564879..1c6368c 100644 --- a/src/common/file.rs +++ b/src/common/file.rs @@ -1,27 +1,17 @@ use itertools::Itertools; use std::{fs, io}; -fn read_data(day_num: usize, file: &str) -> io::Result { - fs::read_to_string(format!("data/day{day_num:02}/{file}")) +fn format_path(day_num: usize, file: &str) -> String { + format!("data/day{day_num:02}/{file}") } pub fn read_lines(day_num: usize, file: &str) -> io::Result> { - let lines = read_data(day_num, file)?; - let x = lines + Ok(fs::read_to_string(format_path(day_num, file))? .split('\n') .with_position() .filter_map(|line| match line { - itertools::Position::First(line) - | itertools::Position::Middle(line) - | itertools::Position::Only(line) => Some(line.to_owned()), - itertools::Position::Last(line) => { - if line.is_empty() { - None - } else { - Some(line.to_owned()) - } - } + (itertools::Position::Last, line) if line.is_empty() => None, + (_, line) => Some(line.to_string()), }) - .collect(); - Ok(x) + .collect()) }