[INFO] cloning repository https://github.com/ActuallyRuben/aoc2024
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ActuallyRuben/aoc2024" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FActuallyRuben%2Faoc2024", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FActuallyRuben%2Faoc2024'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e42cacd55a4993a4cdd15c7d8e4838c78ee55011
[INFO] checking ActuallyRuben/aoc2024 against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146470
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FActuallyRuben%2Faoc2024" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ActuallyRuben/aoc2024
[INFO] finished tweaking git repo https://github.com/ActuallyRuben/aoc2024
[INFO] tweaked toml for git repo https://github.com/ActuallyRuben/aoc2024 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ActuallyRuben/aoc2024 on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ActuallyRuben/aoc2024 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" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ff576d983b02a1bf70f5b162a726adb4fdb371dc30e6ee7d598dc71630fd52a9
[INFO] running `Command { std: "docker" "start" "-a" "ff576d983b02a1bf70f5b162a726adb4fdb371dc30e6ee7d598dc71630fd52a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ff576d983b02a1bf70f5b162a726adb4fdb371dc30e6ee7d598dc71630fd52a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ff576d983b02a1bf70f5b162a726adb4fdb371dc30e6ee7d598dc71630fd52a9", kill_on_drop: false }`
[INFO] [stdout] ff576d983b02a1bf70f5b162a726adb4fdb371dc30e6ee7d598dc71630fd52a9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7d8070acdeca3bc35becf98b68d1be6db5a1fd5da750513188e7d2b1b85035a7
[INFO] running `Command { std: "docker" "start" "-a" "7d8070acdeca3bc35becf98b68d1be6db5a1fd5da750513188e7d2b1b85035a7", kill_on_drop: false }`
[INFO] [stderr]    Compiling crossbeam-utils v0.8.20
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking aoc2024 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: function `run_program` is never used
[INFO] [stdout]   --> src/day17.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn run_program(mut a: usize, mut b: usize, mut c: usize, program: &[usize]) -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/day23.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |                       ^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                       |
[INFO] [stdout]   |                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections<'_> {
[INFO] [stdout]   |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/day24.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |                       ^^^^             ^^^^  ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the same lifetime is elided here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate<'_>> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_program` is never used
[INFO] [stdout]   --> src/day17.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn run_program(mut a: usize, mut b: usize, mut c: usize, program: &[usize]) -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/day23.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |                       ^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                       |
[INFO] [stdout]   |                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections<'_> {
[INFO] [stdout]   |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/day24.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |                       ^^^^             ^^^^  ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the same lifetime is elided here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate<'_>> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIMEOUT` is never used
[INFO] [stdout]   --> src/main.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const TIMEOUT: Duration = Duration::from_millis(500);
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/day1.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn parse_input(input: &str) -> impl Iterator<Item = (isize, isize)> + '_ {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day1.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day1.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]  --> src/day10.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day10.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_rocks` is never used
[INFO] [stdout]  --> src/day11.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn count_rocks(value: usize, blinks_left: usize, cache: &mut [HashMap<usize, usize>]) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day11.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day11.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_plot_perimeter_area` is never used
[INFO] [stdout]  --> src/day12.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn get_plot_perimeter_area(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day12.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_plot_sides_area` is never used
[INFO] [stdout]   --> src/day12.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn get_plot_sides_area(location: (usize, usize), grid: &mut RefGrid<Vec<u8>>) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_corners` is never used
[INFO] [stdout]   --> src/day12.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn count_corners(location: (usize, usize), grid: &mut RefGrid<Vec<u8>>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day12.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Machine` is never constructed
[INFO] [stdout]  --> src/day13.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Machine {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_button` is never used
[INFO] [stdout]  --> src/day13.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn parse_button(input: &str) -> (isize, isize) {
[INFO] [stdout]   |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_machine` is never used
[INFO] [stdout]   --> src/day13.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_machine(input: &str) -> Machine {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solve_machine` is never used
[INFO] [stdout]   --> src/day13.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn solve_machine(machine: Machine) -> Option<isize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day13.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day13.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `v` is never read
[INFO] [stdout]   --> src/day14.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Robot {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 10 |     p: (isize, isize),
[INFO] [stdout] 11 |     v: (isize, isize),
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `simulate` and `quadrant` are never used
[INFO] [stdout]   --> src/day14.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Robot {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 15 |     fn simulate(&mut self, steps: usize) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn quadrant(&self) -> Option<usize> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day14.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day14.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_score` is never used
[INFO] [stdout]  --> src/day15.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn calc_score(grid: &RefGrid<impl Deref<Target = [u8]>>, target: u8) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_move` is never used
[INFO] [stdout]   --> src/day15.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn try_move(
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day15.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_move` is never used
[INFO] [stdout]   --> src/day15.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn can_move(
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_move` is never used
[INFO] [stdout]   --> src/day15.rs:76:4
[INFO] [stdout]    |
[INFO] [stdout] 76 | fn do_move(
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day15.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]  --> src/day16.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Position {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `estimate_cost` and `do_move` are never used
[INFO] [stdout]   --> src/day16.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 33 |     fn estimate_cost(self, (goal_x, goal_y): (usize, usize)) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn do_move(
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_to_number` is never used
[INFO] [stdout]   --> src/day16.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn dir_to_number(dir: Direction) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number_to_dir` is never used
[INFO] [stdout]   --> src/day16.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn number_to_dir(dir: usize) -> Direction {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day16.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day16.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MachineState` is never constructed
[INFO] [stdout]  --> src/day17.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct MachineState<'a> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/day17.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<'a> MachineState<'a> {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(a: usize, b: usize, c: usize, program: &'a [usize]) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_program` is never used
[INFO] [stdout]   --> src/day17.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn run_program(mut a: usize, mut b: usize, mut c: usize, program: &[usize]) -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day17.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn part1(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day17.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_multiple_of_two` is never used
[INFO] [stdout]    --> src/day17.rs:147:4
[INFO] [stdout]     |
[INFO] [stdout] 147 | fn next_multiple_of_two(value: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Node` is never used
[INFO] [stdout]  --> src/day18.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Node {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/day18.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct Position {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `a_star` is never used
[INFO] [stdout]   --> src/day18.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn a_star(start: (usize, usize), end: (usize, usize), grid: &mut Grid<Node>) -> Option<usize> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day18.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day18.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn part2(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_make_pattern` is never used
[INFO] [stdout]  --> src/day19.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn can_make_pattern(pattern: &[u8], towels: &[&[u8]]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day19.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_options` is never used
[INFO] [stdout]   --> src/day19.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn pattern_options<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day19.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]  --> src/day2.rs:2:6
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum Direction {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_direction` is never used
[INFO] [stdout]  --> src/day2.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn get_direction(diff: isize) -> Option<Direction> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_safe` is never used
[INFO] [stdout]   --> src/day2.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn is_safe(mut report: impl Iterator<Item = isize>) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day2.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_damped_safe` is never used
[INFO] [stdout]   --> src/day2.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn is_damped_safe(report: impl ExactSizeIterator<Item = isize> + Clone) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day2.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/day20.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Node {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `manhattan` is never used
[INFO] [stdout]   --> src/day20.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn manhattan((x1, y1): (usize, usize), (x2, y2): (usize, usize)) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_shortcuts` is never used
[INFO] [stdout]   --> src/day20.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn find_shortcuts(costs: &Grid<usize>, min_timesave: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_long_shortcuts` is never used
[INFO] [stdout]   --> src/day20.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_long_shortcuts(costs: &Grid<usize>, distance: usize, min_timesave: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `a_star` is never used
[INFO] [stdout]   --> src/day20.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn a_star(
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/day20.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day20.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_movements` is never used
[INFO] [stdout]  --> src/day21.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn make_movements(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_num_code` is never used
[INFO] [stdout]   --> src/day21.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn input_num_code(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_dir_code` is never used
[INFO] [stdout]   --> src/day21.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn input_dir_code(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/day21.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day21.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_secret` is never used
[INFO] [stdout]  --> src/day22.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn next_secret(mut secret: u32) -> u32 {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day22.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `price` is never used
[INFO] [stdout]   --> src/day22.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn price(secret: u32) -> i32 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_changelist_multi` is never used
[INFO] [stdout]   --> src/day22.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn make_changelist_multi(secret: &mut [u32]) -> [HashMap<[i32; 4], i32>; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_changelist` is never used
[INFO] [stdout]   --> src/day22.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn make_changelist(mut secret: u32) -> HashMap<[i32; 4], i32> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day22.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn part2(input: &str) -> i32 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Connections` is never used
[INFO] [stdout]  --> src/day23.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type Connections<'a> = HashMap<&'a str, HashSet<&'a str>>;
[INFO] [stdout]   |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/day23.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day23.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max_group` is never used
[INFO] [stdout]   --> src/day23.rs:41:4
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn find_max_group<'a>(connections: &Connections<'a>) -> Option<HashSet<&'a str>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max_group_rec` is never used
[INFO] [stdout]   --> src/day23.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_max_group_rec<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day23.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn part2(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Gate` is never used
[INFO] [stdout]  --> src/day24.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum Gate<'a> {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/day24.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval_gates` is never used
[INFO] [stdout]   --> src/day24.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn eval_gates<'a>(key: &str, gates: &mut HashMap<&'a str, Gate<'a>>) -> Option<bool> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day24.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_number` is never used
[INFO] [stdout]  --> src/day3.rs:1:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fn split_number(input: &str, sep: char) -> Option<(usize, &str)> {
[INFO] [stdout]   |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day3.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn part1(mut input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day3.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part2(mut input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matches` is never used
[INFO] [stdout]  --> src/day4.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn matches(grid: &RefGrid<&[u8]>, text: &[u8], x: usize, y: usize, dx: isize, dy: isize) -> bool {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day4.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day4.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_valid` is never used
[INFO] [stdout]  --> src/day5.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn print_valid(rels: &HashMap<usize, HashSet<usize>>, seq: &[usize]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_invalid` is never used
[INFO] [stdout]   --> src/day5.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fix_invalid(rels: &HashMap<usize, HashSet<usize>>, seq: &mut [usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day5.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day5.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Guard` is never constructed
[INFO] [stdout]  --> src/day6.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Guard {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day6.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_escape` is never used
[INFO] [stdout]   --> src/day6.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn can_escape(
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day6.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]  --> src/day7.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn parse_line(line: &str) -> (usize, Vec<usize>) {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_fit` is never used
[INFO] [stdout]   --> src/day7.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn can_fit(total: usize, values: &[usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day7.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deconcat` is never used
[INFO] [stdout]   --> src/day7.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn deconcat(rhs: usize, result: usize) -> Option<usize> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_fit_concat` is never used
[INFO] [stdout]   --> src/day7.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn can_fit_concat(total: usize, values: &[usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day7.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_antennas` is never used
[INFO] [stdout]  --> src/day8.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn find_antennas<T: Deref<Target = [u8]>>(
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_antinodes` is never used
[INFO] [stdout]   --> src/day8.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn calc_antinodes(a: (usize, usize), b: (usize, usize)) -> impl Iterator<Item = (usize, usize)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day8.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_all_antinodes` is never used
[INFO] [stdout]   --> src/day8.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn calc_all_antinodes<T>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day8.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_filesystem` is never used
[INFO] [stdout]  --> src/day9.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_filesystem<B: FromIterator<Space>>(input: &str) -> B {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day9.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Space` is never used
[INFO] [stdout]   --> src/day9.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Space {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day9.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_linkedlist` is never used
[INFO] [stdout]   --> src/util/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn map_linkedlist<T>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_digits` is never used
[INFO] [stdout]   --> src/util/mod.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn count_digits(mut value: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]   --> src/util/grid.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T> Grid<T> {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn contains(&self, (x, y): (usize, usize)) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Permutable` is never used
[INFO] [stdout]  --> src/util/permutations.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait Permutable: Iterator + Clone + Sized
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Permutations` is never constructed
[INFO] [stdout]   --> src/util/permutations.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Permutations<I: Iterator + Clone>
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `height` is never read
[INFO] [stdout]  --> src/util/refgrid.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct RefGrid<T> {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] 6 |     width: usize,
[INFO] [stdout] 7 |     height: usize,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `RefGrid` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> src/util/refgrid.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<'a> RefGrid<&'a [u8]> {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn from_str(input: &'a str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_str_cloned` and `from_string` are never used
[INFO] [stdout]   --> src/util/refgrid.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl RefGrid<Vec<u8>> {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] 24 |     pub fn from_str_cloned(input: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn from_string(input: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `height`, `contains`, and `iter` are never used
[INFO] [stdout]   --> src/util/refgrid.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl<T> RefGrid<T> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn height(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn contains(&self, (x, y): (usize, usize)) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn iter(&self) -> impl Iterator<Item = ((usize, usize), &u8)>
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/day23.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |                       ^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                       |
[INFO] [stdout]   |                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections<'_> {
[INFO] [stdout]   |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/day24.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |                       ^^^^             ^^^^  ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the same lifetime is elided here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate<'_>> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIMEOUT` is never used
[INFO] [stdout]   --> src/main.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const TIMEOUT: Duration = Duration::from_millis(500);
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/day1.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn parse_input(input: &str) -> impl Iterator<Item = (isize, isize)> + '_ {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day1.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day1.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]  --> src/day10.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day10.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_rocks` is never used
[INFO] [stdout]  --> src/day11.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn count_rocks(value: usize, blinks_left: usize, cache: &mut [HashMap<usize, usize>]) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day11.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day11.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_plot_perimeter_area` is never used
[INFO] [stdout]  --> src/day12.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn get_plot_perimeter_area(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day12.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_plot_sides_area` is never used
[INFO] [stdout]   --> src/day12.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn get_plot_sides_area(location: (usize, usize), grid: &mut RefGrid<Vec<u8>>) -> (usize, usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_corners` is never used
[INFO] [stdout]   --> src/day12.rs:87:4
[INFO] [stdout]    |
[INFO] [stdout] 87 | fn count_corners(location: (usize, usize), grid: &mut RefGrid<Vec<u8>>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day12.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Machine` is never constructed
[INFO] [stdout]  --> src/day13.rs:2:8
[INFO] [stdout]   |
[INFO] [stdout] 2 | struct Machine {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_button` is never used
[INFO] [stdout]  --> src/day13.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn parse_button(input: &str) -> (isize, isize) {
[INFO] [stdout]   |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_machine` is never used
[INFO] [stdout]   --> src/day13.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn parse_machine(input: &str) -> Machine {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solve_machine` is never used
[INFO] [stdout]   --> src/day13.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn solve_machine(machine: Machine) -> Option<isize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day13.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day13.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `v` is never read
[INFO] [stdout]   --> src/day14.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Robot {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 10 |     p: (isize, isize),
[INFO] [stdout] 11 |     v: (isize, isize),
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `simulate` and `quadrant` are never used
[INFO] [stdout]   --> src/day14.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Robot {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 15 |     fn simulate(&mut self, steps: usize) {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn quadrant(&self) -> Option<usize> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day14.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day14.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_score` is never used
[INFO] [stdout]  --> src/day15.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn calc_score(grid: &RefGrid<impl Deref<Target = [u8]>>, target: u8) -> usize {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_move` is never used
[INFO] [stdout]   --> src/day15.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn try_move(
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day15.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_move` is never used
[INFO] [stdout]   --> src/day15.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn can_move(
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_move` is never used
[INFO] [stdout]   --> src/day15.rs:76:4
[INFO] [stdout]    |
[INFO] [stdout] 76 | fn do_move(
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day15.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]  --> src/day16.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Position {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `estimate_cost` and `do_move` are never used
[INFO] [stdout]   --> src/day16.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 33 |     fn estimate_cost(self, (goal_x, goal_y): (usize, usize)) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn do_move(
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dir_to_number` is never used
[INFO] [stdout]   --> src/day16.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn dir_to_number(dir: Direction) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number_to_dir` is never used
[INFO] [stdout]   --> src/day16.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn number_to_dir(dir: usize) -> Direction {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day16.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day16.rs:117:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MachineState` is never constructed
[INFO] [stdout]  --> src/day17.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | struct MachineState<'a> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/day17.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<'a> MachineState<'a> {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 10 |     fn new(a: usize, b: usize, c: usize, program: &'a [usize]) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_program` is never used
[INFO] [stdout]   --> src/day17.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn run_program(mut a: usize, mut b: usize, mut c: usize, program: &[usize]) -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day17.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn part1(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day17.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_multiple_of_two` is never used
[INFO] [stdout]    --> src/day17.rs:147:4
[INFO] [stdout]     |
[INFO] [stdout] 147 | fn next_multiple_of_two(value: usize) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Node` is never used
[INFO] [stdout]  --> src/day18.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Node {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/day18.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | struct Position {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `a_star` is never used
[INFO] [stdout]   --> src/day18.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn a_star(start: (usize, usize), end: (usize, usize), grid: &mut Grid<Node>) -> Option<usize> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day18.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day18.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn part2(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_make_pattern` is never used
[INFO] [stdout]  --> src/day19.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn can_make_pattern(pattern: &[u8], towels: &[&[u8]]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day19.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pattern_options` is never used
[INFO] [stdout]   --> src/day19.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn pattern_options<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day19.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]  --> src/day2.rs:2:6
[INFO] [stdout]   |
[INFO] [stdout] 2 | enum Direction {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_direction` is never used
[INFO] [stdout]  --> src/day2.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn get_direction(diff: isize) -> Option<Direction> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_safe` is never used
[INFO] [stdout]   --> src/day2.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn is_safe(mut report: impl Iterator<Item = isize>) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day2.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn part1(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_damped_safe` is never used
[INFO] [stdout]   --> src/day2.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn is_damped_safe(report: impl ExactSizeIterator<Item = isize> + Clone) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day2.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn part2(input: &str) -> isize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]  --> src/day20.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | struct Node {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `manhattan` is never used
[INFO] [stdout]   --> src/day20.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn manhattan((x1, y1): (usize, usize), (x2, y2): (usize, usize)) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_shortcuts` is never used
[INFO] [stdout]   --> src/day20.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn find_shortcuts(costs: &Grid<usize>, min_timesave: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_long_shortcuts` is never used
[INFO] [stdout]   --> src/day20.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_long_shortcuts(costs: &Grid<usize>, distance: usize, min_timesave: usize) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `a_star` is never used
[INFO] [stdout]   --> src/day20.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn a_star(
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/day20.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day20.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_movements` is never used
[INFO] [stdout]  --> src/day21.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn make_movements(
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_num_code` is never used
[INFO] [stdout]   --> src/day21.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn input_num_code(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `input_dir_code` is never used
[INFO] [stdout]   --> src/day21.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn input_dir_code(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]    --> src/day21.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]    --> src/day21.rs:137:8
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `next_secret` is never used
[INFO] [stdout]  --> src/day22.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn next_secret(mut secret: u32) -> u32 {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day22.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `price` is never used
[INFO] [stdout]   --> src/day22.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn price(secret: u32) -> i32 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_changelist_multi` is never used
[INFO] [stdout]   --> src/day22.rs:28:4
[INFO] [stdout]    |
[INFO] [stdout] 28 | fn make_changelist_multi(secret: &mut [u32]) -> [HashMap<[i32; 4], i32>; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_changelist` is never used
[INFO] [stdout]   --> src/day22.rs:53:4
[INFO] [stdout]    |
[INFO] [stdout] 53 | fn make_changelist(mut secret: u32) -> HashMap<[i32; 4], i32> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day22.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn part2(input: &str) -> i32 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Connections` is never used
[INFO] [stdout]  --> src/day23.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | type Connections<'a> = HashMap<&'a str, HashSet<&'a str>>;
[INFO] [stdout]   |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]  --> src/day23.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day23.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max_group` is never used
[INFO] [stdout]   --> src/day23.rs:41:4
[INFO] [stdout]    |
[INFO] [stdout] 41 | fn find_max_group<'a>(connections: &Connections<'a>) -> Option<HashSet<&'a str>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_max_group_rec` is never used
[INFO] [stdout]   --> src/day23.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_max_group_rec<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day23.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn part2(input: &str) -> String {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Gate` is never used
[INFO] [stdout]  --> src/day24.rs:4:6
[INFO] [stdout]   |
[INFO] [stdout] 4 | enum Gate<'a> {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_input` is never used
[INFO] [stdout]   --> src/day24.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval_gates` is never used
[INFO] [stdout]   --> src/day24.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn eval_gates<'a>(key: &str, gates: &mut HashMap<&'a str, Gate<'a>>) -> Option<bool> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day24.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_number` is never used
[INFO] [stdout]  --> src/day3.rs:1:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fn split_number(input: &str, sep: char) -> Option<(usize, &str)> {
[INFO] [stdout]   |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day3.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn part1(mut input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day3.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part2(mut input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matches` is never used
[INFO] [stdout]  --> src/day4.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn matches(grid: &RefGrid<&[u8]>, text: &[u8], x: usize, y: usize, dx: isize, dy: isize) -> bool {
[INFO] [stdout]   |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day4.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day4.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_valid` is never used
[INFO] [stdout]  --> src/day5.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn print_valid(rels: &HashMap<usize, HashSet<usize>>, seq: &[usize]) -> bool {
[INFO] [stdout]   |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fix_invalid` is never used
[INFO] [stdout]   --> src/day5.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fix_invalid(rels: &HashMap<usize, HashSet<usize>>, seq: &mut [usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day5.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day5.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Guard` is never constructed
[INFO] [stdout]  --> src/day6.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Guard {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day6.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_escape` is never used
[INFO] [stdout]   --> src/day6.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn can_escape(
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day6.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]  --> src/day7.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn parse_line(line: &str) -> (usize, Vec<usize>) {
[INFO] [stdout]   |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_fit` is never used
[INFO] [stdout]   --> src/day7.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn can_fit(total: usize, values: &[usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day7.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `deconcat` is never used
[INFO] [stdout]   --> src/day7.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn deconcat(rhs: usize, result: usize) -> Option<usize> {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_fit_concat` is never used
[INFO] [stdout]   --> src/day7.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn can_fit_concat(total: usize, values: &[usize]) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day7.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_antennas` is never used
[INFO] [stdout]  --> src/day8.rs:5:4
[INFO] [stdout]   |
[INFO] [stdout] 5 | fn find_antennas<T: Deref<Target = [u8]>>(
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_antinodes` is never used
[INFO] [stdout]   --> src/day8.rs:18:4
[INFO] [stdout]    |
[INFO] [stdout] 18 | fn calc_antinodes(a: (usize, usize), b: (usize, usize)) -> impl Iterator<Item = (usize, usize)> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day8.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_all_antinodes` is never used
[INFO] [stdout]   --> src/day8.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn calc_all_antinodes<T>(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day8.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_filesystem` is never used
[INFO] [stdout]  --> src/day9.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_filesystem<B: FromIterator<Space>>(input: &str) -> B {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part1` is never used
[INFO] [stdout]   --> src/day9.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn part1(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Space` is never used
[INFO] [stdout]   --> src/day9.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Space {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2` is never used
[INFO] [stdout]   --> src/day9.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn part2(input: &str) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `map_linkedlist` is never used
[INFO] [stdout]   --> src/util/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn map_linkedlist<T>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_digits` is never used
[INFO] [stdout]   --> src/util/mod.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn count_digits(mut value: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]   --> src/util/grid.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T> Grid<T> {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn contains(&self, (x, y): (usize, usize)) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `height` is never read
[INFO] [stdout]  --> src/util/refgrid.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct RefGrid<T> {
[INFO] [stdout]   |            ------- field in this struct
[INFO] [stdout] 6 |     width: usize,
[INFO] [stdout] 7 |     height: usize,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `RefGrid` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> src/util/refgrid.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<'a> RefGrid<&'a [u8]> {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn from_str(input: &'a str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_str_cloned` and `from_string` are never used
[INFO] [stdout]   --> src/util/refgrid.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl RefGrid<Vec<u8>> {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] 24 |     pub fn from_str_cloned(input: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn from_string(input: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `height`, `contains`, and `iter` are never used
[INFO] [stdout]   --> src/util/refgrid.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl<T> RefGrid<T> {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn height(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn contains(&self, (x, y): (usize, usize)) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn iter(&self) -> impl Iterator<Item = ((usize, usize), &u8)>
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]  --> src/day23.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections {
[INFO] [stdout]   |                       ^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]   |                       |
[INFO] [stdout]   |                       the lifetime is elided here
[INFO] [stdout]   |
[INFO] [stdout]   = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]   = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn parse_input(input: &str) -> Connections<'_> {
[INFO] [stdout]   |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/day24.rs:11:23
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate> {
[INFO] [stdout]    |                       ^^^^             ^^^^  ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |                |
[INFO] [stdout]    |                       |                the same lifetime is elided here
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_input(input: &str) -> HashMap<&str, Gate<'_>> {
[INFO] [stdout]    |                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.24s
[INFO] running `Command { std: "docker" "inspect" "7d8070acdeca3bc35becf98b68d1be6db5a1fd5da750513188e7d2b1b85035a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7d8070acdeca3bc35becf98b68d1be6db5a1fd5da750513188e7d2b1b85035a7", kill_on_drop: false }`
[INFO] [stdout] 7d8070acdeca3bc35becf98b68d1be6db5a1fd5da750513188e7d2b1b85035a7
