[INFO] cloning repository https://github.com/ArcticZeroo/advent-2022
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ArcticZeroo/advent-2022" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArcticZeroo%2Fadvent-2022", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArcticZeroo%2Fadvent-2022'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7ffe81ea49475874e581ad6e89998c4db5066c97
[INFO] checking ArcticZeroo/advent-2022 against master#3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0 for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArcticZeroo%2Fadvent-2022" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ArcticZeroo/advent-2022
[INFO] finished tweaking git repo https://github.com/ArcticZeroo/advent-2022
[INFO] tweaked toml for git repo https://github.com/ArcticZeroo/advent-2022 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ArcticZeroo/advent-2022 on toolchain 3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ArcticZeroo/advent-2022 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 52044a1e4f853778fc4b8c1804c2bf21d7982e6b6581303da9dfbd16662948a6
[INFO] running `Command { std: "docker" "start" "-a" "52044a1e4f853778fc4b8c1804c2bf21d7982e6b6581303da9dfbd16662948a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "52044a1e4f853778fc4b8c1804c2bf21d7982e6b6581303da9dfbd16662948a6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52044a1e4f853778fc4b8c1804c2bf21d7982e6b6581303da9dfbd16662948a6", kill_on_drop: false }`
[INFO] [stdout] 52044a1e4f853778fc4b8c1804c2bf21d7982e6b6581303da9dfbd16662948a6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+3129d37ef7075ee3cbaa3d6cbe1b5794f67192b0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0b4f7326d61a01daa6aab0e3f1c816b92106fdcc814be836ef7d7c9037687890
[INFO] running `Command { std: "docker" "start" "-a" "0b4f7326d61a01daa6aab0e3f1c816b92106fdcc814be836ef7d7c9037687890", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling serde v1.0.149
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling indexmap v1.9.2
[INFO] [stderr]    Compiling serde_json v1.0.89
[INFO] [stderr]    Compiling num-bigint v0.4.3
[INFO] [stderr]    Compiling priority-queue v1.3.0
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]     Checking itoa v1.0.4
[INFO] [stderr]     Checking ryu v1.0.11
[INFO] [stderr]     Checking aho-corasick v0.7.20
[INFO] [stderr]     Checking either v1.8.0
[INFO] [stderr]     Checking quick-error v1.2.3
[INFO] [stderr]     Checking regex-syntax v0.6.28
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking regex v1.7.0
[INFO] [stderr]     Checking eval v0.4.3
[INFO] [stderr]     Checking advent-2022 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Instruction`
[INFO] [stdout]  --> src/days/day10.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::vm::{VirtualMachine, Instruction};
[INFO] [stdout]   |                                 ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day11.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashSet` and `VecDeque`
[INFO] [stdout]  --> src/days/day12.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/days/day12.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day12.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `min`
[INFO] [stdout]  --> src/days/day13.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{Itertools, min};
[INFO] [stdout]   |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Instruction` and `VirtualMachine`
[INFO] [stdout]  --> src/days/day13.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::vm::{VirtualMachine, Instruction};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all`
[INFO] [stdout]  --> src/days/day14.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::{all, Itertools};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::abs`
[INFO] [stdout]  --> src/days/day14.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use num_traits::abs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::common`
[INFO] [stdout]  --> src/days/day14.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::common;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/days/day14.rs:101:35
[INFO] [stdout]     |
[INFO] [stdout] 101 |             Some(element) => match(element) {
[INFO] [stdout]     |                                   ^       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 101 -             Some(element) => match(element) {
[INFO] [stdout] 101 +             Some(element) => match element {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::max`
[INFO] [stdout]  --> src/days/day15.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryHeap` and `VecDeque`
[INFO] [stdout]  --> src/days/day16.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{BinaryHeap, HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^^^^                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all`
[INFO] [stdout]  --> src/days/day16.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use itertools::{all, Itertools};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bounds` and `Point`
[INFO] [stdout]  --> src/days/day16.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::{Bounds, Point};
[INFO] [stdout]   |                               ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/days/day17.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bounds` and `Grid`
[INFO] [stdout]  --> src/days/day17.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::{Bounds, Grid, GridDirection, Point};
[INFO] [stdout]   |                               ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/days/day18.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{max, min};
[INFO] [stdout]   |                 ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/days/day18.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> src/days/day19.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::RangeInclusive`
[INFO] [stdout]  --> src/days/day19.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::RangeInclusive;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max`, `merge`, and `min`
[INFO] [stdout]  --> src/days/day19.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{Itertools, max, merge, min};
[INFO] [stdout]   |                            ^^^  ^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::common::movement::Bounds`
[INFO] [stdout]  --> src/days/day19.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::Bounds;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day20.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/days/day20.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |         items.insert(wrap_value((current_items_index as i128 + node.value as i128), items.len() as i128) as usize, node);
[INFO] [stdout]    |                                 ^                                                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 21 -         items.insert(wrap_value((current_items_index as i128 + node.value as i128), items.len() as i128) as usize, node);
[INFO] [stdout] 21 +         items.insert(wrap_value(current_items_index as i128 + node.value as i128, items.len() as i128) as usize, node);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::max`
[INFO] [stdout]  --> src/days/day21.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Map`
[INFO] [stdout]  --> src/days/day22.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::iter::Map;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `read_input`
[INFO] [stdout]  --> src/days/day22.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::{read_input, read_input_no_trim, wrap_value, wrap_value_around_bounds};
[INFO] [stdout]   |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, `Mul`, `Rem`, and `Sub`
[INFO] [stdout]  --> src/common.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::{Add, Div, Mul, Rem, Sub};
[INFO] [stdout]   |                ^^^  ^^^  ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/common/movement.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::{max, min};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/days/day2.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/days/day3.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/days/day5.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/days/day6.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/days/day8.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/days/day9.rs:160:9
[INFO] [stdout]     |
[INFO] [stdout] 160 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instruction`
[INFO] [stdout]  --> src/days/day10.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::vm::{VirtualMachine, Instruction};
[INFO] [stdout]   |                                 ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/days/day10.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day11.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HashSet` and `VecDeque`
[INFO] [stdout]  --> src/days/day12.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/days/day12.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day12.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `min`
[INFO] [stdout]  --> src/days/day13.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{Itertools, min};
[INFO] [stdout]   |                            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Instruction` and `VirtualMachine`
[INFO] [stdout]  --> src/days/day13.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::vm::{VirtualMachine, Instruction};
[INFO] [stdout]   |                 ^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all`
[INFO] [stdout]  --> src/days/day14.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::{all, Itertools};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num_traits::abs`
[INFO] [stdout]  --> src/days/day14.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use num_traits::abs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::common`
[INFO] [stdout]  --> src/days/day14.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::common;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/days/day14.rs:101:35
[INFO] [stdout]     |
[INFO] [stdout] 101 |             Some(element) => match(element) {
[INFO] [stdout]     |                                   ^       ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 101 -             Some(element) => match(element) {
[INFO] [stdout] 101 +             Some(element) => match element {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::max`
[INFO] [stdout]  --> src/days/day15.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryHeap` and `VecDeque`
[INFO] [stdout]  --> src/days/day16.rs:2:24
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{BinaryHeap, HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                        ^^^^^^^^^^                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all`
[INFO] [stdout]  --> src/days/day16.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use itertools::{all, Itertools};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bounds` and `Point`
[INFO] [stdout]  --> src/days/day16.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::{Bounds, Point};
[INFO] [stdout]   |                               ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/days/day17.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bounds` and `Grid`
[INFO] [stdout]  --> src/days/day17.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::{Bounds, Grid, GridDirection, Point};
[INFO] [stdout]   |                               ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/days/day18.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{max, min};
[INFO] [stdout]   |                 ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `regex::Regex`
[INFO] [stdout]  --> src/days/day18.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use regex::Regex;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> src/days/day19.rs:1:42
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet, VecDeque};
[INFO] [stdout]   |                                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::RangeInclusive`
[INFO] [stdout]  --> src/days/day19.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::RangeInclusive;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max`, `merge`, and `min`
[INFO] [stdout]  --> src/days/day19.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | use itertools::{Itertools, max, merge, min};
[INFO] [stdout]   |                            ^^^  ^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::common::movement::Bounds`
[INFO] [stdout]  --> src/days/day19.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::movement::Bounds;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `itertools::Itertools`
[INFO] [stdout]  --> src/days/day20.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use itertools::Itertools;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/days/day20.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |         items.insert(wrap_value((current_items_index as i128 + node.value as i128), items.len() as i128) as usize, node);
[INFO] [stdout]    |                                 ^                                                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 21 -         items.insert(wrap_value((current_items_index as i128 + node.value as i128), items.len() as i128) as usize, node);
[INFO] [stdout] 21 +         items.insert(wrap_value(current_items_index as i128 + node.value as i128, items.len() as i128) as usize, node);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::max`
[INFO] [stdout]  --> src/days/day21.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::max;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Map`
[INFO] [stdout]  --> src/days/day22.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::iter::Map;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `read_input`
[INFO] [stdout]  --> src/days/day22.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::common::{read_input, read_input_no_trim, wrap_value, wrap_value_around_bounds};
[INFO] [stdout]   |                     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Div`, `Mul`, `Rem`, and `Sub`
[INFO] [stdout]  --> src/common.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::{Add, Div, Mul, Rem, Sub};
[INFO] [stdout]   |                ^^^  ^^^  ^^^  ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/common/movement.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::{max, min};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Itertools`
[INFO] [stdout]  --> src/days/day16.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use itertools::{all, Itertools};
[INFO] [stdout]   |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day5.rs:64:22
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let (mut crates, mut instructions) = parse_input(input);
[INFO] [stdout]    |                      ----^^^^^^^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day5.rs:77:22
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let (mut crates, mut instructions) = parse_input(input);
[INFO] [stdout]    |                      ----^^^^^^^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day12.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut current_distance_to_neighbor = distances.get_mut(&neighbor_point).unwrap();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `valve_data`
[INFO] [stdout]   --> src/days/day16.rs:38:24
[INFO] [stdout]    |
[INFO] [stdout] 38 |     for (&valve_name, &valve_data) in valves {
[INFO] [stdout]    |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_valve_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day16.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Itertools`
[INFO] [stdout]  --> src/days/day16.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use itertools::{all, Itertools};
[INFO] [stdout]   |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day1.rs:63:13
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut day = Day1::new(input);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recipe_type`
[INFO] [stdout]    --> src/days/day19.rs:121:36
[INFO] [stdout]     |
[INFO] [stdout] 121 |     blueprint.recipes.iter().any(|(recipe_type, recipe_requirements)| {
[INFO] [stdout]     |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipe_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day19.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day5.rs:64:22
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let (mut crates, mut instructions) = parse_input(input);
[INFO] [stdout]    |                      ----^^^^^^^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/days/day21.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         _ => panic!()
[INFO] [stdout]    |         ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/days/day21.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         MonkeyJob::Yell(value) => *value,
[INFO] [stdout]    |         ---------------------- matches some of the same values
[INFO] [stdout] 26 |         MonkeyJob::Math(left_monkey_name, operation, right_monkey_name) => {
[INFO] [stdout]    |         --------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 35 |         _ => panic!()
[INFO] [stdout]    |         ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day5.rs:77:22
[INFO] [stdout]    |
[INFO] [stdout] 77 |     let (mut crates, mut instructions) = parse_input(input);
[INFO] [stdout]    |                      ----^^^^^^^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day21.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |     let mut monkeys = parse_input(input);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day22.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |     for i in 0..instruction.move_amount {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day22.rs:195:24
[INFO] [stdout]     |
[INFO] [stdout] 195 |     let ProgramInput { mut map, instructions } = parse_input(input);
[INFO] [stdout]     |                        ----^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day22.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]   --> src/days/day9.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn render_grid(visited_positions: &HashSet<Point>, rope: &Vec<Point>) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operation` is never used
[INFO] [stdout]  --> src/days/day11.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | enum Operation {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Identifier` is never used
[INFO] [stdout]   --> src/days/day11.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | enum Identifier {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `value` is never used
[INFO] [stdout]   --> src/days/day11.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Identifier {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 17 |     pub fn value(&self, old: &u128) -> u128 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MonkeyEquation` is never used
[INFO] [stdout]   --> src/days/day11.rs:25:6
[INFO] [stdout]    |
[INFO] [stdout] 25 | type MonkeyEquation = (Identifier, Operation, Identifier);
[INFO] [stdout]    |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_identifier` is never used
[INFO] [stdout]   --> src/days/day11.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn parse_identifier(value: &str) -> Identifier {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_equation` is never used
[INFO] [stdout]   --> src/days/day11.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn parse_equation(equation: &str) -> MonkeyEquation {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Monkey` is never constructed
[INFO] [stdout]   --> src/days/day11.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | struct Monkey {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]   --> src/days/day11.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Monkey {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn parse(lines: Vec<&str>, is_bored: bool) -> Monkey {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_operation` is never used
[INFO] [stdout]   --> src/days/day11.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn do_operation((left, operation, right): &MonkeyEquation, value: &u128) -> u128 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_monkey_diff` is never used
[INFO] [stdout]   --> src/days/day11.rs:88:4
[INFO] [stdout]    |
[INFO] [stdout] 88 | fn do_monkey_diff(monkey: &mut Monkey, mod_amount: u128) -> HashMap<usize, Vec<u128>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_round` is never used
[INFO] [stdout]    --> src/days/day11.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn do_round(monkeys: &mut Vec<Monkey>, mod_amount: u128) {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_rounds` is never used
[INFO] [stdout]    --> src/days/day11.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn do_rounds(input: &str, is_bored: bool, rounds: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day11.rs:129:4
[INFO] [stdout]     |
[INFO] [stdout] 129 | fn part1(input: &str) -> usize {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day11.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn part2(input: &str) -> usize {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day11.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HillMap` is never constructed
[INFO] [stdout]   --> src/days/day12.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct HillMap {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_accessible_neighbors`, `get_neighbors_that_could_access`, and `get_all_points` are never used
[INFO] [stdout]   --> src/days/day12.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl HillMap {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 17 |     fn get_accessible_neighbors(&self, point: &Point) -> Vec<Point> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn get_neighbors_that_could_access(&self, point: &Point) -> Vec<Point> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn get_all_points(&self) -> Vec<Point> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day12.rs:54:4
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn parse_input(input: &str) -> HillMap {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_djikstra` is never used
[INFO] [stdout]   --> src/days/day12.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn map_djikstra<F>(map: &HillMap, source: Point, get_neighbors: F) -> (HashMap<Point, u128>, HashMap<Point, Point>)
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_to_exit` is never used
[INFO] [stdout]    --> src/days/day12.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn path_to_exit(map: &HillMap) -> u128 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `path_from_exit` is never used
[INFO] [stdout]    --> src/days/day12.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn path_from_exit(map: &HillMap) -> u128 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day12.rs:141:4
[INFO] [stdout]     |
[INFO] [stdout] 141 | fn part1(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day12.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day12.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ListItem` is never used
[INFO] [stdout]   --> src/days/day13.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum ListItem {
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ListPair` is never used
[INFO] [stdout]   --> src/days/day13.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | type ListPair = (ListItem, ListItem);
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_list` is never used
[INFO] [stdout]   --> src/days/day13.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn parse_list(input: &str) -> ListItem {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_pairs` is never used
[INFO] [stdout]   --> src/days/day13.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn parse_pairs(input: &str) -> Vec<ListPair> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `value_as_list` is never used
[INFO] [stdout]   --> src/days/day13.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn value_as_list(value: &u128) -> ListItem {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_left_ordering` is never used
[INFO] [stdout]   --> src/days/day13.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn get_left_ordering(left: &ListItem, right: &ListItem) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/days/day13.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn part1(input: &Vec<ListPair>) -> usize {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day13.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn part2(input: &Vec<ListPair>) -> usize {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day13.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GridElement` is never used
[INFO] [stdout]  --> src/days/day14.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum GridElement {
[INFO] [stdout]   |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SandGrid` is never used
[INFO] [stdout]   --> src/days/day14.rs:13:6
[INFO] [stdout]    |
[INFO] [stdout] 13 | type SandGrid = Grid<GridElement>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SAND_FILL_SOURCE` is never used
[INFO] [stdout]   --> src/days/day14.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const SAND_FILL_SOURCE: Point = Point { x: 500, y: 0 };
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_visited` is never used
[INFO] [stdout]   --> src/days/day14.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn has_visited(grid: &SandGrid, point: &Point, floor_y_opt: Option<i128>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sand_resting_point` is never used
[INFO] [stdout]   --> src/days/day14.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn get_sand_resting_point(grid: &SandGrid, floor_y_opt: Option<i128>) -> Option<Point> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `range_between` is never used
[INFO] [stdout]   --> src/days/day14.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn range_between(a: i128, b: i128) -> RangeInclusive<i128> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `straight_line_between` is never used
[INFO] [stdout]   --> src/days/day14.rs:66:4
[INFO] [stdout]    |
[INFO] [stdout] 66 | fn straight_line_between(a: &Point, b: &Point) -> Vec<Point> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day14.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn parse_input(input: &str) -> SandGrid {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]   --> src/days/day14.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn render_grid(grid: &SandGrid) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day14.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn part1(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day14.rs:123:4
[INFO] [stdout]     |
[INFO] [stdout] 123 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day14.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/days/day15.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn parse_input(input: &str) -> HashMap<Point, Point> {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/days/day15.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn part1(input: &str, y: i128) -> u128 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `points_n_away` is never used
[INFO] [stdout]   --> src/days/day15.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn points_n_away(source_point: &Point, n: u128) -> Vec<Point> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/days/day15.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn part2(input: &str, max_coordinate: u128) -> u128 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/days/day15.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValveData` is never constructed
[INFO] [stdout]  --> src/days/day16.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct ValveData<'a> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day16.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_input(input: &str) -> Vec<ValveData> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dijkstra_step_count` is never used
[INFO] [stdout]   --> src/days/day16.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn dijkstra_step_count<'a>(valves: &'a HashMap<&'a str, &'a ValveData<'a>>, start_valve_name: &'a str) -> HashMap<&'a str, u128> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PressureSearchData` is never constructed
[INFO] [stdout]   --> src/days/day16.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | struct PressureSearchData<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `open_next_valve` is never used
[INFO] [stdout]   --> src/days/day16.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn open_next_valve(data: PressureSearchData) -> u128 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day16.rs:115:4
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn part1(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day16.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day16.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAMBER_WIDTH` is never used
[INFO] [stdout]  --> src/days/day17.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const CHAMBER_WIDTH: usize = 7;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAMBER_RANGE_X` is never used
[INFO] [stdout]   --> src/days/day17.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CHAMBER_RANGE_X: Range<usize> = 0..CHAMBER_WIDTH;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEFT_OFFSET_X` is never used
[INFO] [stdout]   --> src/days/day17.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const LEFT_OFFSET_X: usize = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_OFFSET_Y` is never used
[INFO] [stdout]   --> src/days/day17.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const BOTTOM_OFFSET_Y: usize = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_ROCK_OFFSET` is never used
[INFO] [stdout]   --> src/days/day17.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const DEFAULT_ROCK_OFFSET: Point = Point { x: LEFT_OFFSET_X as i128, y: BOTTOM_OFFSET_Y as i128 };
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PATTERNS` is never used
[INFO] [stdout]   --> src/days/day17.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const PATTERNS: &str = "####
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RockChamber` is never constructed
[INFO] [stdout]   --> src/days/day17.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct RockChamber {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/days/day17.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl RockChamber {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 40 |     pub fn new(jet_pattern: Vec<GridDirection>) -> RockChamber {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day17.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn parse_input(input: &str) -> Vec<GridDirection> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_patterns` is never used
[INFO] [stdout]   --> src/days/day17.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn parse_patterns() -> VecDeque<Vec<Point>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_legal_position` is never used
[INFO] [stdout]   --> src/days/day17.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn is_legal_position(chamber: &RockChamber, rock_positions: &Vec<Point>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_possible_grid` is never used
[INFO] [stdout]   --> src/days/day17.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn render_possible_grid(chamber: &RockChamber, positions: &Vec<Point>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_rock` is never used
[INFO] [stdout]    --> src/days/day17.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn place_rock(chamber: &mut RockChamber, pattern: &Vec<Point>) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]    --> src/days/day17.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn render_grid(chamber: &RockChamber) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day17.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn part1(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoopData` is never constructed
[INFO] [stdout]    --> src/days/day17.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | struct LoopData {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChamberConfiguration` is never constructed
[INFO] [stdout]    --> src/days/day17.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | struct ChamberConfiguration {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROW_CHECK_HEIGHT` is never used
[INFO] [stdout]    --> src/days/day17.rs:163:7
[INFO] [stdout]     |
[INFO] [stdout] 163 | const ROW_CHECK_HEIGHT: u128 = 50;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `serialize_chamber` is never used
[INFO] [stdout]    --> src/days/day17.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn serialize_chamber(chamber: &mut RockChamber, pattern_index: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_loop` is never used
[INFO] [stdout]    --> src/days/day17.rs:173:4
[INFO] [stdout]     |
[INFO] [stdout] 173 | fn find_loop(patterns: &VecDeque<Vec<Point>>, chamber: &mut RockChamber) -> LoopData {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TARGET_LOOP` is never used
[INFO] [stdout]    --> src/days/day17.rs:202:7
[INFO] [stdout]     |
[INFO] [stdout] 202 | const TARGET_LOOP: u128 = 1_000_000_000_000;
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day17.rs:204:4
[INFO] [stdout]     |
[INFO] [stdout] 204 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day17.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Axis3D` is never used
[INFO] [stdout]   --> src/days/day18.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Axis3D {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all` is never used
[INFO] [stdout]   --> src/days/day18.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Axis3D {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn all() -> Vec<Axis3D> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point3D` is never constructed
[INFO] [stdout]   --> src/days/day18.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Point3D {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `zero`, `get_axis_value`, `set_axis_value`, `get_moved_in_axis`, `get_with_axis_value`, and `neighbors` are never used
[INFO] [stdout]   --> src/days/day18.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Point3D {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 30 |     pub fn zero() -> Point3D {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn get_axis_value(&self, axis: Axis3D) -> &i128 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn set_axis_value(&mut self, axis: Axis3D, value: i128) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn get_moved_in_axis(&self, axis: Axis3D, amount: i128) -> Point3D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn get_with_axis_value(&self, axis: Axis3D, value: i128) -> Point3D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn neighbors(&self) -> Vec<Point3D> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day18.rs:73:4
[INFO] [stdout]    |
[INFO] [stdout] 73 | fn parse_input(input: &str) -> Vec<Point3D> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/days/day18.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn part1(input: &str) -> u128 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_in_bounds` is never used
[INFO] [stdout]   --> src/days/day18.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn is_in_bounds(point: &Point3D, ranges_by_axis: &HashMap<&Axis3D, RangeInclusive<i128>>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_open_faces` is never used
[INFO] [stdout]    --> src/days/day18.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn count_open_faces(points: &HashSet<Point3D>) -> u128 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day18.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day18.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResourceType` is never used
[INFO] [stdout]   --> src/days/day19.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum ResourceType {
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `all` and `from_str` are never used
[INFO] [stdout]   --> src/days/day19.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ResourceType {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] 18 |     pub fn all() -> Vec<ResourceType> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn from_str(value: &str) -> ResourceType {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RecipeCost` is never used
[INFO] [stdout]   --> src/days/day19.rs:38:6
[INFO] [stdout]    |
[INFO] [stdout] 38 | type RecipeCost = HashMap<ResourceType, u128>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BlueprintRecipes` is never used
[INFO] [stdout]   --> src/days/day19.rs:39:6
[INFO] [stdout]    |
[INFO] [stdout] 39 | type BlueprintRecipes = HashMap<ResourceType, RecipeCost>;
[INFO] [stdout]    |      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Blueprint` is never constructed
[INFO] [stdout]   --> src/days/day19.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | struct Blueprint {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/days/day19.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn parse_input(input: &str) -> Vec<Blueprint> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchData` is never constructed
[INFO] [stdout]   --> src/days/day19.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | struct SearchData<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_resources` is never used
[INFO] [stdout]   --> src/days/day19.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn merge_resources(a: &HashMap<ResourceType, u128>, b: &HashMap<ResourceType, u128>) -> HashMap<ResourceType, u128> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `purchase_resources` is never used
[INFO] [stdout]   --> src/days/day19.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn purchase_resources(owned: &HashMap<ResourceType, u128>, requirements: &RecipeCost) -> HashMap<ResourceType, u128> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `empty_resource_inventory` is never used
[INFO] [stdout]    --> src/days/day19.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn empty_resource_inventory() -> HashMap<ResourceType, u128> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `purchase_and_find_next` is never used
[INFO] [stdout]    --> src/days/day19.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn purchase_and_find_next(data: &SearchData, resources_after_minute: &RecipeCost, possible_robot_type: ResourceType) -> u128 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_robot_needed` is never used
[INFO] [stdout]    --> src/days/day19.rs:118:4
[INFO] [stdout]     |
[INFO] [stdout] 118 | fn is_robot_needed(blueprint: &Blueprint, robots_owned: &HashMap<ResourceType, u128>, robot_type: ResourceType) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max_geodes` is never used
[INFO] [stdout]    --> src/days/day19.rs:126:4
[INFO] [stdout]     |
[INFO] [stdout] 126 | fn find_max_geodes(data: SearchData) -> u128 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MINUTES_PART_1` is never used
[INFO] [stdout]    --> src/days/day19.rs:172:7
[INFO] [stdout]     |
[INFO] [stdout] 172 | const MINUTES_PART_1: u128 = 24;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/days/day19.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn part1(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/days/day19.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day19.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/days/day20.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn parse_input(input: &str) -> VecDeque<i128> {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/days/day20.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | struct Node {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mix_list` is never used
[INFO] [stdout]   --> src/days/day20.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn mix_list(items: &mut VecDeque<Node>) {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_grove_coordinates` is never used
[INFO] [stdout]   --> src/days/day20.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn find_grove_coordinates(items: &VecDeque<Node>) -> i128 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/days/day20.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn part1(input: &str) -> i128 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DECRYPTION_KEY` is never used
[INFO] [stdout]   --> src/days/day20.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const DECRYPTION_KEY: i128 = 811589153;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/days/day20.rs:41:4
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn part2(input: &str) -> i128 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/days/day20.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]    --> src/days/day22.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_grid(map: &WrapGrid, last_dir_by_point: &HashMap<Point, GridDirection>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbors` is never used
[INFO] [stdout]   --> src/days/day23.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn get_neighbors(point: &Point) -> Vec<Point> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_map` is never used
[INFO] [stdout]    --> src/days/day23.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn render_map(map: &HashSet<Point>) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `char_alphabet_position` is never used
[INFO] [stdout]   --> src/common.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn char_alphabet_position(value: char, is_lowercase: bool) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_along_axis`, `get_coord_by_axis`, `add`, and `manhattan_dist` are never used
[INFO] [stdout]    --> src/common/movement.rs:70:12
[INFO] [stdout]     |
[INFO] [stdout] 47  | impl Point {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70  |     pub fn move_along_axis(&mut self, axis: Axis, count: i128) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77  |     pub fn get_coord_by_axis(&self, axis: Axis) -> i128 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn add(&self, other: &Point) -> Point {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn manhattan_dist(&self, other: &Point) -> u128 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all` is never used
[INFO] [stdout]    --> src/common/movement.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | impl GridDirection {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 116 |     pub fn all() -> Vec<GridDirection> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Axis` is never used
[INFO] [stdout]    --> src/common/movement.rs:122:10
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub enum Axis {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_dir` and `opposite` are never used
[INFO] [stdout]    --> src/common/movement.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl Axis {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 128 |     pub fn from_dir(dir: GridDirection) -> Axis {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn opposite(&self) -> Axis {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Grid` is never constructed
[INFO] [stdout]    --> src/common/movement.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub struct Grid<T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/common/movement.rs:150:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl<T: 'static> Grid<T> {
[INFO] [stdout]     | ------------------------ associated items in this implementation
[INFO] [stdout] 150 |     pub fn new() -> Grid<T> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn visit(&mut self, point: Point, value: T) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn remove(&mut self, point: Point) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn has_visited(&self, point: &Point) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get_value(&self, point: &Point) -> Option<&T> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn get_x_bounds(&self) -> Bounds {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get_y_bounds(&self) -> Bounds {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day12.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut current_distance_to_neighbor = distances.get_mut(&neighbor_point).unwrap();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/days/day16.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_input(input: &str) -> Vec<ValveData> {
[INFO] [stdout]    |                       ^^^^         --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_input(input: &str) -> Vec<ValveData<'_>> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/days/day21.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_input(input: &str) -> HashMap<&str, MonkeyJob> {
[INFO] [stdout]    |                       ^^^^             ----  --------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_input(input: &str) -> HashMap<&str, MonkeyJob<'_>> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `valve_data`
[INFO] [stdout]   --> src/days/day16.rs:38:24
[INFO] [stdout]    |
[INFO] [stdout] 38 |     for (&valve_name, &valve_data) in valves {
[INFO] [stdout]    |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_valve_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day16.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `recipe_type`
[INFO] [stdout]    --> src/days/day19.rs:121:36
[INFO] [stdout]     |
[INFO] [stdout] 121 |     blueprint.recipes.iter().any(|(recipe_type, recipe_requirements)| {
[INFO] [stdout]     |                                    ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_recipe_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day19.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/days/day21.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         _ => panic!()
[INFO] [stdout]    |         ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/days/day21.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |         MonkeyJob::Yell(value) => *value,
[INFO] [stdout]    |         ---------------------- matches some of the same values
[INFO] [stdout] 26 |         MonkeyJob::Math(left_monkey_name, operation, right_monkey_name) => {
[INFO] [stdout]    |         --------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 35 |         _ => panic!()
[INFO] [stdout]    |         ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day21.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |     let mut monkeys = parse_input(input);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day22.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |     for i in 0..instruction.move_amount {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day22.rs:195:24
[INFO] [stdout]     |
[INFO] [stdout] 195 |     let ProgramInput { mut map, instructions } = parse_input(input);
[INFO] [stdout]     |                        ----^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> src/days/day22.rs:213:10
[INFO] [stdout]     |
[INFO] [stdout] 213 | fn part2(input: &str) -> u128 {
[INFO] [stdout]     |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]   --> src/days/day9.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn render_grid(visited_positions: &HashSet<Point>, rope: &Vec<Point>) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day11.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day12.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day13.rs:135:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]   --> src/days/day14.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn render_grid(grid: &SandGrid) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day14.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/days/day15.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day16.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_possible_grid` is never used
[INFO] [stdout]   --> src/days/day17.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn render_possible_grid(chamber: &RockChamber, positions: &Vec<Point>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]    --> src/days/day17.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn render_grid(chamber: &RockChamber) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day17.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day18.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]    --> src/days/day19.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn run() {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/days/day20.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn run() {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_grid` is never used
[INFO] [stdout]    --> src/days/day22.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn render_grid(map: &WrapGrid, last_dir_by_point: &HashMap<Point, GridDirection>) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_neighbors` is never used
[INFO] [stdout]   --> src/days/day23.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn get_neighbors(point: &Point) -> Vec<Point> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_map` is never used
[INFO] [stdout]    --> src/days/day23.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn render_map(map: &HashSet<Point>) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `move_along_axis` and `get_coord_by_axis` are never used
[INFO] [stdout]   --> src/common/movement.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | impl Point {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn move_along_axis(&mut self, axis: Axis, count: i128) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn get_coord_by_axis(&self, axis: Axis) -> i128 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Axis` is never used
[INFO] [stdout]    --> src/common/movement.rs:122:10
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub enum Axis {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_dir` and `opposite` are never used
[INFO] [stdout]    --> src/common/movement.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl Axis {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 128 |     pub fn from_dir(dir: GridDirection) -> Axis {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn opposite(&self) -> Axis {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove` is never used
[INFO] [stdout]    --> src/common/movement.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl<T: 'static> Grid<T> {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn remove(&mut self, point: Point) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/days/day16.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_input(input: &str) -> Vec<ValveData> {
[INFO] [stdout]    |                       ^^^^         --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_input(input: &str) -> Vec<ValveData<'_>> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/days/day21.rs:39:23
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_input(input: &str) -> HashMap<&str, MonkeyJob> {
[INFO] [stdout]    |                       ^^^^             ----  --------- the lifetimes get resolved as `'_`
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the lifetimes get resolved as `'_`
[INFO] [stdout]    |                       this lifetime flows to the output
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn parse_input(input: &str) -> HashMap<&str, MonkeyJob<'_>> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.57s
[INFO] running `Command { std: "docker" "inspect" "0b4f7326d61a01daa6aab0e3f1c816b92106fdcc814be836ef7d7c9037687890", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0b4f7326d61a01daa6aab0e3f1c816b92106fdcc814be836ef7d7c9037687890", kill_on_drop: false }`
[INFO] [stdout] 0b4f7326d61a01daa6aab0e3f1c816b92106fdcc814be836ef7d7c9037687890
