[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] testing jacknugent1529/advent-of-code-2021 against beta-2026-04-21 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjacknugent1529%2Fadvent-of-code-2021" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[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-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jacknugent1529/advent-of-code-2021 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[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" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] cfe61322cbf838ae219c543142d57196ff85a84d05550b53a2b3dea7459cdd39
[INFO] running `Command { std: "docker" "start" "-a" "cfe61322cbf838ae219c543142d57196ff85a84d05550b53a2b3dea7459cdd39", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "cfe61322cbf838ae219c543142d57196ff85a84d05550b53a2b3dea7459cdd39", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cfe61322cbf838ae219c543142d57196ff85a84d05550b53a2b3dea7459cdd39", kill_on_drop: false }`
[INFO] [stdout] cfe61322cbf838ae219c543142d57196ff85a84d05550b53a2b3dea7459cdd39
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 48fe43f32bc5df1177f1bd4fc515b907d12ce8708b9201b4e142acd62b2b2fb7
[INFO] running `Command { std: "docker" "start" "-a" "48fe43f32bc5df1177f1bd4fc515b907d12ce8708b9201b4e142acd62b2b2fb7", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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)]` (part of `#[warn(unused)]`) 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: 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: 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)]` (part of `#[warn(unused)]`) 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] 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boards_remaining`
[INFO] [stdout]   --> src/days/day4.rs:44:9
[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: 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: 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: `i`
[INFO] [stdout]    --> src/days/day20.rs:117:13
[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: 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: 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: `i`
[INFO] [stdout]    --> src/days/day20.rs:215:13
[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:13
[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: 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)]` (part of `#[warn(unused)]`) 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: enum `Direction` is never used
[INFO] [stdout]  --> src/days/day2.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | enum Direction {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instruction` is never constructed
[INFO] [stdout]   --> src/days/day2.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Instruction {
[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: struct `Board` is never constructed
[INFO] [stdout]   --> src/days/day4.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Board {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `check_win`, `draw_num`, and `sum_unchecked` are never used
[INFO] [stdout]    --> src/days/day4.rs:65:8
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Board {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout]  65 |     fn check_win(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[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: struct `Line` is never constructed
[INFO] [stdout]   --> src/days/day5.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct Line {
[INFO] [stdout]    |        ^^^^
[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: struct `Display` is never constructed
[INFO] [stdout]    --> src/days/day8.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct Display {
[INFO] [stdout]     |        ^^^^^^^
[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: struct `HeightMap` is never constructed
[INFO] [stdout]   --> src/days/day9.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct HeightMap {
[INFO] [stdout]    |        ^^^^^^^^^
[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: struct `Grid` is never constructed
[INFO] [stdout]   --> src/days/day11.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Grid {
[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] 
[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: struct `Graph` is never constructed
[INFO] [stdout]    --> src/days/day12.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 146 | struct Graph {
[INFO] [stdout]     |        ^^^^^
[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: enum `Instruction` is never used
[INFO] [stdout]   --> src/days/day13.rs:35:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | enum Instruction {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Paper` is never constructed
[INFO] [stdout]   --> src/days/day13.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct Paper {
[INFO] [stdout]    |        ^^^^^
[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: struct `Visit` is never constructed
[INFO] [stdout]   --> src/days/day15.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Visit<V> {
[INFO] [stdout]    |        ^^^^^
[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] 
[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: enum `SnailFishNum` is never used
[INFO] [stdout]   --> src/days/day18.rs:44:6
[INFO] [stdout]    |
[INFO] [stdout] 44 | enum SnailFishNum {
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/days/day18.rs:50:8
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl SnailFishNum {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  50 |     fn new_pair(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn new_literal(x: i32) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn parse_partial(chars: &Vec<char>, idx: usize) -> Result<(SnailFishNum, usize), String> {
[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: struct `Point` is never constructed
[INFO] [stdout]   --> src/days/day19.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Point {
[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] 
[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, HashS...
[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] 
[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: struct `Image` is never constructed
[INFO] [stdout]   --> src/days/day20.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct Image {
[INFO] [stdout]    |        ^^^^^
[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] 
[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: struct `DiracGame` is never constructed
[INFO] [stdout]    --> src/days/day21.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct DiracGame {
[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/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) 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.into_iter().enumerate() {
[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 self.values.into_iter().enumerate() {
[INFO] [stdout] 90 +         for (i,row) in IntoIterator::into_iter(self.values).enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.77s
[INFO] running `Command { std: "docker" "inspect" "48fe43f32bc5df1177f1bd4fc515b907d12ce8708b9201b4e142acd62b2b2fb7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "48fe43f32bc5df1177f1bd4fc515b907d12ce8708b9201b4e142acd62b2b2fb7", kill_on_drop: false }`
[INFO] [stdout] 48fe43f32bc5df1177f1bd4fc515b907d12ce8708b9201b4e142acd62b2b2fb7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 58530bc5fe910cace4f71b49e1b88dc0e1c29e9b166b68340d17f1a46cb40ad7
[INFO] running `Command { std: "docker" "start" "-a" "58530bc5fe910cace4f71b49e1b88dc0e1c29e9b166b68340d17f1a46cb40ad7", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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)]` (part of `#[warn(unused)]`) 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: 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: 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)]` (part of `#[warn(unused)]`) 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] 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) on by default
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boards_remaining`
[INFO] [stdout]   --> src/days/day4.rs:44:9
[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: 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: 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: `i`
[INFO] [stdout]    --> src/days/day20.rs:117:13
[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: 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: 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: `i`
[INFO] [stdout]    --> src/days/day20.rs:215:13
[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:13
[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: 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)]` (part of `#[warn(unused)]`) 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: enum `Direction` is never used
[INFO] [stdout]  --> src/days/day2.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | enum Direction {
[INFO] [stdout]   |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instruction` is never constructed
[INFO] [stdout]   --> src/days/day2.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Instruction {
[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: struct `Board` is never constructed
[INFO] [stdout]   --> src/days/day4.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | struct Board {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `check_win`, `draw_num`, and `sum_unchecked` are never used
[INFO] [stdout]    --> src/days/day4.rs:65:8
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Board {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout]  65 |     fn check_win(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[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: struct `Line` is never constructed
[INFO] [stdout]   --> src/days/day5.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | struct Line {
[INFO] [stdout]    |        ^^^^
[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: struct `Display` is never constructed
[INFO] [stdout]    --> src/days/day8.rs:114:8
[INFO] [stdout]     |
[INFO] [stdout] 114 | struct Display {
[INFO] [stdout]     |        ^^^^^^^
[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: struct `HeightMap` is never constructed
[INFO] [stdout]   --> src/days/day9.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | struct HeightMap {
[INFO] [stdout]    |        ^^^^^^^^^
[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: struct `Grid` is never constructed
[INFO] [stdout]   --> src/days/day11.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Grid {
[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] 
[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: struct `Graph` is never constructed
[INFO] [stdout]    --> src/days/day12.rs:146:8
[INFO] [stdout]     |
[INFO] [stdout] 146 | struct Graph {
[INFO] [stdout]     |        ^^^^^
[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: enum `Instruction` is never used
[INFO] [stdout]   --> src/days/day13.rs:35:6
[INFO] [stdout]    |
[INFO] [stdout] 35 | enum Instruction {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Paper` is never constructed
[INFO] [stdout]   --> src/days/day13.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | struct Paper {
[INFO] [stdout]    |        ^^^^^
[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: struct `Visit` is never constructed
[INFO] [stdout]   --> src/days/day15.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | struct Visit<V> {
[INFO] [stdout]    |        ^^^^^
[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] 
[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: enum `SnailFishNum` is never used
[INFO] [stdout]   --> src/days/day18.rs:44:6
[INFO] [stdout]    |
[INFO] [stdout] 44 | enum SnailFishNum {
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/days/day18.rs:50:8
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl SnailFishNum {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  50 |     fn new_pair(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn new_literal(x: i32) -> SnailFishNum {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn parse_partial(chars: &Vec<char>, idx: usize) -> Result<(SnailFishNum, usize), String> {
[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: struct `Point` is never constructed
[INFO] [stdout]   --> src/days/day19.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | struct Point {
[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] 
[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, HashS...
[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] 
[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: struct `Image` is never constructed
[INFO] [stdout]   --> src/days/day20.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct Image {
[INFO] [stdout]    |        ^^^^^
[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] 
[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: struct `DiracGame` is never constructed
[INFO] [stdout]    --> src/days/day21.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | struct DiracGame {
[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/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) 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.into_iter().enumerate() {
[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 self.values.into_iter().enumerate() {
[INFO] [stdout] 90 +         for (i,row) in IntoIterator::into_iter(self.values).enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.73s
[INFO] running `Command { std: "docker" "inspect" "58530bc5fe910cace4f71b49e1b88dc0e1c29e9b166b68340d17f1a46cb40ad7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58530bc5fe910cace4f71b49e1b88dc0e1c29e9b166b68340d17f1a46cb40ad7", kill_on_drop: false }`
[INFO] [stdout] 58530bc5fe910cace4f71b49e1b88dc0e1c29e9b166b68340d17f1a46cb40ad7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 4d3416dce01276573c291596ed0f2c5a4032fa518aebc5095c9b152cea95adba
[INFO] running `Command { std: "docker" "start" "-a" "4d3416dce01276573c291596ed0f2c5a4032fa518aebc5095c9b152cea95adba", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::collections::HashSet`
[INFO] [stderr]  --> src/days/day4.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::collections::HashSet;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]  --> src/days/day15.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::str::FromStr;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::iter::Scan`
[INFO] [stderr]  --> src/days/day19.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::iter::Scan;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::ops::Index`
[INFO] [stderr]  --> src/days/day20.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::ops::Index;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]    --> src/days/day20.rs:186:21
[INFO] [stderr]     |
[INFO] [stderr] 186 |         let bytes = (nrows * ncols/8);
[INFO] [stderr]     |                     ^               ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 186 -         let bytes = (nrows * ncols/8);
[INFO] [stderr] 186 +         let bytes = nrows * ncols/8 ;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable expression
[INFO] [stderr]   --> src/days/day21.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | /     loop {
[INFO] [stderr] 27 | |         if game.take_turn() {
[INFO] [stderr] 28 | |             // winner
[INFO] [stderr] 29 | |             println!("game final state: {:?}", game);
[INFO] [stderr] ...  |
[INFO] [stderr] 34 | |     }
[INFO] [stderr]    | |_____- any code following this expression is unreachable
[INFO] [stderr] 35 |       Err("ERROR: Not implemented".to_string())
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable expression
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n`
[INFO] [stderr]   --> src/days/day3.rs:40:9
[INFO] [stderr]    |
[INFO] [stderr] 40 |     let n = file_str.lines().by_ref().next().unwrap().len();
[INFO] [stderr]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/days/day4.rs:44:9
[INFO] [stderr]    |
[INFO] [stderr] 44 |     let mut boards_remaining = boards.len();
[INFO] [stderr]    |         ----^^^^^^^^^^^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `boards_remaining`
[INFO] [stderr]   --> src/days/day4.rs:44:9
[INFO] [stderr]    |
[INFO] [stderr] 44 |     let mut boards_remaining = boards.len();
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boards_remaining`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `first`
[INFO] [stderr]   --> src/days/day14.rs:93:81
[INFO] [stderr]    |
[INFO] [stderr] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stderr]    |                                                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_first`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `last`
[INFO] [stderr]   --> src/days/day14.rs:93:94
[INFO] [stderr]    |
[INFO] [stderr] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stderr]    |                                                                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_last`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/days/day20.rs:117:13
[INFO] [stderr]     |
[INFO] [stderr] 117 |         let mut i = 0;
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/days/day20.rs:117:13
[INFO] [stderr]     |
[INFO] [stderr] 117 |         let mut i = 0;
[INFO] [stderr]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `chars`
[INFO] [stderr]    --> src/days/day20.rs:149:17
[INFO] [stderr]     |
[INFO] [stderr] 149 |             let chars: String = bits_read.iter().map(|d| if *d == 1 { '#' } else { '.' }).collect();
[INFO] [stderr]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_chars`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/days/day20.rs:188:13
[INFO] [stderr]     |
[INFO] [stderr] 188 |         let mut bytes = vec![0; bytes];
[INFO] [stderr]     |             ----^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/days/day20.rs:215:13
[INFO] [stderr]     |
[INFO] [stderr] 215 |         let mut i = 0;
[INFO] [stderr]     |             ----^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/days/day20.rs:216:13
[INFO] [stderr]     |
[INFO] [stderr] 216 |         let mut byte: u8 = 0;
[INFO] [stderr]     |             ----^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/days/day20.rs:215:13
[INFO] [stderr]     |
[INFO] [stderr] 215 |         let mut i = 0;
[INFO] [stderr]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `byte`
[INFO] [stderr]    --> src/days/day20.rs:216:13
[INFO] [stderr]     |
[INFO] [stderr] 216 |         let mut byte: u8 = 0;
[INFO] [stderr]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_byte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dice_rolls`
[INFO] [stderr]   --> src/days/day21.rs:46:9
[INFO] [stderr]    |
[INFO] [stderr] 46 |     let dice_rolls: Vec<i32> = (1..=100).collect();
[INFO] [stderr]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dice_rolls`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/days/day21.rs:81:13
[INFO] [stderr]    |
[INFO] [stderr] 81 |         for i in 0..n {
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day1.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day1.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Direction` is never used
[INFO] [stderr]  --> src/days/day2.rs:5:6
[INFO] [stderr]   |
[INFO] [stderr] 5 | enum Direction {
[INFO] [stderr]   |      ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Instruction` is never constructed
[INFO] [stderr]   --> src/days/day2.rs:11:8
[INFO] [stderr]    |
[INFO] [stderr] 11 | struct Instruction {
[INFO] [stderr]    |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]   --> src/days/day2.rs:33:8
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day2.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day3.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day3.rs:35:8
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `bit_criteria_r` is never used
[INFO] [stderr]   --> src/days/day3.rs:49:4
[INFO] [stderr]    |
[INFO] [stderr] 49 | fn bit_criteria_r(nums: Vec<Vec<u32>>, i: usize, above: bool) -> Vec<u32> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `binary_to_dec` is never used
[INFO] [stderr]   --> src/days/day3.rs:69:4
[INFO] [stderr]    |
[INFO] [stderr] 69 | fn binary_to_dec(num: Vec<u32>) -> u32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day4.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day4.rs:31:8
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Board` is never constructed
[INFO] [stderr]   --> src/days/day4.rs:58:8
[INFO] [stderr]    |
[INFO] [stderr] 58 | struct Board {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `check_win`, `draw_num`, and `sum_unchecked` are never used
[INFO] [stderr]    --> src/days/day4.rs:65:8
[INFO] [stderr]     |
[INFO] [stderr]  64 | impl Board {
[INFO] [stderr]     | ---------- methods in this implementation
[INFO] [stderr]  65 |     fn check_win(&mut self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     fn draw_num(&mut self, num: i32) -> bool {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     fn sum_unchecked(&self) -> i32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day5.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day5.rs:33:8
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Line` is never constructed
[INFO] [stderr]   --> src/days/day5.rs:61:8
[INFO] [stderr]    |
[INFO] [stderr] 61 | struct Line {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_points` is never used
[INFO] [stderr]   --> src/days/day5.rs:67:8
[INFO] [stderr]    |
[INFO] [stderr] 66 | impl Line {
[INFO] [stderr]    | --------- method in this implementation
[INFO] [stderr] 67 |     fn get_points(&self, points: &mut Vec<(i32,i32)>, allow_diagonals: bool) {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day6.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day6.rs:21:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `sim_step` is never used
[INFO] [stderr]   --> src/days/day6.rs:39:4
[INFO] [stderr]    |
[INFO] [stderr] 39 | fn sim_step(fish: &mut [u64]) {
[INFO] [stderr]    |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day7.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day7.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day8.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day8.rs:28:8
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calc_display` is never used
[INFO] [stderr]   --> src/days/day8.rs:38:4
[INFO] [stderr]    |
[INFO] [stderr] 38 | fn calc_display(display: &Display) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `classify_digit` is never used
[INFO] [stderr]   --> src/days/day8.rs:64:8
[INFO] [stderr]    |
[INFO] [stderr] 64 | pub fn classify_digit(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `classify_digits_5_lines` is never used
[INFO] [stderr]   --> src/days/day8.rs:76:8
[INFO] [stderr]    |
[INFO] [stderr] 76 | pub fn classify_digits_5_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `classify_digits_6_lines` is never used
[INFO] [stderr]   --> src/days/day8.rs:94:8
[INFO] [stderr]    |
[INFO] [stderr] 94 | pub fn classify_digits_6_lines(digit: &str, digits_mapping: &HashMap<i32, HashSet<char>>) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Display` is never constructed
[INFO] [stderr]    --> src/days/day8.rs:114:8
[INFO] [stderr]     |
[INFO] [stderr] 114 | struct Display {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day9.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day9.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `HeightMap` is never constructed
[INFO] [stderr]   --> src/days/day9.rs:52:8
[INFO] [stderr]    |
[INFO] [stderr] 52 | struct HeightMap {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get`, `get_adjacent`, and `get_basin_size` are never used
[INFO] [stderr]   --> src/days/day9.rs:59:8
[INFO] [stderr]    |
[INFO] [stderr] 58 | impl HeightMap {
[INFO] [stderr]    | -------------- methods in this implementation
[INFO] [stderr] 59 |     fn get(&self, i: i8, j: i8) -> Option<u32> {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 65 |     fn get_adjacent(&self, i: i8, j: i8) -> Vec<Option<u32>> {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 75 |     fn get_basin_size(&self, i: i8, j: i8) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day10.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `score_line_a` is never used
[INFO] [stderr]   --> src/days/day10.rs:11:4
[INFO] [stderr]    |
[INFO] [stderr] 11 | fn score_line_a(line: &str) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day10.rs:43:8
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `score_line_b` is never used
[INFO] [stderr]   --> src/days/day10.rs:54:4
[INFO] [stderr]    |
[INFO] [stderr] 54 | fn score_line_b(line: &str) -> u64 {
[INFO] [stderr]    |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day11.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Grid` is never constructed
[INFO] [stderr]   --> src/days/day11.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | struct Grid {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `flash` and `step` are never used
[INFO] [stderr]   --> src/days/day11.rs:22:8
[INFO] [stderr]    |
[INFO] [stderr] 21 | impl Grid {
[INFO] [stderr]    | --------- methods in this implementation
[INFO] [stderr] 22 |     fn flash(&mut self, i: i32, j: i32, has_flashed: &mut[[bool; 10]; 10]) -> i32 {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 45 |     fn step(&mut self) -> i32 {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day11.rs:72:8
[INFO] [stderr]    |
[INFO] [stderr] 72 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day12.rs:6:8
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day12.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_valid_paths_a` is never used
[INFO] [stderr]   --> src/days/day12.rs:30:4
[INFO] [stderr]    |
[INFO] [stderr] 30 | fn get_valid_paths_a(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_valid_paths_a_r` is never used
[INFO] [stderr]   --> src/days/day12.rs:35:4
[INFO] [stderr]    |
[INFO] [stderr] 35 | fn get_valid_paths_a_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_valid_paths_b` is never used
[INFO] [stderr]   --> src/days/day12.rs:60:4
[INFO] [stderr]    |
[INFO] [stderr] 60 | fn get_valid_paths_b(graph: &Graph, start: String, end: String) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_valid_paths_b_r` is never used
[INFO] [stderr]   --> src/days/day12.rs:65:4
[INFO] [stderr]    |
[INFO] [stderr] 65 | fn get_valid_paths_b_r(graph: &Graph, path: &mut Path, start: String, end: String) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Path` is never constructed
[INFO] [stderr]   --> src/days/day12.rs:91:8
[INFO] [stderr]    |
[INFO] [stderr] 91 | struct Path {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `add_node`, `is_valid`, `last`, and `pop` are never used
[INFO] [stderr]    --> src/days/day12.rs:98:8
[INFO] [stderr]     |
[INFO] [stderr]  97 | impl Path {
[INFO] [stderr]     | --------- associated items in this implementation
[INFO] [stderr]  98 |     fn new() -> Self {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 105 |     fn add_node(&mut self, node: String, visit_twice: bool) -> bool {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     fn is_valid(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     fn last(&self) -> &String {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     fn pop(&mut self) -> bool {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Graph` is never constructed
[INFO] [stderr]    --> src/days/day12.rs:146:8
[INFO] [stderr]     |
[INFO] [stderr] 146 | struct Graph {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_adjacent` is never used
[INFO] [stderr]    --> src/days/day12.rs:152:8
[INFO] [stderr]     |
[INFO] [stderr] 151 | impl Graph {
[INFO] [stderr]     | ---------- method in this implementation
[INFO] [stderr] 152 |     fn get_adjacent(&self, node: &String) -> Option<&Vec<String>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day13.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day13.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Instruction` is never used
[INFO] [stderr]   --> src/days/day13.rs:35:6
[INFO] [stderr]    |
[INFO] [stderr] 35 | enum Instruction {
[INFO] [stderr]    |      ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Paper` is never constructed
[INFO] [stderr]   --> src/days/day13.rs:55:8
[INFO] [stderr]    |
[INFO] [stderr] 55 | struct Paper {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `fold`, `fold_vertical`, `fold_horizontal`, `num_dots`, and `print_grid` are never used
[INFO] [stderr]    --> src/days/day13.rs:60:8
[INFO] [stderr]     |
[INFO] [stderr]  59 | impl Paper {
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr]  60 |     fn new(arr: Box<Vec<Vec<bool>>>) -> Paper {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr]  64 |     fn fold(&mut self, instr: &Instruction) {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  71 |     fn fold_vertical(&mut self, n: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  85 |     fn fold_horizontal(&mut self, n: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  99 |     fn num_dots(&self) -> i32 {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     fn print_grid(&self) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day14.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_rule_map` is never used
[INFO] [stderr]   --> src/days/day14.rs:30:4
[INFO] [stderr]    |
[INFO] [stderr] 30 | fn parse_rule_map(lines: &mut Lines) -> HashMap<String, char> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `diff_max_min_char_occurrences` is never used
[INFO] [stderr]   --> src/days/day14.rs:39:4
[INFO] [stderr]    |
[INFO] [stderr] 39 | fn diff_max_min_char_occurrences(s: &str) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day14.rs:50:8
[INFO] [stderr]    |
[INFO] [stderr] 50 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_rule_map_b` is never used
[INFO] [stderr]   --> src/days/day14.rs:83:4
[INFO] [stderr]    |
[INFO] [stderr] 83 | fn parse_rule_map_b(lines: &mut Lines) -> HashMap<(char, char), char> {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `diff_max_min_char_occurrences_pairs` is never used
[INFO] [stderr]   --> src/days/day14.rs:93:4
[INFO] [stderr]    |
[INFO] [stderr] 93 | fn diff_max_min_char_occurrences_pairs(pairs_freq: &HashMap<(char, char), u64>, first: char, last: char) -> u64 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]   --> src/days/day15.rs:10:8
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `dijkstra` is never used
[INFO] [stderr]   --> src/days/day15.rs:20:4
[INFO] [stderr]    |
[INFO] [stderr] 20 | fn dijkstra(arr: &Vec<Vec<i32>>) -> i32 {
[INFO] [stderr]    |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day15.rs:52:8
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Visit` is never constructed
[INFO] [stderr]   --> src/days/day15.rs:71:8
[INFO] [stderr]    |
[INFO] [stderr] 71 | struct Visit<V> {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day16.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<u64, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day16.rs:20:8
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BitReader` is never constructed
[INFO] [stderr]   --> src/days/day16.rs:39:8
[INFO] [stderr]    |
[INFO] [stderr] 39 | struct BitReader {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `parse_num`, `parse_bool`, `parse_packet`, and `parse_literal_val` are never used
[INFO] [stderr]   --> src/days/day16.rs:45:8
[INFO] [stderr]    |
[INFO] [stderr] 44 | impl BitReader {
[INFO] [stderr]    | -------------- methods in this implementation
[INFO] [stderr] 45 |     fn parse_num(&mut self, n: usize) -> u64 {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     fn parse_bool(&mut self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 58 |     fn parse_packet(&mut self) -> Packet {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 90 |     fn parse_literal_val(&mut self) -> u64 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Packet` is never used
[INFO] [stderr]    --> src/days/day16.rs:106:6
[INFO] [stderr]     |
[INFO] [stderr] 106 | enum Packet {
[INFO] [stderr]     |      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `sum_version_nums` and `eval` are never used
[INFO] [stderr]    --> src/days/day16.rs:112:8
[INFO] [stderr]     |
[INFO] [stderr] 111 | impl Packet {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] 112 |     fn sum_version_nums(&self) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 121 |     fn eval(&self) -> u64 {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day17.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day17.rs:29:8
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `trajectory_successful` is never used
[INFO] [stderr]   --> src/days/day17.rs:52:4
[INFO] [stderr]    |
[INFO] [stderr] 52 | fn trajectory_successful(p: (i32, i32), v: (i32, i32), target: &Rect) -> bool {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Rect` is never constructed
[INFO] [stderr]   --> src/days/day17.rs:67:8
[INFO] [stderr]    |
[INFO] [stderr] 67 | struct Rect {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `inside`, `right`, and `below` are never used
[INFO] [stderr]   --> src/days/day17.rs:75:8
[INFO] [stderr]    |
[INFO] [stderr] 74 | impl Rect {
[INFO] [stderr]    | --------- methods in this implementation
[INFO] [stderr] 75 |     fn inside(&self, p: (i32, i32)) -> bool {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 82 |     fn right(&self, p: (i32, i32)) -> bool {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     fn below(&self, p: (i32, i32)) -> bool {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day18.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day18.rs:18:8
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `SnailFishNum` is never used
[INFO] [stderr]   --> src/days/day18.rs:44:6
[INFO] [stderr]    |
[INFO] [stderr] 44 | enum SnailFishNum {
[INFO] [stderr]    |      ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/days/day18.rs:50:8
[INFO] [stderr]     |
[INFO] [stderr]  49 | impl SnailFishNum {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr]  50 |     fn new_pair(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stderr]     |        ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  56 |     fn new_literal(x: i32) -> SnailFishNum {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  59 |     fn parse_partial(chars: &Vec<char>, idx: usize) -> Result<(SnailFishNum, usize), String> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  90 |     fn magnitude(&self) -> i32 {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     fn sum(a: SnailFishNum, b: SnailFishNum) -> SnailFishNum {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 |     fn explode(&mut self) -> bool {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     fn explode_r(&mut self, depth: i32) -> (bool, Option<i32>, Option<i32>) {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 153 |     fn add_to_leftmost(&mut self, x: i32) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 160 |     fn add_to_rightmost(&mut self, x: i32) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     fn split(&mut self) -> bool {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day19.rs:8:8
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day19.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub fn soln_b(file: &str) -> Result<i32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Point` is never constructed
[INFO] [stderr]   --> src/days/day19.rs:42:8
[INFO] [stderr]    |
[INFO] [stderr] 42 | struct Point {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `abs`, and `manhattan_dist` are never used
[INFO] [stderr]   --> src/days/day19.rs:49:8
[INFO] [stderr]    |
[INFO] [stderr] 48 | impl Point {
[INFO] [stderr]    | ---------- associated items in this implementation
[INFO] [stderr] 49 |     fn new(x: i32, y: i32, z: i32) -> Point {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 52 |     fn abs(&self) -> Point {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 60 |     fn manhattan_dist(&self, other: &Point) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calc_coords` is never used
[INFO] [stderr]   --> src/days/day19.rs:89:4
[INFO] [stderr]    |
[INFO] [stderr] 89 | fn calc_coords(scanners: &mut Vec<Scanner>) -> (Vec<Point>, HashSet<Point>) {
[INFO] [stderr]    |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Scanner` is never constructed
[INFO] [stderr]    --> src/days/day19.rs:118:8
[INFO] [stderr]     |
[INFO] [stderr] 118 | struct Scanner {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `overlap`, and `rel_coords_from_trans` are never used
[INFO] [stderr]    --> src/days/day19.rs:126:8
[INFO] [stderr]     |
[INFO] [stderr] 125 | impl Scanner {
[INFO] [stderr]     | ------------ associated items in this implementation
[INFO] [stderr] 126 |     fn new(beacons: HashSet<Point>) -> Scanner {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 133 |     fn overlap(&self, other: &Scanner) -> Option<(Point, HashSet<Point>)> {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 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, HashS...
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `parse_scanners` is never used
[INFO] [stderr]    --> src/days/day19.rs:186:4
[INFO] [stderr]     |
[INFO] [stderr] 186 | fn parse_scanners(file_str: &str) -> Vec<Scanner> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day20.rs:5:8
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub fn soln_a(file: &str) -> Result<u32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day20.rs:35:8
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub fn soln_b(file: &str) -> Result<u32, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `ImageEnhancer` is never constructed
[INFO] [stderr]   --> src/days/day20.rs:62:8
[INFO] [stderr]    |
[INFO] [stderr] 62 | struct ImageEnhancer {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `parse_key` and `enhance` are never used
[INFO] [stderr]   --> src/days/day20.rs:70:8
[INFO] [stderr]    |
[INFO] [stderr] 69 | impl ImageEnhancer {
[INFO] [stderr]    | ------------------ associated items in this implementation
[INFO] [stderr] 70 |     fn parse_key(s: &str) -> Vec<u8> {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 73 |     fn enhance(&mut self) {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Image` is never constructed
[INFO] [stderr]   --> src/days/day20.rs:95:8
[INFO] [stderr]    |
[INFO] [stderr] 95 | struct Image {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/days/day20.rs:102:8
[INFO] [stderr]     |
[INFO] [stderr] 101 | impl Image {
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr] 102 |     fn get_1d(&self, i: usize) -> u8 {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     fn get_unchecked(&self, i: usize, j: usize) -> u8 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     fn get(&self, i: usize, j: usize) -> Option<u8> {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     fn display(&self) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     fn get_square(&self, i: usize, j: usize, default: u8) -> usize {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 155 |     fn update_bit(&mut self, i: usize, j: usize, val: u8) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 162 |     fn update_byte(&mut self, byte: u8, idx_1d: usize) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 166 |     fn count_lit_pixels(&self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     fn pad_image(image: &Image, n: usize) -> Image {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_a` is never used
[INFO] [stderr]  --> src/days/day21.rs:4:8
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub fn soln_a(file: &str) -> Result<i32, String> {
[INFO] [stderr]   |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `soln_b` is never used
[INFO] [stderr]   --> src/days/day21.rs:38:8
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub fn soln_b(file: &str) -> Result<u64, String> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Game` is never constructed
[INFO] [stderr]   --> src/days/day21.rs:68:8
[INFO] [stderr]    |
[INFO] [stderr] 68 | struct Game {
[INFO] [stderr]    |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `next_rolls` and `take_turn` are never used
[INFO] [stderr]   --> src/days/day21.rs:79:8
[INFO] [stderr]    |
[INFO] [stderr] 78 | impl Game {
[INFO] [stderr]    | --------- methods in this implementation
[INFO] [stderr] 79 |     fn next_rolls(&mut self, n: i32) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 88 |     fn take_turn(&mut self) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DiracGame` is never constructed
[INFO] [stderr]    --> src/days/day21.rs:112:8
[INFO] [stderr]     |
[INFO] [stderr] 112 | struct DiracGame {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `calc_winners` is never used
[INFO] [stderr]    --> src/days/day21.rs:123:8
[INFO] [stderr]     |
[INFO] [stderr] 122 | impl DiracGame {
[INFO] [stderr]     | -------------- method in this implementation
[INFO] [stderr] 123 |     fn calc_winners(&mut self, memos: &mut HashMap<DiracGame, (u64, u64)>) -> (u64, u64) {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `contains` is never used
[INFO] [stderr]   --> src/days/day22.rs:82:8
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl Instruction {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 82 |     fn contains(&self, other: &Instruction) -> bool {
[INFO] [stderr]    |        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] 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] [stderr]   --> src/days/day4.rs:90:36
[INFO] [stderr]    |
[INFO] [stderr] 90 |         for (i,row) in self.values.into_iter().enumerate() {
[INFO] [stderr]    |                                    ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this changes meaning in Rust 2021
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]    |
[INFO] [stderr] 90 -         for (i,row) in self.values.into_iter().enumerate() {
[INFO] [stderr] 90 +         for (i,row) in self.values.iter().enumerate() {
[INFO] [stderr]    |
[INFO] [stderr] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stderr]    |
[INFO] [stderr] 90 -         for (i,row) in self.values.into_iter().enumerate() {
[INFO] [stderr] 90 +         for (i,row) in IntoIterator::into_iter(self.values).enumerate() {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `advent-of-code-2021` (bin "advent-of-code-2021" test) generated 125 warnings (run `cargo fix --bin "advent-of-code-2021" -p advent-of-code-2021 --tests` to apply 21 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/advent_of_code_2021-2d8dffcc5655f276)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4d3416dce01276573c291596ed0f2c5a4032fa518aebc5095c9b152cea95adba", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4d3416dce01276573c291596ed0f2c5a4032fa518aebc5095c9b152cea95adba", kill_on_drop: false }`
[INFO] [stdout] 4d3416dce01276573c291596ed0f2c5a4032fa518aebc5095c9b152cea95adba
