[INFO] cloning repository https://github.com/jacknugent1529/advent-of-code-2021
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jacknugent1529/advent-of-code-2021" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjacknugent1529%2Fadvent-of-code-2021", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjacknugent1529%2Fadvent-of-code-2021'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f2d397ff1a34f42eeade0d236327de44f25c10d7
[INFO] checking jacknugent1529/advent-of-code-2021 against master#b0696a5160711c068cb1f01b7437db7990d15750 for pr-121848
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjacknugent1529%2Fadvent-of-code-2021" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jacknugent1529/advent-of-code-2021 on toolchain b0696a5160711c068cb1f01b7437db7990d15750
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b0696a5160711c068cb1f01b7437db7990d15750" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jacknugent1529/advent-of-code-2021
[INFO] finished tweaking git repo https://github.com/jacknugent1529/advent-of-code-2021
[INFO] tweaked toml for git repo https://github.com/jacknugent1529/advent-of-code-2021 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/jacknugent1529/advent-of-code-2021 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" "+b0696a5160711c068cb1f01b7437db7990d15750" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[ERROR] this task or one of its parent failed!
[ERROR] no output for 300 seconds
[ERROR] note: run with `RUST_BACKTRACE=1` to display a backtrace.
[INFO] checking jacknugent1529/advent-of-code-2021 against try#bfe97fcae016881ad333f0ff8cea2cadb9cf136c for pr-121848
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjacknugent1529%2Fadvent-of-code-2021" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/jacknugent1529/advent-of-code-2021 on toolchain bfe97fcae016881ad333f0ff8cea2cadb9cf136c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bfe97fcae016881ad333f0ff8cea2cadb9cf136c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/jacknugent1529/advent-of-code-2021
[INFO] finished tweaking git repo https://github.com/jacknugent1529/advent-of-code-2021
[INFO] tweaked toml for git repo https://github.com/jacknugent1529/advent-of-code-2021 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/jacknugent1529/advent-of-code-2021 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" "+bfe97fcae016881ad333f0ff8cea2cadb9cf136c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[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-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+bfe97fcae016881ad333f0ff8cea2cadb9cf136c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6532c12598da3ffae3845aa0fbe01ad15f83960303521f2eea8959d75b5b70a1
[INFO] running `Command { std: "docker" "start" "-a" "6532c12598da3ffae3845aa0fbe01ad15f83960303521f2eea8959d75b5b70a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6532c12598da3ffae3845aa0fbe01ad15f83960303521f2eea8959d75b5b70a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6532c12598da3ffae3845aa0fbe01ad15f83960303521f2eea8959d75b5b70a1", kill_on_drop: false }`
[INFO] [stdout] 6532c12598da3ffae3845aa0fbe01ad15f83960303521f2eea8959d75b5b70a1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+bfe97fcae016881ad333f0ff8cea2cadb9cf136c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b3b32e59646b3ae1d8c65476f6eeac33947554ca3e9c7c1fc3436506b2cb61f1
[INFO] running `Command { std: "docker" "start" "-a" "b3b32e59646b3ae1d8c65476f6eeac33947554ca3e9c7c1fc3436506b2cb61f1", kill_on_drop: false }`
[INFO] [stderr]     Checking advent-of-code-2021 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/days/day4.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashSet`
[INFO] [stdout]  --> src/days/day4.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::collections::HashSet;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]  --> src/days/day15.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::str::FromStr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Eq` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cmp::Eq;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `Eq` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Ord` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::cmp::Ord;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `Ord` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `PartialOrd` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::cmp::PartialOrd;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `PartialOrd` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `PartialEq` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cmp::PartialEq;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `PartialEq` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Scan`
[INFO] [stdout]  --> src/days/day19.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::iter::Scan;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Index`
[INFO] [stdout]  --> src/days/day20.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Index;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]  --> src/days/day15.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::str::FromStr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Eq` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cmp::Eq;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `Eq` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `Ord` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::cmp::Ord;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `Ord` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `PartialOrd` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::cmp::PartialOrd;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `PartialOrd` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the item `PartialEq` is imported redundantly
[INFO] [stdout]  --> src/days/day15.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::cmp::PartialEq;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  --> /rustc/bfe97fcae016881ad333f0ff8cea2cadb9cf136c/library/std/src/prelude/mod.rs:115:13
[INFO] [stdout]   |
[INFO] [stdout]   = note: the item `PartialEq` is already defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Scan`
[INFO] [stdout]  --> src/days/day19.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::iter::Scan;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/days/day20.rs:186:21
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let bytes = (nrows * ncols/8);
[INFO] [stdout]     |                     ^               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -         let bytes = (nrows * ncols/8);
[INFO] [stdout] 186 +         let bytes = nrows * ncols/8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Index`
[INFO] [stdout]  --> src/days/day20.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops::Index;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/days/day20.rs:186:21
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let bytes = (nrows * ncols/8);
[INFO] [stdout]     |                     ^               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -         let bytes = (nrows * ncols/8);
[INFO] [stdout] 186 +         let bytes = nrows * ncols/8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> src/days/day21.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | /     loop {
[INFO] [stdout] 27 | |         if game.take_turn() {
[INFO] [stdout] 28 | |             // winner
[INFO] [stdout] 29 | |             println!("game final state: {:?}", game);
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |         //println!("game state: {:?}", game);
[INFO] [stdout] 34 | |     }
[INFO] [stdout]    | |_____- any code following this expression is unreachable
[INFO] [stdout] 35 |       Err("ERROR: Not implemented".to_string())
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]   --> src/days/day21.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | /     loop {
[INFO] [stdout] 27 | |         if game.take_turn() {
[INFO] [stdout] 28 | |             // winner
[INFO] [stdout] 29 | |             println!("game final state: {:?}", game);
[INFO] [stdout] ...  |
[INFO] [stdout] 33 | |         //println!("game state: {:?}", game);
[INFO] [stdout] 34 | |     }
[INFO] [stdout]    | |_____- any code following this expression is unreachable
[INFO] [stdout] 35 |       Err("ERROR: Not implemented".to_string())
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/days/day3.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let n = file_str.lines().by_ref().next().unwrap().len();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boards_remaining`
[INFO] [stdout]   --> src/days/day4.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut boards_remaining = boards.len();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boards_remaining`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day4.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut boards_remaining = boards.len();
[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: `n`
[INFO] [stdout]   --> src/days/day3.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let n = file_str.lines().by_ref().next().unwrap().len();
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boards_remaining`
[INFO] [stdout]   --> src/days/day4.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut boards_remaining = boards.len();
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boards_remaining`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/days/day4.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 |     let mut boards_remaining = boards.len();
[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: `first`
[INFO] [stdout]   --> src/days/day14.rs:93:81
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |                                                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_first`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last`
[INFO] [stdout]   --> src/days/day14.rs:93:94
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |                                                                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_last`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first`
[INFO] [stdout]   --> src/days/day14.rs:93:81
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |                                                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_first`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last`
[INFO] [stdout]   --> src/days/day14.rs:93:94
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |                                                                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_last`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day20.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut i = 0;
[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/day20.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut i = 0;
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chars`
[INFO] [stdout]    --> src/days/day20.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let chars: String = bits_read.iter().map(|d| if *d == 1 { '#' } else { '.' }).collect();
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_chars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day20.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |         let mut bytes = vec![0; bytes];
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day20.rs:215:17
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut i = 0;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte`
[INFO] [stdout]    --> src/days/day20.rs:216:17
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let mut byte: u8 = 0;
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_byte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day20.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut i = 0;
[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/day20.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let mut byte: u8 = 0;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dice_rolls`
[INFO] [stdout]   --> src/days/day21.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let dice_rolls: Vec<i32> = (1..=100).collect();
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dice_rolls`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/days/day21.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         for i in 0..n {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day20.rs:117:17
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut i = 0;
[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/day20.rs:117:13
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let mut i = 0;
[INFO] [stdout]     |             ----^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chars`
[INFO] [stdout]    --> src/days/day20.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let chars: String = bits_read.iter().map(|d| if *d == 1 { '#' } else { '.' }).collect();
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_chars`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day20.rs:188:13
[INFO] [stdout]     |
[INFO] [stdout] 188 |         let mut bytes = vec![0; bytes];
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/days/day20.rs:215:17
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut i = 0;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `byte`
[INFO] [stdout]    --> src/days/day20.rs:216:17
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let mut byte: u8 = 0;
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_byte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/days/day20.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let mut i = 0;
[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/day20.rs:216:13
[INFO] [stdout]     |
[INFO] [stdout] 216 |         let mut byte: u8 = 0;
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dice_rolls`
[INFO] [stdout]   --> src/days/day21.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let dice_rolls: Vec<i32> = (1..=100).collect();
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dice_rolls`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/days/day21.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         for i in 0..n {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day1.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day1.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `direction` and `number` are never read
[INFO] [stdout]   --> src/days/day2.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Instruction {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 12 |     direction: Direction,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 13 |     number: i32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]   --> src/days/day2.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day2.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day3.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day3.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bit_criteria_r` is never used
[INFO] [stdout]   --> src/days/day3.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn bit_criteria_r(nums: Vec<Vec<u32>>, i: usize, above: bool) -> Vec<u32> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_to_dec` is never used
[INFO] [stdout]   --> src/days/day3.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn binary_to_dec(num: Vec<u32>) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day4.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day4.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `values` is never read
[INFO] [stdout]   --> src/days/day4.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Board {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 59 |     values: [[i32; 5]; 5],
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Board` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_num` and `sum_unchecked` are never used
[INFO] [stdout]    --> src/days/day4.rs:89:8
[INFO] [stdout]     |
[INFO] [stdout] 64  | impl Board {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89  |     fn draw_num(&mut self, num: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn sum_unchecked(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day5.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day5.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start` and `end` are never read
[INFO] [stdout]   --> src/days/day5.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct Line {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] 62 |     start: (i32, i32),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 63 |     end: (i32, i32),
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Line` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_points` is never used
[INFO] [stdout]   --> src/days/day5.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Line {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 67 |     fn get_points(&self, points: &mut Vec<(i32,i32)>, allow_diagonals: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day6.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day6.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sim_step` is never used
[INFO] [stdout]   --> src/days/day6.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn sim_step(fish: &mut [u64]) {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day7.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day7.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day8.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day8.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_display` is never used
[INFO] [stdout]   --> src/days/day8.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn calc_display(display: &Display) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digit` is never used
[INFO] [stdout]   --> src/days/day8.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn classify_digit(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digits_5_lines` is never used
[INFO] [stdout]   --> src/days/day8.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn classify_digits_5_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digits_6_lines` is never used
[INFO] [stdout]   --> src/days/day8.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn classify_digits_6_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `inputs` and `outputs` are never read
[INFO] [stdout]    --> src/days/day8.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct Display {
[INFO] [stdout]     |        ------- fields in this struct
[INFO] [stdout] 115 |     inputs: Vec<String>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 116 |     outputs: Vec<String>
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Display` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day9.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day9.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `heights`, `nrows`, and `ncols` are never read
[INFO] [stdout]   --> src/days/day9.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct HeightMap {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 53 |     heights: Vec<u32>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 54 |     nrows: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 55 |     ncols: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HeightMap` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `get_adjacent`, and `get_basin_size` are never used
[INFO] [stdout]   --> src/days/day9.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl HeightMap {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 59 |     fn get(&self, i: i8, j: i8) -> Option<u32> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn get_adjacent(&self, i: i8, j: i8) -> Vec<Option<u32>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn get_basin_size(&self, i: i8, j: i8) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day10.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_line_a` is never used
[INFO] [stdout]   --> src/days/day10.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn score_line_a(line: &str) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day10.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_line_b` is never used
[INFO] [stdout]   --> src/days/day10.rs:54:4
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn score_line_b(line: &str) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day11.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arr` is never read
[INFO] [stdout]   --> src/days/day11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Grid {
[INFO] [stdout]    |        ---- field in this struct
[INFO] [stdout] 18 |     arr: [[i32; 10]; 10],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flash` and `step` are never used
[INFO] [stdout]   --> src/days/day11.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Grid {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 22 |     fn flash(&mut self, i: i32, j: i32, has_flashed: &mut[[bool; 10]; 10]) -> i32 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn step(&mut self) -> i32 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day11.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day12.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day12.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_a` is never used
[INFO] [stdout]   --> src/days/day12.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn get_valid_paths_a(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_a_r` is never used
[INFO] [stdout]   --> src/days/day12.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_valid_paths_a_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_b` is never used
[INFO] [stdout]   --> src/days/day12.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn get_valid_paths_b(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_b_r` is never used
[INFO] [stdout]   --> src/days/day12.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn get_valid_paths_b_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Path` is never constructed
[INFO] [stdout]   --> src/days/day12.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | struct Path {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Path` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_node`, `is_valid`, `last`, and `pop` are never used
[INFO] [stdout]    --> src/days/day12.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout] 97  | impl Path {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 98  |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn add_node(&mut self, node: String, visit_twice: bool) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn is_valid(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn last(&self) -> &String {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn pop(&mut self) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connections` is never read
[INFO] [stdout]    --> src/days/day12.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 146 | struct Graph {
[INFO] [stdout]     |        ----- field in this struct
[INFO] [stdout] 147 |     // maps node to adjacency list
[INFO] [stdout] 148 |     connections: HashMap<String, Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_adjacent` is never used
[INFO] [stdout]    --> src/days/day12.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl Graph {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] 152 |     fn get_adjacent(&self, node: &String) -> Option<&Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day13.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day13.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day13.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Up(usize),
[INFO] [stdout]    |     -- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Up(()),
[INFO] [stdout]    |        ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day13.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Left(usize)
[INFO] [stdout]    |     ---- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Left(())
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arr` is never read
[INFO] [stdout]   --> src/days/day13.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct Paper {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 56 |     arr: Box<Vec<Vec<bool>>> // false represents dot
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Paper` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fold`, `fold_vertical`, `fold_horizontal`, `num_dots`, and `print_grid` are never used
[INFO] [stdout]    --> src/days/day13.rs:60:8
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Paper {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 60  |     fn new(arr: Box<Vec<Vec<bool>>>) -> Paper {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     fn fold(&mut self, instr: &Instruction) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71  |     fn fold_vertical(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85  |     fn fold_horizontal(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     fn num_dots(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn print_grid(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day14.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_map` is never used
[INFO] [stdout]   --> src/days/day14.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn parse_rule_map(lines: &mut Lines) -> HashMap<String, char> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff_max_min_char_occurrences` is never used
[INFO] [stdout]   --> src/days/day14.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn diff_max_min_char_occurrences(s: &str) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day14.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_map_b` is never used
[INFO] [stdout]   --> src/days/day14.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn parse_rule_map_b(lines: &mut Lines) -> HashMap<(char, char), char> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff_max_min_char_occurrences_pairs` is never used
[INFO] [stdout]   --> src/days/day14.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]   --> src/days/day15.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dijkstra` is never used
[INFO] [stdout]   --> src/days/day15.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn dijkstra(arr: &Vec<Vec<i32>>) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day15.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `vertex` is never read
[INFO] [stdout]   --> src/days/day15.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Visit<V> {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 72 |     vertex: V,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Visit` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day16.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day16.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitReader` is never constructed
[INFO] [stdout]   --> src/days/day16.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct BitReader {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parse_num`, `parse_bool`, `parse_packet`, and `parse_literal_val` are never used
[INFO] [stdout]   --> src/days/day16.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl BitReader {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 45 |     fn parse_num(&mut self, n: usize) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn parse_bool(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     fn parse_packet(&mut self) -> Packet {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn parse_literal_val(&mut self) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Packet` is never used
[INFO] [stdout]    --> src/days/day16.rs:106:6
[INFO] [stdout]     |
[INFO] [stdout] 106 | enum Packet {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Packet` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sum_version_nums` and `eval` are never used
[INFO] [stdout]    --> src/days/day16.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl Packet {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 112 |     fn sum_version_nums(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     fn eval(&self) -> u64 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day17.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day17.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trajectory_successful` is never used
[INFO] [stdout]   --> src/days/day17.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn trajectory_successful(p: (i32, i32), v: (i32, i32), target: &Rect) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rect` is never constructed
[INFO] [stdout]   --> src/days/day17.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Rect {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `inside`, `right`, and `below` are never used
[INFO] [stdout]   --> src/days/day17.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Rect {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 75 |     fn inside(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     fn right(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn below(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day18.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day18.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day18.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |     Literal(i32),
[INFO] [stdout]    |     ------- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 45 |     Literal(()),
[INFO] [stdout]    |             ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `left` and `right` are never read
[INFO] [stdout]   --> src/days/day18.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     Pair { left: Box<SnailFishNum>, right: Box<SnailFishNum>}
[INFO] [stdout]    |     ----   ^^^^                     ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/days/day18.rs:56:8
[INFO] [stdout]     |
[INFO] [stdout] 49  | impl SnailFishNum {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56  |     fn new_literal(x: i32) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     fn magnitude(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96  |     fn sum(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn explode(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn explode_r(&mut self, depth: i32) -> (bool, Option<i32>, Option<i32>) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn add_to_leftmost(&mut self, x: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn add_to_rightmost(&mut self, x: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn split(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day19.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day19.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `abs`, and `manhattan_dist` are never used
[INFO] [stdout]   --> src/days/day19.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl Point {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 49 |     fn new(x: i32, y: i32, z: i32) -> Point {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn abs(&self) -> Point {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn manhattan_dist(&self, other: &Point) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_coords` is never used
[INFO] [stdout]   --> src/days/day19.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn calc_coords(scanners: &mut Vec<Scanner>) -> (Vec<Point>, HashSet<Point>) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]    --> src/days/day19.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | struct Scanner {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Scanner` 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 items `new`, `overlap`, and `rel_coords_from_trans` are never used
[INFO] [stdout]    --> src/days/day19.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 126 |     fn new(beacons: HashSet<Point>) -> Scanner {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn overlap(&self, other: &Scanner) -> Option<(Point, HashSet<Point>)> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn rel_coords_from_trans(&self, p1: Point, p2: Point, t_x: i32, t_y: i32, t_z: i32, perm: (usize,usize,usize)) -> (Point, HashSet<Poi...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_scanners` is never used
[INFO] [stdout]    --> src/days/day19.rs:186:4
[INFO] [stdout]     |
[INFO] [stdout] 186 | fn parse_scanners(file_str: &str) -> Vec<Scanner> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day20.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<u32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day20.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn soln_b(file: &str) -> Result<u32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageEnhancer` is never constructed
[INFO] [stdout]   --> src/days/day20.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct ImageEnhancer {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImageEnhancer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse_key` and `enhance` are never used
[INFO] [stdout]   --> src/days/day20.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl ImageEnhancer {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 70 |     fn parse_key(s: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn enhance(&mut self) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes`, `nrows`, and `ncols` are never read
[INFO] [stdout]   --> src/days/day20.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct Image {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 96 |     bytes: Box<[u8]>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 97 |     nrows: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 98 |     ncols: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Image` 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: multiple associated items are never used
[INFO] [stdout]    --> src/days/day20.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Image {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 102 |     fn get_1d(&self, i: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn get_unchecked(&self, i: usize, j: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn get(&self, i: usize, j: usize) -> Option<u8> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn display(&self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn get_square(&self, i: usize, j: usize, default: u8) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     fn update_bit(&mut self, i: usize, j: usize, val: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn update_byte(&mut self, byte: u8, idx_1d: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn count_lit_pixels(&self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     fn pad_image(image: &Image, n: usize) -> Image {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day21.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day21.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/days/day21.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | struct Game {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Game` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `next_rolls` and `take_turn` are never used
[INFO] [stdout]   --> src/days/day21.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Game {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 79 |     fn next_rolls(&mut self, n: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn take_turn(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calc_winners` is never used
[INFO] [stdout]    --> src/days/day21.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl DiracGame {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 123 |     fn calc_winners(&mut self, memos: &mut HashMap<DiracGame, (u64, u64)>) -> (u64, u64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]   --> src/days/day22.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Instruction {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     fn contains(&self, other: &Instruction) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to <[T; N] as IntoIterator>::into_iter in Rust 2021
[INFO] [stdout]   --> src/days/day4.rs:90:36
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in self.values.into_iter().enumerate() {
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in self.values.iter().enumerate() {
[INFO] [stdout]    |                                    ~~~~
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in IntoIterator::into_iter(self.values).enumerate() {
[INFO] [stdout]    |                        ++++++++++++++++++++++++           ~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day1.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day1.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `direction` and `number` are never read
[INFO] [stdout]   --> src/days/day2.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Instruction {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 12 |     direction: Direction,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 13 |     number: i32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]   --> src/days/day2.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day2.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day3.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day3.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bit_criteria_r` is never used
[INFO] [stdout]   --> src/days/day3.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn bit_criteria_r(nums: Vec<Vec<u32>>, i: usize, above: bool) -> Vec<u32> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `binary_to_dec` is never used
[INFO] [stdout]   --> src/days/day3.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn binary_to_dec(num: Vec<u32>) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day4.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day4.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `values` is never read
[INFO] [stdout]   --> src/days/day4.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Board {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 59 |     values: [[i32; 5]; 5],
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Board` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `draw_num` and `sum_unchecked` are never used
[INFO] [stdout]    --> src/days/day4.rs:89:8
[INFO] [stdout]     |
[INFO] [stdout] 64  | impl Board {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 89  |     fn draw_num(&mut self, num: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn sum_unchecked(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day5.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day5.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start` and `end` are never read
[INFO] [stdout]   --> src/days/day5.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct Line {
[INFO] [stdout]    |        ---- fields in this struct
[INFO] [stdout] 62 |     start: (i32, i32),
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 63 |     end: (i32, i32),
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Line` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_points` is never used
[INFO] [stdout]   --> src/days/day5.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Line {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 67 |     fn get_points(&self, points: &mut Vec<(i32,i32)>, allow_diagonals: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day6.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day6.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sim_step` is never used
[INFO] [stdout]   --> src/days/day6.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn sim_step(fish: &mut [u64]) {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day7.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day7.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day8.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day8.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_display` is never used
[INFO] [stdout]   --> src/days/day8.rs:38:4
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn calc_display(display: &Display) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digit` is never used
[INFO] [stdout]   --> src/days/day8.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn classify_digit(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digits_5_lines` is never used
[INFO] [stdout]   --> src/days/day8.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn classify_digits_5_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `classify_digits_6_lines` is never used
[INFO] [stdout]   --> src/days/day8.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn classify_digits_6_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `inputs` and `outputs` are never read
[INFO] [stdout]    --> src/days/day8.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct Display {
[INFO] [stdout]     |        ------- fields in this struct
[INFO] [stdout] 115 |     inputs: Vec<String>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 116 |     outputs: Vec<String>
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Display` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day9.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day9.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 128 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `heights`, `nrows`, and `ncols` are never read
[INFO] [stdout]   --> src/days/day9.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct HeightMap {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 53 |     heights: Vec<u32>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 54 |     nrows: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 55 |     ncols: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HeightMap` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `get_adjacent`, and `get_basin_size` are never used
[INFO] [stdout]   --> src/days/day9.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl HeightMap {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 59 |     fn get(&self, i: i8, j: i8) -> Option<u32> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn get_adjacent(&self, i: i8, j: i8) -> Vec<Option<u32>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn get_basin_size(&self, i: i8, j: i8) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day10.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_line_a` is never used
[INFO] [stdout]   --> src/days/day10.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn score_line_a(line: &str) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day10.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_line_b` is never used
[INFO] [stdout]   --> src/days/day10.rs:54:4
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn score_line_b(line: &str) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day11.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arr` is never read
[INFO] [stdout]   --> src/days/day11.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Grid {
[INFO] [stdout]    |        ---- field in this struct
[INFO] [stdout] 18 |     arr: [[i32; 10]; 10],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `flash` and `step` are never used
[INFO] [stdout]   --> src/days/day11.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Grid {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 22 |     fn flash(&mut self, i: i32, j: i32, has_flashed: &mut[[bool; 10]; 10]) -> i32 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn step(&mut self) -> i32 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day11.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day12.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day12.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_a` is never used
[INFO] [stdout]   --> src/days/day12.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn get_valid_paths_a(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_a_r` is never used
[INFO] [stdout]   --> src/days/day12.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_valid_paths_a_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_b` is never used
[INFO] [stdout]   --> src/days/day12.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn get_valid_paths_b(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_valid_paths_b_r` is never used
[INFO] [stdout]   --> src/days/day12.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn get_valid_paths_b_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Path` is never constructed
[INFO] [stdout]   --> src/days/day12.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | struct Path {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Path` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_node`, `is_valid`, `last`, and `pop` are never used
[INFO] [stdout]    --> src/days/day12.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout] 97  | impl Path {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 98  |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn add_node(&mut self, node: String, visit_twice: bool) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn is_valid(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn last(&self) -> &String {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn pop(&mut self) -> bool {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `connections` is never read
[INFO] [stdout]    --> src/days/day12.rs:148:5
[INFO] [stdout]     |
[INFO] [stdout] 146 | struct Graph {
[INFO] [stdout]     |        ----- field in this struct
[INFO] [stdout] 147 |     // maps node to adjacency list
[INFO] [stdout] 148 |     connections: HashMap<String, Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Graph` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_adjacent` is never used
[INFO] [stdout]    --> src/days/day12.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl Graph {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] 152 |     fn get_adjacent(&self, node: &String) -> Option<&Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day13.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day13.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day13.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Up(usize),
[INFO] [stdout]    |     -- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 36 |     Up(()),
[INFO] [stdout]    |        ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day13.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Left(usize)
[INFO] [stdout]    |     ---- ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 37 |     Left(())
[INFO] [stdout]    |          ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `arr` is never read
[INFO] [stdout]   --> src/days/day13.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct Paper {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 56 |     arr: Box<Vec<Vec<bool>>> // false represents dot
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Paper` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `fold`, `fold_vertical`, `fold_horizontal`, `num_dots`, and `print_grid` are never used
[INFO] [stdout]    --> src/days/day13.rs:60:8
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl Paper {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 60  |     fn new(arr: Box<Vec<Vec<bool>>>) -> Paper {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     fn fold(&mut self, instr: &Instruction) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71  |     fn fold_vertical(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85  |     fn fold_horizontal(&mut self, n: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     fn num_dots(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn print_grid(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day14.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_map` is never used
[INFO] [stdout]   --> src/days/day14.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn parse_rule_map(lines: &mut Lines) -> HashMap<String, char> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff_max_min_char_occurrences` is never used
[INFO] [stdout]   --> src/days/day14.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn diff_max_min_char_occurrences(s: &str) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day14.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_map_b` is never used
[INFO] [stdout]   --> src/days/day14.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn parse_rule_map_b(lines: &mut Lines) -> HashMap<(char, char), char> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `diff_max_min_char_occurrences_pairs` is never used
[INFO] [stdout]   --> src/days/day14.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]   --> src/days/day15.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dijkstra` is never used
[INFO] [stdout]   --> src/days/day15.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn dijkstra(arr: &Vec<Vec<i32>>) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day15.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `vertex` is never read
[INFO] [stdout]   --> src/days/day15.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Visit<V> {
[INFO] [stdout]    |        ----- field in this struct
[INFO] [stdout] 72 |     vertex: V,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Visit` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day16.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day16.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitReader` is never constructed
[INFO] [stdout]   --> src/days/day16.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct BitReader {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `parse_num`, `parse_bool`, `parse_packet`, and `parse_literal_val` are never used
[INFO] [stdout]   --> src/days/day16.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl BitReader {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 45 |     fn parse_num(&mut self, n: usize) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn parse_bool(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     fn parse_packet(&mut self) -> Packet {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn parse_literal_val(&mut self) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Packet` is never used
[INFO] [stdout]    --> src/days/day16.rs:106:6
[INFO] [stdout]     |
[INFO] [stdout] 106 | enum Packet {
[INFO] [stdout]     |      ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Packet` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sum_version_nums` and `eval` are never used
[INFO] [stdout]    --> src/days/day16.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl Packet {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] 112 |     fn sum_version_nums(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     fn eval(&self) -> u64 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day17.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day17.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trajectory_successful` is never used
[INFO] [stdout]   --> src/days/day17.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn trajectory_successful(p: (i32, i32), v: (i32, i32), target: &Rect) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rect` is never constructed
[INFO] [stdout]   --> src/days/day17.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Rect {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `inside`, `right`, and `below` are never used
[INFO] [stdout]   --> src/days/day17.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | impl Rect {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 75 |     fn inside(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     fn right(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     fn below(&self, p: (i32, i32)) -> bool {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day18.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day18.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/days/day18.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |     Literal(i32),
[INFO] [stdout]    |     ------- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 45 |     Literal(()),
[INFO] [stdout]    |             ~~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `left` and `right` are never read
[INFO] [stdout]   --> src/days/day18.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     Pair { left: Box<SnailFishNum>, right: Box<SnailFishNum>}
[INFO] [stdout]    |     ----   ^^^^                     ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/days/day18.rs:56:8
[INFO] [stdout]     |
[INFO] [stdout] 49  | impl SnailFishNum {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56  |     fn new_literal(x: i32) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90  |     fn magnitude(&self) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96  |     fn sum(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn explode(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn explode_r(&mut self, depth: i32) -> (bool, Option<i32>, Option<i32>) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn add_to_leftmost(&mut self, x: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn add_to_rightmost(&mut self, x: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     fn split(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day19.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day19.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `abs`, and `manhattan_dist` are never used
[INFO] [stdout]   --> src/days/day19.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl Point {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 49 |     fn new(x: i32, y: i32, z: i32) -> Point {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn abs(&self) -> Point {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn manhattan_dist(&self, other: &Point) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_coords` is never used
[INFO] [stdout]   --> src/days/day19.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn calc_coords(scanners: &mut Vec<Scanner>) -> (Vec<Point>, HashSet<Point>) {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scanner` is never constructed
[INFO] [stdout]    --> src/days/day19.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | struct Scanner {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Scanner` 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 items `new`, `overlap`, and `rel_coords_from_trans` are never used
[INFO] [stdout]    --> src/days/day19.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl Scanner {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout] 126 |     fn new(beacons: HashSet<Point>) -> Scanner {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn overlap(&self, other: &Scanner) -> Option<(Point, HashSet<Point>)> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     fn rel_coords_from_trans(&self, p1: Point, p2: Point, t_x: i32, t_y: i32, t_z: i32, perm: (usize,usize,usize)) -> (Point, HashSet<Poi...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_scanners` is never used
[INFO] [stdout]    --> src/days/day19.rs:186:4
[INFO] [stdout]     |
[INFO] [stdout] 186 | fn parse_scanners(file_str: &str) -> Vec<Scanner> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day20.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn soln_a(file: &str) -> Result<u32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day20.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn soln_b(file: &str) -> Result<u32, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageEnhancer` is never constructed
[INFO] [stdout]   --> src/days/day20.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct ImageEnhancer {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImageEnhancer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse_key` and `enhance` are never used
[INFO] [stdout]   --> src/days/day20.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl ImageEnhancer {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 70 |     fn parse_key(s: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn enhance(&mut self) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bytes`, `nrows`, and `ncols` are never read
[INFO] [stdout]   --> src/days/day20.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct Image {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 96 |     bytes: Box<[u8]>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 97 |     nrows: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 98 |     ncols: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Image` 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: multiple associated items are never used
[INFO] [stdout]    --> src/days/day20.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Image {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 102 |     fn get_1d(&self, i: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn get_unchecked(&self, i: usize, j: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn get(&self, i: usize, j: usize) -> Option<u8> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn display(&self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn get_square(&self, i: usize, j: usize, default: u8) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     fn update_bit(&mut self, i: usize, j: usize, val: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn update_byte(&mut self, byte: u8, idx_1d: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn count_lit_pixels(&self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     fn pad_image(image: &Image, n: usize) -> Image {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_a` is never used
[INFO] [stdout]  --> src/days/day21.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `soln_b` is never used
[INFO] [stdout]   --> src/days/day21.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/days/day21.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | struct Game {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Game` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `next_rolls` and `take_turn` are never used
[INFO] [stdout]   --> src/days/day21.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Game {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 79 |     fn next_rolls(&mut self, n: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     fn take_turn(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calc_winners` is never used
[INFO] [stdout]    --> src/days/day21.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl DiracGame {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 123 |     fn calc_winners(&mut self, memos: &mut HashMap<DiracGame, (u64, u64)>) -> (u64, u64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains` is never used
[INFO] [stdout]   --> src/days/day22.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Instruction {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 82 |     fn contains(&self, other: &Instruction) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to <[T; N] as IntoIterator>::into_iter in Rust 2021
[INFO] [stdout]   --> src/days/day4.rs:90:36
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in self.values.into_iter().enumerate() {
[INFO] [stdout]    |                                    ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in self.values.iter().enumerate() {
[INFO] [stdout]    |                                    ~~~~
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 90 |         for (i,row) in IntoIterator::into_iter(self.values).enumerate() {
[INFO] [stdout]    |                        ++++++++++++++++++++++++           ~
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 128 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.40s
[INFO] running `Command { std: "docker" "inspect" "b3b32e59646b3ae1d8c65476f6eeac33947554ca3e9c7c1fc3436506b2cb61f1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b3b32e59646b3ae1d8c65476f6eeac33947554ca3e9c7c1fc3436506b2cb61f1", kill_on_drop: false }`
[INFO] [stdout] b3b32e59646b3ae1d8c65476f6eeac33947554ca3e9c7c1fc3436506b2cb61f1
