diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 76da661..876cb1e 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -6,9 +6,25 @@ version = 4 name = "aoc" version = "0.1.0" dependencies = [ + "itertools", "nom", ] +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "memchr" version = "2.7.6" diff --git a/rust/Cargo.toml b/rust/Cargo.toml index b8165a4..017bf39 100644 --- a/rust/Cargo.toml +++ b/rust/Cargo.toml @@ -8,4 +8,5 @@ path = "main.rs" name = "aoc" [dependencies] +itertools = "0.14" nom = "8.0.0" diff --git a/rust/puzzles/day5.rs b/rust/puzzles/day5.rs index 68e2b0a..61b7d0b 100644 --- a/rust/puzzles/day5.rs +++ b/rust/puzzles/day5.rs @@ -1,4 +1,5 @@ use crate::puzzle::Puzzle; +use itertools::Itertools; use nom::{ Parser, character::complete::{char, newline, usize}, @@ -35,10 +36,8 @@ pub const PUZZLE: Puzzle<(Vec, Vec), 2> = Puzzle { .to_string() }, |(ranges, _)| { - let mut sorted_ranges = ranges.clone(); - sorted_ranges.sort_by_key(|r| r.lower); let mut merged = Ranges::new(); - for r in sorted_ranges { + for r in ranges.iter().cloned().sorted_by_key(|r| r.lower) { merged.add(r); } merged.total_length().to_string()