[INFO] cloning repository https://github.com/ellisjoe/advent-of-code-2025
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ellisjoe/advent-of-code-2025" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fellisjoe%2Fadvent-of-code-2025", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fellisjoe%2Fadvent-of-code-2025'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bf661a75897bff76f99de427316cf15d26c540f3
[INFO] checking ellisjoe/advent-of-code-2025 against try#54cf65b8d066c082e536455049b95943cf30378f for pr-151920
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fellisjoe%2Fadvent-of-code-2025" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ellisjoe/advent-of-code-2025
[INFO] finished tweaking git repo https://github.com/ellisjoe/advent-of-code-2025
[INFO] tweaked toml for git repo https://github.com/ellisjoe/advent-of-code-2025 written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ellisjoe/advent-of-code-2025 on toolchain 54cf65b8d066c082e536455049b95943cf30378f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ellisjoe/advent-of-code-2025 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" "+54cf65b8d066c082e536455049b95943cf30378f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded i_shape v1.14.0
[INFO] [stderr]   Downloaded i_key_sort v0.6.0
[INFO] [stderr]   Downloaded i_float v1.15.0
[INFO] [stderr]   Downloaded rstar v0.12.2
[INFO] [stderr]   Downloaded i_tree v0.16.0
[INFO] [stderr]   Downloaded geo-types v0.7.18
[INFO] [stderr]   Downloaded geographiclib-rs v0.2.5
[INFO] [stderr]   Downloaded i_overlay v4.0.6
[INFO] [stderr]   Downloaded geo v0.31.0
[INFO] [stderr]   Downloaded robust v1.2.0
[INFO] [stderr]   Downloaded spade v2.15.0
[INFO] [stderr]   Downloaded earcutr v0.4.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 92d0f670b4cd74c593b57d4beeb8d2f4c0f700642f23000bf22fdcfb876355d4
[INFO] running `Command { std: "docker" "start" "-a" "92d0f670b4cd74c593b57d4beeb8d2f4c0f700642f23000bf22fdcfb876355d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "92d0f670b4cd74c593b57d4beeb8d2f4c0f700642f23000bf22fdcfb876355d4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "92d0f670b4cd74c593b57d4beeb8d2f4c0f700642f23000bf22fdcfb876355d4", kill_on_drop: false }`
[INFO] [stdout] 92d0f670b4cd74c593b57d4beeb8d2f4c0f700642f23000bf22fdcfb876355d4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+54cf65b8d066c082e536455049b95943cf30378f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6a1488f6330412f3b9ca8da76e03fd7d14440cf6c63743671d473f1f2dcb66bd
[INFO] running `Command { std: "docker" "start" "-a" "6a1488f6330412f3b9ca8da76e03fd7d14440cf6c63743671d473f1f2dcb66bd", kill_on_drop: false }`
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling heapless v0.8.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking robust v1.2.0
[INFO] [stderr]     Checking i_key_sort v0.6.0
[INFO] [stderr]     Checking i_tree v0.16.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking float_next_after v1.0.0
[INFO] [stderr]     Checking itertools v0.11.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking hash32 v0.3.1
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking i_float v1.15.0
[INFO] [stderr]     Checking geographiclib-rs v0.2.5
[INFO] [stderr]     Checking i_shape v1.14.0
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking rstar v0.12.2
[INFO] [stderr]     Checking spade v2.15.0
[INFO] [stderr]     Checking earcutr v0.4.3
[INFO] [stderr]     Checking i_overlay v4.0.6
[INFO] [stderr]     Checking geo-types v0.7.18
[INFO] [stderr]     Checking geo v0.31.0
[INFO] [stderr]     Checking advent-of-code-2025 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_01.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[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::fs`
[INFO] [stdout]  --> src/day_01.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_02.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_02.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_03.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_03.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_04.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `max`
[INFO] [stdout]  --> src/day_04.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{max, min};
[INFO] [stdout]   |                ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_04.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_05.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_06.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/day_07.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_07.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_07.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Index`
[INFO] [stdout]  --> src/day_07.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::ops::Index;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EmptyResult`
[INFO] [stdout]  --> src/day_08.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{EmptyResult, Result};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_09.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Contains`, `Coord`, and `LineString`
[INFO] [stdout]  --> src/day_09.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use geo::{Contains, Coord, LineString};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geo::Rect`
[INFO] [stdout]  --> src/day_09.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use geo::Rect;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_09.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_10.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_10.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_11.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_11.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::EmptyResult`
[INFO] [stdout]  --> src/day_12.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::EmptyResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/day_12.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `max`
[INFO] [stdout]  --> src/day_04.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::cmp::{max, min};
[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::ops::Index`
[INFO] [stdout]  --> src/day_07.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::ops::Index;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> src/main.rs:14:6
[INFO] [stdout]    |
[INFO] [stdout] 14 | type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `EmptyResult` is never used
[INFO] [stdout]   --> src/main.rs:16:6
[INFO] [stdout]    |
[INFO] [stdout] 16 | type EmptyResult = Result<()>;
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]   --> src/day_01.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn parse_line(line: &str) -> i32 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/day_02.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn parse(input: &str) -> RangeInclusive<i64> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_invalid` is never used
[INFO] [stdout]   --> src/day_02.rs:36:4
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn is_invalid(num: &i64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_invalid_2` is never used
[INFO] [stdout]   --> src/day_02.rs:48:4
[INFO] [stdout]    |
[INFO] [stdout] 48 | fn is_invalid_2(num: &i64) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `chunk` is never used
[INFO] [stdout]   --> src/day_02.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn chunk(str: &str, size: usize) -> Option<Vec<&str>> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max` is never used
[INFO] [stdout]   --> src/day_03.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn max(nums: Vec<i32>) -> i32 {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `part2_max` is never used
[INFO] [stdout]   --> src/day_03.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn part2_max(nums: Vec<i32>) -> i64 {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_max_idx` is never used
[INFO] [stdout]   --> src/day_03.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn first_max_idx(nums: &[i32]) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_remove` is never used
[INFO] [stdout]   --> src/day_04.rs:43:4
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn to_remove(grid: &Grid<char>) -> Vec<(usize, usize)> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Grid` is never constructed
[INFO] [stdout]   --> src/day_04.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | struct Grid<T: Clone> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `y_len`, `x_len`, `value`, `set`, and `surrounding` are never used
[INFO] [stdout]   --> src/day_04.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl<T: Clone> Grid<T> {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] 65 |     fn y_len(&self) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     fn x_len(&self) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     fn value(&self, x: usize, y: usize) -> &T {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn set(&mut self, x: usize, y: usize, value: T) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     fn surrounding(&self, x: usize, y: usize) -> Vec<T> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/day_05.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn parse() -> Result<(Vec<RangeInclusive<i64>>, Vec<i64>), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge` is never used
[INFO] [stdout]   --> src/day_05.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn merge(first: RangeInclusive<i64>, second: RangeInclusive<i64>) -> MergeResult<RangeInclusive<i64>> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MergeResult` is never used
[INFO] [stdout]   --> src/day_05.rs:80:6
[INFO] [stdout]    |
[INFO] [stdout] 80 | enum MergeResult<T> {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Reducer` is never constructed
[INFO] [stdout]   --> src/day_06.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | struct Reducer {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `apply` are never used
[INFO] [stdout]   --> src/day_06.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | impl Reducer {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 88 |     fn new(func: Box<dyn Fn(i64, i64) -> i64>, value: i64) -> Reducer {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn apply(&mut self, value: i64) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_lines` is never used
[INFO] [stdout]   --> src/day_06.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn read_lines() -> Result<Vec<Vec<String>>, Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/day_08.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn parse() -> Result<(Vec<(Point, Point, i64)>, Circuits)> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Circuits` is never constructed
[INFO] [stdout]   --> src/day_08.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | struct Circuits {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `connect`, `count`, and `result` are never used
[INFO] [stdout]   --> src/day_08.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | impl Circuits {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 61 |     fn new(circuits: Vec<Circuit>) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn connect(self, box_1: &Point, box_2: &Point) -> Circuits {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn count(&self) -> usize {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     fn result(&self) -> usize {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Circuit` is never constructed
[INFO] [stdout]   --> src/day_08.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct Circuit {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_empty`, `new`, `contains`, `connect`, and `count` are never used
[INFO] [stdout]    --> src/day_08.rs:98:8
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl Circuit {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  98 |     fn new_empty() -> Self {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn new(junction: Point) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     fn contains(&self, point: &Point) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn connect(&mut self, other: Circuit) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     fn count(&self) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]    --> src/day_08.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | struct Point {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse` and `distance` are never used
[INFO] [stdout]    --> src/day_08.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl Point {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 131 |     fn parse(line: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn distance(&self, other: &Point) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/day_09.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct Point {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse` and `area` are never used
[INFO] [stdout]   --> src/day_09.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl Point {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 59 |     fn parse(input: &str) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     fn area(&self, point: &Point) -> f64 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Machine` is never constructed
[INFO] [stdout]   --> src/day_10.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct Machine {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse`, `min_presses`, `presses`, and `min_joltage` are never used
[INFO] [stdout]    --> src/day_10.rs:43:8
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl Machine {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  43 |     fn parse(line: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     fn min_presses(&self) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     fn presses(&self) -> Vec<BitVec> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     fn min_joltage(&self) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_lights` is never used
[INFO] [stdout]    --> src/day_10.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn to_lights(joltage: &Vec<i32>) -> Vec<bool> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Button` is never constructed
[INFO] [stdout]    --> src/day_10.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | struct Button {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `parse`, `apply`, and `sub` are never used
[INFO] [stdout]    --> src/day_10.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | impl Button {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 170 |     fn parse(input: &str) -> Self {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     fn apply(&self, lights: &mut Vec<bool>) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn sub(&self, values: &mut Vec<i32>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitVec` is never constructed
[INFO] [stdout]    --> src/day_10.rs:192:8
[INFO] [stdout]     |
[INFO] [stdout] 192 | struct BitVec {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `bits_set`, and `next` are never used
[INFO] [stdout]    --> src/day_10.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | impl BitVec {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] 197 |     fn new(size: usize) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn bits_set(&self) -> i64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn next(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_vec` is never used
[INFO] [stdout]    --> src/day_10.rs:220:4
[INFO] [stdout]     |
[INFO] [stdout] 220 | fn init_vec(size: usize) -> Vec<bool> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connections` is never constructed
[INFO] [stdout]   --> src/day_11.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | struct Connections {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_paths` and `find_paths_cached` are never used
[INFO] [stdout]   --> src/day_11.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl Connections {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] 42 |     fn find_paths(&self, start: &str, end: &str) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn find_paths_cached(&self, start: &str, end: &str, cache: &mut HashMap<String, i64>) -> i64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse` is never used
[INFO] [stdout]   --> src/day_11.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn parse(input: &str) -> (String, Vec<String>) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tree` is never used
[INFO] [stdout]   --> src/day_12.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn parse_tree(input: &str) -> (i64, i64, Vec<i64>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.84s
[INFO] running `Command { std: "docker" "inspect" "6a1488f6330412f3b9ca8da76e03fd7d14440cf6c63743671d473f1f2dcb66bd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6a1488f6330412f3b9ca8da76e03fd7d14440cf6c63743671d473f1f2dcb66bd", kill_on_drop: false }`
[INFO] [stdout] 6a1488f6330412f3b9ca8da76e03fd7d14440cf6c63743671d473f1f2dcb66bd
