[INFO] cloning repository https://github.com/stianeklund/pacman-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/stianeklund/pacman-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstianeklund%2Fpacman-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstianeklund%2Fpacman-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1f14cba485b261fee48bcaad2d11325ec509ad2a
[INFO] checking stianeklund/pacman-rs against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstianeklund%2Fpacman-rs" "/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/stianeklund/pacman-rs
[INFO] finished tweaking git repo https://github.com/stianeklund/pacman-rs
[INFO] tweaked toml for git repo https://github.com/stianeklund/pacman-rs written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/stianeklund/pacman-rs on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/stianeklund/pacman-rs 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/stianeklund/z80-rs`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]      Locking 94 packages to latest compatible versions
[INFO] [stderr]       Adding aho-corasick v1.1.4
[INFO] [stderr]       Adding android_system_properties v0.1.5
[INFO] [stderr]       Adding ansi_term v0.12.1
[INFO] [stderr]       Adding atty v0.2.14
[INFO] [stderr]       Adding bindgen v0.56.0
[INFO] [stderr]       Adding bitflags v2.10.0
[INFO] [stderr]       Adding bumpalo v3.19.1
[INFO] [stderr]     Updating cc v1.0.52 -> v1.2.52
[INFO] [stderr]       Adding cexpr v0.4.0
[INFO] [stderr]       Adding cfg-if v1.0.4
[INFO] [stderr]       Adding chrono v0.4.42
[INFO] [stderr]       Adding clang-sys v1.8.1
[INFO] [stderr]       Adding clap v2.34.0
[INFO] [stderr]       Adding core-foundation-sys v0.8.7
[INFO] [stderr]       Adding cty v0.2.2
[INFO] [stderr]       Adding downcast-rs v1.2.1
[INFO] [stderr]       Adding env_logger v0.8.4
[INFO] [stderr]       Adding errno v0.3.14
[INFO] [stderr]       Adding fastrand v2.3.0
[INFO] [stderr]       Adding find-msvc-tools v0.1.7
[INFO] [stderr]       Adding flexi_logger v0.15.12 (available: v0.31.7)
[INFO] [stderr]       Adding getrandom v0.3.4
[INFO] [stderr]       Adding glob v0.3.3
[INFO] [stderr]       Adding hermit-abi v0.1.19
[INFO] [stderr]       Adding humantime v2.3.0
[INFO] [stderr]       Adding iana-time-zone v0.1.64
[INFO] [stderr]       Adding iana-time-zone-haiku v0.1.2
[INFO] [stderr]       Adding js-sys v0.3.83
[INFO] [stderr]       Adding lazycell v1.3.0
[INFO] [stderr]     Updating libc v0.2.69 -> v0.2.180
[INFO] [stderr]       Adding libloading v0.8.9
[INFO] [stderr]       Adding linux-raw-sys v0.11.0
[INFO] [stderr]       Adding log v0.4.29
[INFO] [stderr]       Adding memchr v2.7.6
[INFO] [stderr]       Adding memoffset v0.6.5
[INFO] [stderr]     Updating minifb v0.10.7 -> v0.19.3 (available: v0.28.0)
[INFO] [stderr]       Adding nix v0.20.2
[INFO] [stderr]       Adding nom v5.1.3
[INFO] [stderr]       Adding once_cell v1.21.3
[INFO] [stderr]       Adding peeking_take_while v0.1.2
[INFO] [stderr]     Updating pkg-config v0.3.17 -> v0.3.32
[INFO] [stderr]       Adding proc-macro2 v1.0.105
[INFO] [stderr]       Adding quote v1.0.43
[INFO] [stderr]       Adding r-efi v5.3.0
[INFO] [stderr]       Adding raw-window-handle v0.3.4
[INFO] [stderr]       Adding raw-window-handle v0.4.3
[INFO] [stderr]       Adding regex v1.12.2
[INFO] [stderr]       Adding regex-automata v0.4.13
[INFO] [stderr]       Adding regex-syntax v0.8.8
[INFO] [stderr]       Adding rustc-hash v1.1.0
[INFO] [stderr]       Adding rustix v1.1.3
[INFO] [stderr]       Adding rustversion v1.0.22
[INFO] [stderr]       Adding shlex v0.1.1
[INFO] [stderr]       Adding shlex v1.3.0
[INFO] [stderr]       Adding smallvec v1.15.1
[INFO] [stderr]       Adding strsim v0.8.0
[INFO] [stderr]       Adding syn v2.0.114
[INFO] [stderr]       Adding tempfile v3.24.0
[INFO] [stderr]       Adding termcolor v1.4.1
[INFO] [stderr]       Adding textwrap v0.11.0
[INFO] [stderr]       Adding thiserror v1.0.69
[INFO] [stderr]       Adding thiserror-impl v1.0.69
[INFO] [stderr]       Adding unicode-ident v1.0.22
[INFO] [stderr]       Adding unicode-width v0.1.14
[INFO] [stderr]       Adding vec_map v0.8.2
[INFO] [stderr]       Adding version_check v0.9.5
[INFO] [stderr]       Adding wasip2 v1.0.1+wasi-0.2.4
[INFO] [stderr]       Adding wasm-bindgen v0.2.106
[INFO] [stderr]       Adding wasm-bindgen-macro v0.2.106
[INFO] [stderr]       Adding wasm-bindgen-macro-support v0.2.106
[INFO] [stderr]       Adding wasm-bindgen-shared v0.2.106
[INFO] [stderr]       Adding wayland-client v0.28.6
[INFO] [stderr]       Adding wayland-commons v0.28.6
[INFO] [stderr]       Adding wayland-cursor v0.28.6
[INFO] [stderr]       Adding wayland-protocols v0.28.6
[INFO] [stderr]       Adding wayland-scanner v0.28.6
[INFO] [stderr]       Adding wayland-sys v0.28.6
[INFO] [stderr]       Adding which v3.1.1
[INFO] [stderr]       Adding winapi-util v0.1.11
[INFO] [stderr]       Adding windows-core v0.62.2
[INFO] [stderr]       Adding windows-implement v0.60.2
[INFO] [stderr]       Adding windows-interface v0.59.3
[INFO] [stderr]       Adding windows-link v0.2.1
[INFO] [stderr]       Adding windows-result v0.4.1
[INFO] [stderr]       Adding windows-strings v0.5.1
[INFO] [stderr]       Adding windows-sys v0.61.2
[INFO] [stderr]       Adding wit-bindgen v0.46.0
[INFO] [stderr]     Updating x11-dl v2.14.0 -> v2.21.0
[INFO] [stderr]       Adding xcursor v0.3.10
[INFO] [stderr]       Adding xkb v0.2.1
[INFO] [stderr]       Adding xkbcommon-sys v0.7.5
[INFO] [stderr]       Adding xml-rs v0.8.28
[INFO] [stderr]       Adding yansi v0.5.1
[INFO] [stderr]       Adding z80-rs v0.1.0 (https://github.com/stianeklund/z80-rs?branch=master#563f6195)
[INFO] [stderr]     Blocking waiting for file lock on package cache
[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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 268153e7713ca1ef7a8fcf15355686376f29ae74b9d41a733abf4232c62d4a1b
[INFO] running `Command { std: "docker" "start" "-a" "268153e7713ca1ef7a8fcf15355686376f29ae74b9d41a733abf4232c62d4a1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "268153e7713ca1ef7a8fcf15355686376f29ae74b9d41a733abf4232c62d4a1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "268153e7713ca1ef7a8fcf15355686376f29ae74b9d41a733abf4232c62d4a1b", kill_on_drop: false }`
[INFO] [stdout] 268153e7713ca1ef7a8fcf15355686376f29ae74b9d41a733abf4232c62d4a1b
[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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 924553841f5da77247a4959959b535ab85335653505a6c2034abd721f52dcf72
[INFO] running `Command { std: "docker" "start" "-a" "924553841f5da77247a4959959b535ab85335653505a6c2034abd721f52dcf72", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling pkg-config v0.3.32
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]    Compiling unicode-width v0.1.14
[INFO] [stderr]    Compiling ansi_term v0.12.1
[INFO] [stderr]    Compiling nom v5.1.3
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling bindgen v0.56.0
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling humantime v2.3.0
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling lazycell v1.3.0
[INFO] [stderr]    Compiling lazy_static v1.4.0
[INFO] [stderr]    Compiling shlex v0.1.1
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling num-traits v0.2.11
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling wayland-sys v0.28.6
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]    Compiling wayland-scanner v0.28.6
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking yansi v0.5.1
[INFO] [stderr]     Checking z80-rs v0.1.0 (https://github.com/stianeklund/z80-rs?branch=master#563f6195)
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]    Compiling cexpr v0.4.0
[INFO] [stderr]     Checking nix v0.20.2
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking raw-window-handle v0.3.4
[INFO] [stderr]    Compiling wayland-client v0.28.6
[INFO] [stderr]    Compiling wayland-protocols v0.28.6
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling which v3.1.1
[INFO] [stderr]    Compiling minifb v0.19.3
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking wayland-commons v0.28.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling env_logger v0.8.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking flexi_logger v0.15.12
[INFO] [stderr]     Checking wayland-cursor v0.28.6
[INFO] [stderr]    Compiling xkbcommon-sys v0.7.5
[INFO] [stderr]     Checking xkb v0.2.1
[INFO] [stderr]     Checking pacman-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[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::time::Duration`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt, thread};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyRepeat` and `Key`
[INFO] [stdout]  --> src/pacman_arcade/keypad.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, KeyRepeat, Window};
[INFO] [stdout]   |              ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Error, Read};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::z80_rs::memory::MemoryRW`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use crate::z80_rs::memory::MemoryRW;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[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::time::Duration`
[INFO] [stdout]  --> src/main.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt, thread};
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashSet`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::hash::Hash;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/pacman_arcade/display.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyRepeat` and `Key`
[INFO] [stdout]  --> src/pacman_arcade/keypad.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{Key, KeyRepeat, Window};
[INFO] [stdout]   |              ^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Error`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Error, Read};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::z80_rs::memory::MemoryRW`
[INFO] [stdout]  --> src/pacman_arcade/pacman.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use crate::z80_rs::memory::MemoryRW;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let mut x = x.wrapping_add(7 - (byte_number % 8));
[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/pacman_arcade/display.rs:148:17
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut byte = self.tile_rom[tile_number as usize * 16 + byte_number as usize];
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let mut strip: Vec<u8> = self.decode_vertical_strip(byte);
[INFO] [stdout]     |                 ----^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:44
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                            ----^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:58
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                                          ----^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |             let mut x = x.wrapping_add(7 - (byte_number % 8));
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal`
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:76
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_pal`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn create_slice(&mut self, mut index: usize) -> HashMap<u8, Vec<u8>> {
[INFO] [stdout]     |                                    ----^^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:188:45
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn draw_sprite(&mut self, x: usize, mut y: usize, mut sprite: usize, offset: usize, pal_no: usize) {
[INFO] [stdout]     |                                             ----^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:188:59
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn draw_sprite(&mut self, x: usize, mut y: usize, mut sprite: usize, offset: usize, pal_no: usize) {
[INFO] [stdout]     |                                                           ----^^^^^^
[INFO] [stdout]     |                                                           |
[INFO] [stdout]     |                                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/pacman_arcade/display.rs:235:66
[INFO] [stdout]     |
[INFO] [stdout] 235 |     pub fn draw_pixel(&mut self, pixel_number: u8, x: u8, y: u8, offset: usize) {
[INFO] [stdout]     |                                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:37
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |                                     ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:47
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |                                               ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let pal_no = self.read(0x4400);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut x = (i & 0x1F) * 8;
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |             let mut y = ((i & 0x20) >> 5) * 8 + 34;
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:194:13
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let pal_no = 1;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let addr = self.fb.sprite_rom[i] * 64;
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:202:17
[INFO] [stdout]     |
[INFO] [stdout] 202 |             for row in 0..HEIGHT {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut sprite = 1;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let mut x = 0;
[INFO] [stdout]    |         ----^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]   --> src/main.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let pal_no = 1;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buf` and `vblank` are never read
[INFO] [stdout]   --> src/pacman_arcade/display.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct Display {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 37 |     pub raster: Vec<u32>,
[INFO] [stdout] 38 |     pub buf: Vec<u8>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub vblank: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_tile` is never used
[INFO] [stdout]    --> src/pacman_arcade/display.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Display {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn draw_tile(&mut self, tile_number: u8, x: u8, y: u8, pal_no: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Keypad` is never constructed
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Keypad {}
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Input` is never used
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait Input {
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Keypad {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 43 |     pub fn new() -> Keypad {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Pacman {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 11 |     pub int_vector: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 12 |     // IO port 0x00 to write interrupt vector for CPU
[INFO] [stdout] 13 |     pub int_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 14 |     // Vblank or CPU interrupt
[INFO] [stdout] 15 |     pub port_in: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 16 |     pub port_out: u8,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub dip: Dip,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 20 |     pub in0: IN0,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 21 |     pub in1: IN1,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     pub c_lockout: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub c_counter: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coins_per_game`, `lives_per_game`, `bonus_extra_life`, `difficulty`, and `ghost_names` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Dip {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 28 |     coins_per_game: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     lives_per_game: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     bonus_extra_life: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     difficulty: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 32 |     ghost_names: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `joy_up`, `joy_left`, `joy_right`, and `joy_down` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct IN0 {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 37 |     joy_up: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     joy_left: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 39 |     joy_right: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     joy_down: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `joy_up`, `joy_left`, `joy_right`, and `joy_down` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct IN1 {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 45 |     joy_up: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 46 |     joy_left: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 47 |     joy_right: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 48 |     joy_down: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Ram` is never constructed
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | enum Map {
[INFO] [stdout]    |      --- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 58 |     Ram,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Map` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render_sprite`, `render_tiles`, `draw_screen`, and `draw_fruits` are never used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Pacman {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub(crate) fn render_tiles(&mut self) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn draw_screen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn draw_fruits(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Mapper` is never used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:212:11
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub trait Mapper {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:133:24
[INFO] [stdout]     |
[INFO] [stdout] 133 |                 panic!(format!("Attempted to load: {}", path.display()));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 133 -                 panic!(format!("Attempted to load: {}", path.display()));
[INFO] [stdout] 133 +                 panic!("Attempted to load: {}", path.display());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 144 |         self.fb.window.update_with_buffer(&self.fb.raster, WIDTH, HEIGHT);
[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] 144 |         let _ = self.fb.window.update_with_buffer(&self.fb.raster, WIDTH, HEIGHT);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let mut x = x.wrapping_add(7 - (byte_number % 8));
[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/pacman_arcade/display.rs:148:17
[INFO] [stdout]     |
[INFO] [stdout] 148 |             let mut byte = self.tile_rom[tile_number as usize * 16 + byte_number as usize];
[INFO] [stdout]     |                 ----^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let mut strip: Vec<u8> = self.decode_vertical_strip(byte);
[INFO] [stdout]     |                 ----^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:44
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                            ----^
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:58
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                                          ----^^^^^
[INFO] [stdout]     |                                                          |
[INFO] [stdout]     |                                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |             let mut x = x.wrapping_add(7 - (byte_number % 8));
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal`
[INFO] [stdout]    --> src/pacman_arcade/display.rs:157:76
[INFO] [stdout]     |
[INFO] [stdout] 157 |     pub fn draw_slice(&mut self, x: usize, mut y: usize, mut index: usize, pal: usize) {
[INFO] [stdout]     |                                                                            ^^^ help: if this is intentional, prefix it with an underscore: `_pal`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:177:36
[INFO] [stdout]     |
[INFO] [stdout] 177 |     pub fn create_slice(&mut self, mut index: usize) -> HashMap<u8, Vec<u8>> {
[INFO] [stdout]     |                                    ----^^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:188:45
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn draw_sprite(&mut self, x: usize, mut y: usize, mut sprite: usize, offset: usize, pal_no: usize) {
[INFO] [stdout]     |                                             ----^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/display.rs:188:59
[INFO] [stdout]     |
[INFO] [stdout] 188 |     pub fn draw_sprite(&mut self, x: usize, mut y: usize, mut sprite: usize, offset: usize, pal_no: usize) {
[INFO] [stdout]     |                                                           ----^^^^^^
[INFO] [stdout]     |                                                           |
[INFO] [stdout]     |                                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/pacman_arcade/display.rs:235:66
[INFO] [stdout]     |
[INFO] [stdout] 235 |     pub fn draw_pixel(&mut self, pixel_number: u8, x: u8, y: u8, offset: usize) {
[INFO] [stdout]     |                                                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:37
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |                                     ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:47
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |                                               ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:158:13
[INFO] [stdout]     |
[INFO] [stdout] 158 |         let pal_no = self.read(0x4400);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut x = (i & 0x1F) * 8;
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |             let mut y = ((i & 0x20) >> 5) * 8 + 34;
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:194:13
[INFO] [stdout]     |
[INFO] [stdout] 194 |         let pal_no = 1;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:199:17
[INFO] [stdout]     |
[INFO] [stdout] 199 |             let addr = self.fb.sprite_rom[i] * 64;
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:202:17
[INFO] [stdout]     |
[INFO] [stdout] 202 |             for row in 0..HEIGHT {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let mut sprite = 1;
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let mut x = 0;
[INFO] [stdout]    |         ----^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pal_no`
[INFO] [stdout]   --> src/main.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let pal_no = 1;
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_pal_no`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buf` and `vblank` are never read
[INFO] [stdout]   --> src/pacman_arcade/display.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct Display {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 37 |     pub raster: Vec<u32>,
[INFO] [stdout] 38 |     pub buf: Vec<u8>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub vblank: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_tile` is never used
[INFO] [stdout]    --> src/pacman_arcade/display.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Display {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn draw_tile(&mut self, tile_number: u8, x: u8, y: u8, pal_no: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Keypad` is never constructed
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Keypad {}
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Input` is never used
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait Input {
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pacman_arcade/keypad.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl Keypad {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 43 |     pub fn new() -> Keypad {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Pacman {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 11 |     pub int_vector: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 12 |     // IO port 0x00 to write interrupt vector for CPU
[INFO] [stdout] 13 |     pub int_enable: bool,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 14 |     // Vblank or CPU interrupt
[INFO] [stdout] 15 |     pub port_in: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 16 |     pub port_out: u8,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub dip: Dip,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 20 |     pub in0: IN0,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 21 |     pub in1: IN1,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 22 |     pub c_lockout: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub c_counter: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `coins_per_game`, `lives_per_game`, `bonus_extra_life`, `difficulty`, and `ghost_names` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct Dip {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 28 |     coins_per_game: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 29 |     lives_per_game: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     bonus_extra_life: u8,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     difficulty: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 32 |     ghost_names: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `joy_up`, `joy_left`, `joy_right`, and `joy_down` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct IN0 {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 37 |     joy_up: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     joy_left: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 39 |     joy_right: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 40 |     joy_down: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `joy_up`, `joy_left`, `joy_right`, and `joy_down` are never read
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct IN1 {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 45 |     joy_up: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 46 |     joy_left: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 47 |     joy_right: bool,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 48 |     joy_down: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Ram` is never constructed
[INFO] [stdout]   --> src/pacman_arcade/pacman.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | enum Map {
[INFO] [stdout]    |      --- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 58 |     Ram,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Map` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render_sprite`, `render_tiles`, `draw_screen`, and `draw_fruits` are never used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl Pacman {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn render_sprite(&mut self, x: usize, y: usize, mut index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub(crate) fn render_tiles(&mut self) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn draw_screen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn draw_fruits(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Mapper` is never used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:212:11
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub trait Mapper {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:133:24
[INFO] [stdout]     |
[INFO] [stdout] 133 |                 panic!(format!("Attempted to load: {}", path.display()));
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: the `panic!()` macro supports formatting, so there's no need for the `format!()` macro here
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: remove the `format!(..)` macro call
[INFO] [stdout]     |
[INFO] [stdout] 133 -                 panic!(format!("Attempted to load: {}", path.display()));
[INFO] [stdout] 133 +                 panic!("Attempted to load: {}", path.display());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/pacman_arcade/pacman.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 144 |         self.fb.window.update_with_buffer(&self.fb.raster, WIDTH, HEIGHT);
[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] 144 |         let _ = self.fb.window.update_with_buffer(&self.fb.raster, WIDTH, HEIGHT);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 05s
[INFO] running `Command { std: "docker" "inspect" "924553841f5da77247a4959959b535ab85335653505a6c2034abd721f52dcf72", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "924553841f5da77247a4959959b535ab85335653505a6c2034abd721f52dcf72", kill_on_drop: false }`
[INFO] [stdout] 924553841f5da77247a4959959b535ab85335653505a6c2034abd721f52dcf72
