update itertools

This commit is contained in:
Rüdiger Ludwig 2023-07-15 10:13:26 +02:00
parent 3b12de4970
commit 556b85e532
3 changed files with 10 additions and 17 deletions

View file

@ -1,27 +1,17 @@
use itertools::Itertools;
use std::{fs, io};
fn read_data(day_num: usize, file: &str) -> io::Result<String> {
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<Vec<String>> {
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())
}