[INFO] cloning repository https://github.com/hamdav/pagen_crush
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hamdav/pagen_crush" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhamdav%2Fpagen_crush", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhamdav%2Fpagen_crush'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 36add1da05f8054b2fe1c3d4276134ca08e8063e
[INFO] checking hamdav/pagen_crush against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6+rustflags=-Znext-solver=coherence for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhamdav%2Fpagen_crush" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hamdav/pagen_crush
[INFO] finished tweaking git repo https://github.com/hamdav/pagen_crush
[INFO] tweaked toml for git repo https://github.com/hamdav/pagen_crush written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hamdav/pagen_crush on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hamdav/pagen_crush 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tesseract-sys v0.6.3
[INFO] [stderr]   Downloaded leptonica-sys v0.4.9
[INFO] [stderr]   Downloaded tesseract-plumbing v0.11.1
[INFO] [stderr]   Downloaded leptonica-plumbing v1.4.0
[INFO] [stderr]   Downloaded tesseract v0.15.2
[INFO] [stderr]   Downloaded bindgen v0.64.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd
[INFO] running `Command { std: "docker" "start" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Znext-solver=coherence" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking bytemuck v1.25.1
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]    Compiling bindgen v0.64.0
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]    Compiling zerocopy v0.8.54
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking num-complex v0.4.6
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking no_std_io2 v0.9.4
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking bitstream-io v4.10.0
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking safe_arch v1.0.0
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.11
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking strength_reduce v0.2.4
[INFO] [stderr]     Checking transpose v0.2.3
[INFO] [stderr]     Checking wide v1.5.0
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking primal-check v0.3.4
[INFO] [stderr]    Compiling regex v1.13.1
[INFO] [stderr]     Checking pulp v0.22.3
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]    Compiling zerocopy-derive v0.8.54
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking av-scenechange v0.14.1
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking simba v0.10.0
[INFO] [stderr]     Checking rav1e v0.8.1
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking rustfft v6.4.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking rand v0.10.2
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking num-iter v0.1.46
[INFO] [stderr]     Checking x11rb-protocol v0.13.2
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]     Checking xkbcommon v0.9.0
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking rand_distr v0.6.0
[INFO] [stderr]    Compiling leptonica-sys v0.4.9
[INFO] [stderr]    Compiling tesseract-sys v0.6.3
[INFO] [stderr]     Checking nalgebra v0.35.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking exr v1.74.2
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking rustdct v0.7.1
[INFO] [stderr]     Checking leptonica-plumbing v1.4.0
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking tesseract-plumbing v0.11.1
[INFO] [stderr]     Checking tesseract v0.15.2
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking imageproc v0.27.0
[INFO] [stderr]     Checking enigo v0.6.1
[INFO] [stderr]     Checking pagen_crush v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/monte_carlo.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[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: `Board`
[INFO] [stdout]   --> src/detection.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::game::{Tile,Board,GameState,Superpower};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key` and `Keyboard`
[INFO] [stdout]  --> src/play.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Enigo, Key, Keyboard, Mouse, Settings,
[INFO] [stdout]   |            ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Position`
[INFO] [stdout]  --> src/play.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::{Move,GameState,Position};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/game.rs:160:21
[INFO] [stdout]     |
[INFO] [stdout] 160 |             for (p, t) in &neighbours {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/game.rs:161:26
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 for (p2, t2) in get_neighbours(&b, *p) {
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/monte_carlo.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use rand::Rng;
[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: `Board`
[INFO] [stdout]   --> src/detection.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::game::{Tile,Board,GameState,Superpower};
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key` and `Keyboard`
[INFO] [stdout]  --> src/play.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Enigo, Key, Keyboard, Mouse, Settings,
[INFO] [stdout]   |            ^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Position`
[INFO] [stdout]  --> src/play.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::{Move,GameState,Position};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/detection.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let mut t = t.set_image("lives.png")?;
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut rng = rand::rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut rng = rand::rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     let t = time::Duration::from_secs(1);
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     let mut g = game::GameState{
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     for i in 0..12 {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_sim` is never used
[INFO] [stdout]    --> src/main.rs:187:4
[INFO] [stdout]     |
[INFO] [stdout] 187 | fn run_sim() {
[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 `test` is never used
[INFO] [stdout]    --> src/main.rs:216:4
[INFO] [stdout]     |
[INFO] [stdout] 216 | fn test() {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initial_random_board` is never used
[INFO] [stdout]    --> src/game.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn initial_random_board() -> Board {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize_game` is never used
[INFO] [stdout]    --> src/game.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn initialize_game() -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tiles_in_path` is never used
[INFO] [stdout]    --> src/game.rs:332:4
[INFO] [stdout]     |
[INFO] [stdout] 332 | fn tiles_in_path(board: &Board, xd: f64, yd: f64, xs: f64, ys: f64) -> Vec<Option<Tile>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_rgb` is never used
[INFO] [stdout]   --> src/detection.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn split_rgb(image: &DynamicImage) -> (GrayImage, GrayImage, GrayImage) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_template_matching` is never used
[INFO] [stdout]    --> src/detection.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn test_template_matching() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/play.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     cmd.wait();
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let _ = cmd.wait();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     masks[&Tile::Leaf].save("leaf_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 90 |     let _unused = masks[&Tile::Leaf].save("leaf_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     masks[&Tile::Cheese].save("cheese_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let _unused = masks[&Tile::Cheese].save("cheese_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     masks[&Tile::Tomato].save("tomato_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let _unused = masks[&Tile::Tomato].save("tomato_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     masks[&Tile::Bread].save("bread_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let _unused = masks[&Tile::Bread].save("bread_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     masks[&Tile::Egg].save("egg_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let _unused = masks[&Tile::Egg].save("egg_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     cropped_screenshot.save("cropped_screenshot.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let _unused = cropped_screenshot.save("cropped_screenshot.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     lives_shot.save("lives_debug.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let _unused = lives_shot.save("lives_debug.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     gray_lives.save("lives.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let _unused = gray_lives.save("lives.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |     tile_crop.save("tile_crop.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 185 |     let _unused = tile_crop.save("tile_crop.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     enigo.move_mouse(500, 200, Coordinate::Abs);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let _ = enigo.move_mouse(500, 200, Coordinate::Abs);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     enigo.button(Button::Left, Press);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = enigo.button(Button::Left, Press);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     enigo.move_mouse(100, 100, Coordinate::Rel);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let _ = enigo.move_mouse(100, 100, Coordinate::Rel);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     enigo.button(Button::Left, Release);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let _ = enigo.button(Button::Left, Release);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | /         enigo.move_mouse(
[INFO] [stdout] 31 | |             w.cornerx + (PLACEMENT_INFO.switch_x * w.sizex as f64) as i32,
[INFO] [stdout] 32 | |             w.cornery + (PLACEMENT_INFO.switch_y * w.sizey as f64) as i32,
[INFO] [stdout] 33 | |             Coordinate::Abs
[INFO] [stdout] 34 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | /         enigo.move_mouse(
[INFO] [stdout] 42 | |             w.cornerx + (PLACEMENT_INFO.pow1_x * w.sizex as f64) as i32,
[INFO] [stdout] 43 | |             w.cornery + (PLACEMENT_INFO.pow1_y * w.sizey as f64) as i32,
[INFO] [stdout] 44 | |             Coordinate::Abs
[INFO] [stdout] 45 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | /         enigo.move_mouse(
[INFO] [stdout] 49 | |             w.cornerx + (PLACEMENT_INFO.pow2_x * w.sizex as f64) as i32,
[INFO] [stdout] 50 | |             w.cornery + (PLACEMENT_INFO.pow2_y * w.sizey as f64) as i32,
[INFO] [stdout] 51 | |             Coordinate::Abs
[INFO] [stdout] 52 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | /     enigo.move_mouse(
[INFO] [stdout] 84 | |             w.cornerx + (0.5 * w.sizex as f64) as i32 - (pixels / 2.0) as i32,
[INFO] [stdout] 85 | |             w.cornery + (0.7 * w.sizey as f64) as i32,
[INFO] [stdout] 86 | |             Coordinate::Abs
[INFO] [stdout] 87 | |     );
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |     let _ = enigo.move_mouse(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     enigo.button(Button::Left, Press);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let _ = enigo.button(Button::Left, Press);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | /     enigo.move_mouse(
[INFO] [stdout] 92 | |             pixels as i32,
[INFO] [stdout] 93 | |             100,
[INFO] [stdout] 94 | |             Coordinate::Rel,
[INFO] [stdout] 95 | |     );
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let _ = enigo.move_mouse(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     enigo.button(Button::Left, Release);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let _ = enigo.button(Button::Left, Release);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/game.rs:160:21
[INFO] [stdout]     |
[INFO] [stdout] 160 |             for (p, t) in &neighbours {
[INFO] [stdout]     |                     ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t2`
[INFO] [stdout]    --> src/game.rs:161:26
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 for (p2, t2) in get_neighbours(&b, *p) {
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_t2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/detection.rs:114:9
[INFO] [stdout]     |
[INFO] [stdout] 114 |     let mut t = t.set_image("lives.png")?;
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut rng = rand::rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut rng = rand::rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]    --> src/main.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     let t = time::Duration::from_secs(1);
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:224:9
[INFO] [stdout]     |
[INFO] [stdout] 224 |     let mut g = game::GameState{
[INFO] [stdout]     |         ----^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |     for i in 0..12 {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_sim` is never used
[INFO] [stdout]    --> src/main.rs:187:4
[INFO] [stdout]     |
[INFO] [stdout] 187 | fn run_sim() {
[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 `test` is never used
[INFO] [stdout]    --> src/main.rs:216:4
[INFO] [stdout]     |
[INFO] [stdout] 216 | fn test() {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initial_random_board` is never used
[INFO] [stdout]    --> src/game.rs:301:8
[INFO] [stdout]     |
[INFO] [stdout] 301 | pub fn initial_random_board() -> Board {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `initialize_game` is never used
[INFO] [stdout]    --> src/game.rs:320:8
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub fn initialize_game() -> GameState {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tiles_in_path` is never used
[INFO] [stdout]    --> src/game.rs:332:4
[INFO] [stdout]     |
[INFO] [stdout] 332 | fn tiles_in_path(board: &Board, xd: f64, yd: f64, xs: f64, ys: f64) -> Vec<Option<Tile>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `split_rgb` is never used
[INFO] [stdout]   --> src/detection.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn split_rgb(image: &DynamicImage) -> (GrayImage, GrayImage, GrayImage) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_template_matching` is never used
[INFO] [stdout]    --> src/detection.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn test_template_matching() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test` is never used
[INFO] [stdout]   --> src/play.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn test() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     cmd.wait();
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let _ = cmd.wait();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 90 |     masks[&Tile::Leaf].save("leaf_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 90 |     let _unused = masks[&Tile::Leaf].save("leaf_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 |     masks[&Tile::Cheese].save("cheese_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let _unused = masks[&Tile::Cheese].save("cheese_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:92:5
[INFO] [stdout]    |
[INFO] [stdout] 92 |     masks[&Tile::Tomato].save("tomato_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let _unused = masks[&Tile::Tomato].save("tomato_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 93 |     masks[&Tile::Bread].save("bread_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let _unused = masks[&Tile::Bread].save("bread_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/detection.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 94 |     masks[&Tile::Egg].save("egg_mask.png");
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let _unused = masks[&Tile::Egg].save("egg_mask.png");
[INFO] [stdout]    |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 107 |     cropped_screenshot.save("cropped_screenshot.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 107 |     let _unused = cropped_screenshot.save("cropped_screenshot.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     lives_shot.save("lives_debug.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let _unused = lives_shot.save("lives_debug.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:112:5
[INFO] [stdout]     |
[INFO] [stdout] 112 |     gray_lives.save("lives.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 112 |     let _unused = gray_lives.save("lives.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/detection.rs:185:5
[INFO] [stdout]     |
[INFO] [stdout] 185 |     tile_crop.save("tile_crop.png");
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _unused = ...` to ignore the resulting value without dropping it immediately
[INFO] [stdout]     |
[INFO] [stdout] 185 |     let _unused = tile_crop.save("tile_crop.png");
[INFO] [stdout]     |     +++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     enigo.move_mouse(500, 200, Coordinate::Abs);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let _ = enigo.move_mouse(500, 200, Coordinate::Abs);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     enigo.button(Button::Left, Press);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let _ = enigo.button(Button::Left, Press);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     enigo.move_mouse(100, 100, Coordinate::Rel);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let _ = enigo.move_mouse(100, 100, Coordinate::Rel);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     enigo.button(Button::Left, Release);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let _ = enigo.button(Button::Left, Release);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | /         enigo.move_mouse(
[INFO] [stdout] 31 | |             w.cornerx + (PLACEMENT_INFO.switch_x * w.sizex as f64) as i32,
[INFO] [stdout] 32 | |             w.cornery + (PLACEMENT_INFO.switch_y * w.sizey as f64) as i32,
[INFO] [stdout] 33 | |             Coordinate::Abs
[INFO] [stdout] 34 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | /         enigo.move_mouse(
[INFO] [stdout] 42 | |             w.cornerx + (PLACEMENT_INFO.pow1_x * w.sizex as f64) as i32,
[INFO] [stdout] 43 | |             w.cornery + (PLACEMENT_INFO.pow1_y * w.sizey as f64) as i32,
[INFO] [stdout] 44 | |             Coordinate::Abs
[INFO] [stdout] 45 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | /         enigo.move_mouse(
[INFO] [stdout] 49 | |             w.cornerx + (PLACEMENT_INFO.pow2_x * w.sizex as f64) as i32,
[INFO] [stdout] 50 | |             w.cornery + (PLACEMENT_INFO.pow2_y * w.sizey as f64) as i32,
[INFO] [stdout] 51 | |             Coordinate::Abs
[INFO] [stdout] 52 | |         );
[INFO] [stdout]    | |_________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let _ = enigo.move_mouse(
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |         enigo.button(Button::Left, Click);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let _ = enigo.button(Button::Left, Click);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | /     enigo.move_mouse(
[INFO] [stdout] 84 | |             w.cornerx + (0.5 * w.sizex as f64) as i32 - (pixels / 2.0) as i32,
[INFO] [stdout] 85 | |             w.cornery + (0.7 * w.sizey as f64) as i32,
[INFO] [stdout] 86 | |             Coordinate::Abs
[INFO] [stdout] 87 | |     );
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 83 |     let _ = enigo.move_mouse(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:89:5
[INFO] [stdout]    |
[INFO] [stdout] 89 |     enigo.button(Button::Left, Press);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let _ = enigo.button(Button::Left, Press);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | /     enigo.move_mouse(
[INFO] [stdout] 92 | |             pixels as i32,
[INFO] [stdout] 93 | |             100,
[INFO] [stdout] 94 | |             Coordinate::Rel,
[INFO] [stdout] 95 | |     );
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |     let _ = enigo.move_mouse(
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/play.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     enigo.button(Button::Left, Release);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let _ = enigo.button(Button::Left, Release);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 03s
[INFO] running `Command { std: "docker" "inspect" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd", kill_on_drop: false }`
[INFO] [stdout] 9996ddf7ee09f0317e46253b482f9e7170c5d5e4e176a169434bf7eeb33e29cd
