[INFO] cloning repository https://github.com/ldriscoll/AdventOfCode2023
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ldriscoll/AdventOfCode2023" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fldriscoll%2FAdventOfCode2023", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fldriscoll%2FAdventOfCode2023'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 04dc6184a04ad33a4a81f968bd3fc81875cd239e
[INFO] checking ldriscoll/AdventOfCode2023 against try#df1b9bf194c9183fb7c0604484171064069ce232 for pr-149195-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fldriscoll%2FAdventOfCode2023" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ldriscoll/AdventOfCode2023
[INFO] finished tweaking git repo https://github.com/ldriscoll/AdventOfCode2023
[INFO] tweaked toml for git repo https://github.com/ldriscoll/AdventOfCode2023 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ldriscoll/AdventOfCode2023 on toolchain df1b9bf194c9183fb7c0604484171064069ce232
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+df1b9bf194c9183fb7c0604484171064069ce232" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ldriscoll/AdventOfCode2023 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" "+df1b9bf194c9183fb7c0604484171064069ce232" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded log v0.4.20
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+df1b9bf194c9183fb7c0604484171064069ce232" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b70233519a1574460b0144a3ca47c2dbf5f5b8fb978c5a71b89a6e3ca55e4823
[INFO] running `Command { std: "docker" "start" "-a" "b70233519a1574460b0144a3ca47c2dbf5f5b8fb978c5a71b89a6e3ca55e4823", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b70233519a1574460b0144a3ca47c2dbf5f5b8fb978c5a71b89a6e3ca55e4823", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b70233519a1574460b0144a3ca47c2dbf5f5b8fb978c5a71b89a6e3ca55e4823", kill_on_drop: false }`
[INFO] [stdout] b70233519a1574460b0144a3ca47c2dbf5f5b8fb978c5a71b89a6e3ca55e4823
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:29356a839a4d14451438f794ce8414e707d72405f44418718d724d22562fe786" "/opt/rustwide/cargo-home/bin/cargo" "+df1b9bf194c9183fb7c0604484171064069ce232" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5316fdd66294b6f54f75629d829616ac686f39813d2221da6d1d57883f0dad44
[INFO] running `Command { std: "docker" "start" "-a" "5316fdd66294b6f54f75629d829616ac686f39813d2221da6d1d57883f0dad44", kill_on_drop: false }`
[INFO] [stderr]     Checking log v0.4.20
[INFO] [stderr]     Checking AdventOfCode v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/calibration.rs:55:16
[INFO] [stdout]    |
[INFO] [stdout] 55 |             if (first.is_none()) {
[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] 55 -             if (first.is_none()) {
[INFO] [stdout] 55 +             if first.is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/calibration.rs:55:16
[INFO] [stdout]    |
[INFO] [stdout] 55 |             if (first.is_none()) {
[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] 55 -             if (first.is_none()) {
[INFO] [stdout] 55 +             if first.is_none()  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:125:18
[INFO] [stdout]     |
[INFO] [stdout] 125 |     for y_pos in (above..below) {
[INFO] [stdout]     |                  ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 125 -     for y_pos in (above..below) {
[INFO] [stdout] 125 +     for y_pos in above..below  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 |         if (y_pos >= 0 && y_pos < schematic.len() as i32) {
[INFO] [stdout]     |            ^                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 127 -         if (y_pos >= 0 && y_pos < schematic.len() as i32) {
[INFO] [stdout] 127 +         if y_pos >= 0 && y_pos < schematic.len() as i32  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:125:18
[INFO] [stdout]     |
[INFO] [stdout] 125 |     for y_pos in (above..below) {
[INFO] [stdout]     |                  ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 125 -     for y_pos in (above..below) {
[INFO] [stdout] 125 +     for y_pos in above..below  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:128:26
[INFO] [stdout]     |
[INFO] [stdout] 128 |             for x_pos in (left..right as i32) {
[INFO] [stdout]     |                          ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 128 -             for x_pos in (left..right as i32) {
[INFO] [stdout] 128 +             for x_pos in left..right as i32  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 |         if (y_pos >= 0 && y_pos < schematic.len() as i32) {
[INFO] [stdout]     |            ^                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 127 -         if (y_pos >= 0 && y_pos < schematic.len() as i32) {
[INFO] [stdout] 127 +         if y_pos >= 0 && y_pos < schematic.len() as i32  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:130:20
[INFO] [stdout]     |
[INFO] [stdout] 130 |                 if (x_pos >= 0) {
[INFO] [stdout]     |                    ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -                 if (x_pos >= 0) {
[INFO] [stdout] 130 +                 if x_pos >= 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:133:24
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if (char_at.is_none()) {
[INFO] [stdout]     |                        ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 133 -                     if (char_at.is_none()) {
[INFO] [stdout] 133 +                     if char_at.is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:128:26
[INFO] [stdout]     |
[INFO] [stdout] 128 |             for x_pos in (left..right as i32) {
[INFO] [stdout]     |                          ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 128 -             for x_pos in (left..right as i32) {
[INFO] [stdout] 128 +             for x_pos in left..right as i32  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:130:20
[INFO] [stdout]     |
[INFO] [stdout] 130 |                 if (x_pos >= 0) {
[INFO] [stdout]     |                    ^          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 130 -                 if (x_pos >= 0) {
[INFO] [stdout] 130 +                 if x_pos >= 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:135:31
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     } else if (is_symbol(char_at.unwrap())) {
[INFO] [stdout]     |                               ^                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 135 -                     } else if (is_symbol(char_at.unwrap())) {
[INFO] [stdout] 135 +                     } else if is_symbol(char_at.unwrap())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 |     if (near_chars.is_empty()) {
[INFO] [stdout]     |        ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -     if (near_chars.is_empty()) {
[INFO] [stdout] 151 +     if near_chars.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:133:24
[INFO] [stdout]     |
[INFO] [stdout] 133 |                     if (char_at.is_none()) {
[INFO] [stdout]     |                        ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 133 -                     if (char_at.is_none()) {
[INFO] [stdout] 133 +                     if char_at.is_none()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:159:21
[INFO] [stdout]     |
[INFO] [stdout] 159 |     for line_num in (0..schematic.len()) {
[INFO] [stdout]     |                     ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -     for line_num in (0..schematic.len()) {
[INFO] [stdout] 159 +     for line_num in 0..schematic.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:135:31
[INFO] [stdout]     |
[INFO] [stdout] 135 |                     } else if (is_symbol(char_at.unwrap())) {
[INFO] [stdout]     |                               ^                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 135 -                     } else if (is_symbol(char_at.unwrap())) {
[INFO] [stdout] 135 +                     } else if is_symbol(char_at.unwrap())  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:179:16
[INFO] [stdout]     |
[INFO] [stdout] 179 |             if (x_start_pos < 0) {
[INFO] [stdout]     |                ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 179 -             if (x_start_pos < 0) {
[INFO] [stdout] 179 +             if x_start_pos < 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:151:8
[INFO] [stdout]     |
[INFO] [stdout] 151 |     if (near_chars.is_empty()) {
[INFO] [stdout]     |        ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -     if (near_chars.is_empty()) {
[INFO] [stdout] 151 +     if near_chars.is_empty()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/part_numbers.rs:159:21
[INFO] [stdout]     |
[INFO] [stdout] 159 |     for line_num in (0..schematic.len()) {
[INFO] [stdout]     |                     ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -     for line_num in (0..schematic.len()) {
[INFO] [stdout] 159 +     for line_num in 0..schematic.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/part_numbers.rs:179:16
[INFO] [stdout]     |
[INFO] [stdout] 179 |             if (x_start_pos < 0) {
[INFO] [stdout]     |                ^               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 179 -             if (x_start_pos < 0) {
[INFO] [stdout] 179 +             if x_start_pos < 0  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate` is never used
[INFO] [stdout]  --> src/calibration.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn calculate(filename: &str) -> u32 {
[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 `get_digit` is never used
[INFO] [stdout]   --> src/calibration.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn get_digit(line: &str, pos: usize) -> Option<u32> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_row_value` is never used
[INFO] [stdout]   --> src/calibration.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn get_row_value(line: &str) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Play` is never constructed
[INFO] [stdout]  --> src/bag_game.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Play {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/bag_game.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct Game {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub(crate) fn calculate_possible(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_power` is never used
[INFO] [stdout]   --> src/bag_game.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub(crate) fn calculate_power(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `game_power` is never used
[INFO] [stdout]   --> src/bag_game.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn game_power(game: &Game) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `game_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn game_possible(game: &Game) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `play_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn play_possible(play: &Play) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_game` is never used
[INFO] [stdout]   --> src/bag_game.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn get_game(line: &str) -> Game {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_play` is never used
[INFO] [stdout]   --> src/bag_game.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn parse_play(play_str: &str) -> Play {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartNumber` is never constructed
[INFO] [stdout]  --> src/part_numbers.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct PartNumber {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SymbolPos` is never constructed
[INFO] [stdout]   --> src/part_numbers.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SymbolPos {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartAndGears` is never constructed
[INFO] [stdout]   --> src/part_numbers.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct PartAndGears<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_part_sum` is never used
[INFO] [stdout]   --> src/part_numbers.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) fn calculate_part_sum(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_gear_ratios` is never used
[INFO] [stdout]   --> src/part_numbers.rs:69:15
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub(crate) fn get_gear_ratios(filename: &str) -> u64 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_part_and_gears` is never used
[INFO] [stdout]   --> src/part_numbers.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn create_part_and_gears<'a>(pn: &'a PartNumber, schematic: &Vec<String>) -> PartAndGears<'a> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_near_symbols` is never used
[INFO] [stdout]    --> src/part_numbers.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn get_near_symbols<'a>(part_number: &&PartNumber, schematic: &Vec<String>) -> Vec<SymbolPos> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_part_numbers` is never used
[INFO] [stdout]    --> src/part_numbers.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn get_part_numbers(schematic: &Vec<String>) -> Vec<PartNumber> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_part_numbers_from_line` is never used
[INFO] [stdout]    --> src/part_numbers.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn get_part_numbers_from_line(line: &str, y_pos: usize) -> Vec<PartNumber> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_schematic` is never used
[INFO] [stdout]    --> src/part_numbers.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn read_schematic(filename: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_symbol` is never used
[INFO] [stdout]    --> src/part_numbers.rs:215:4
[INFO] [stdout]     |
[INFO] [stdout] 215 | fn is_symbol(character: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_scratch_score` is never used
[INFO] [stdout]   --> src/scratch_cards.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) fn calculate_scratch_score(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate` is never used
[INFO] [stdout]  --> src/calibration.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn calculate(filename: &str) -> u32 {
[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 `get_digit` is never used
[INFO] [stdout]   --> src/calibration.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn get_digit(line: &str, pos: usize) -> Option<u32> {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_row_value` is never used
[INFO] [stdout]   --> src/calibration.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn get_row_value(line: &str) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Play` is never constructed
[INFO] [stdout]  --> src/bag_game.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct Play {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Game` is never constructed
[INFO] [stdout]   --> src/bag_game.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct Game {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub(crate) fn calculate_possible(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_power` is never used
[INFO] [stdout]   --> src/bag_game.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub(crate) fn calculate_power(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `game_power` is never used
[INFO] [stdout]   --> src/bag_game.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn game_power(game: &Game) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `game_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:56:4
[INFO] [stdout]    |
[INFO] [stdout] 56 | fn game_possible(game: &Game) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/scratch_cards.rs:67:26
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn gather_winners(cards: &Vec<Card>) -> Vec<Winner> {
[INFO] [stdout]    |                          ^^^^^^^^^^         ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn gather_winners(cards: &Vec<Card>) -> Vec<Winner<'_>> {
[INFO] [stdout]    |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `play_possible` is never used
[INFO] [stdout]   --> src/bag_game.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn play_possible(play: &Play) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_game` is never used
[INFO] [stdout]   --> src/bag_game.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn get_game(line: &str) -> Game {
[INFO] [stdout]    |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_play` is never used
[INFO] [stdout]   --> src/bag_game.rs:77:4
[INFO] [stdout]    |
[INFO] [stdout] 77 | fn parse_play(play_str: &str) -> Play {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartNumber` is never constructed
[INFO] [stdout]  --> src/part_numbers.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | struct PartNumber {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SymbolPos` is never constructed
[INFO] [stdout]   --> src/part_numbers.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct SymbolPos {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PartAndGears` is never constructed
[INFO] [stdout]   --> src/part_numbers.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | struct PartAndGears<'a> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_part_sum` is never used
[INFO] [stdout]   --> src/part_numbers.rs:49:15
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub(crate) fn calculate_part_sum(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_gear_ratios` is never used
[INFO] [stdout]   --> src/part_numbers.rs:69:15
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub(crate) fn get_gear_ratios(filename: &str) -> u64 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_part_and_gears` is never used
[INFO] [stdout]   --> src/part_numbers.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn create_part_and_gears<'a>(pn: &'a PartNumber, schematic: &Vec<String>) -> PartAndGears<'a> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_near_symbols` is never used
[INFO] [stdout]    --> src/part_numbers.rs:112:4
[INFO] [stdout]     |
[INFO] [stdout] 112 | fn get_near_symbols<'a>(part_number: &&PartNumber, schematic: &Vec<String>) -> Vec<SymbolPos> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_part_numbers` is never used
[INFO] [stdout]    --> src/part_numbers.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn get_part_numbers(schematic: &Vec<String>) -> Vec<PartNumber> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_part_numbers_from_line` is never used
[INFO] [stdout]    --> src/part_numbers.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn get_part_numbers_from_line(line: &str, y_pos: usize) -> Vec<PartNumber> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_schematic` is never used
[INFO] [stdout]    --> src/part_numbers.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn read_schematic(filename: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_symbol` is never used
[INFO] [stdout]    --> src/part_numbers.rs:215:4
[INFO] [stdout]     |
[INFO] [stdout] 215 | fn is_symbol(character: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_scratch_score` is never used
[INFO] [stdout]   --> src/scratch_cards.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) fn calculate_scratch_score(filename: &str) -> u32 {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/scratch_cards.rs:67:26
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn gather_winners(cards: &Vec<Card>) -> Vec<Winner> {
[INFO] [stdout]    |                          ^^^^^^^^^^         ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                          |
[INFO] [stdout]    |                          the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn gather_winners(cards: &Vec<Card>) -> Vec<Winner<'_>> {
[INFO] [stdout]    |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] running `Command { std: "docker" "inspect" "5316fdd66294b6f54f75629d829616ac686f39813d2221da6d1d57883f0dad44", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5316fdd66294b6f54f75629d829616ac686f39813d2221da6d1d57883f0dad44", kill_on_drop: false }`
[INFO] [stdout] 5316fdd66294b6f54f75629d829616ac686f39813d2221da6d1d57883f0dad44
