[INFO] cloning repository https://github.com/pcleavelin/nes_emu_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/pcleavelin/nes_emu_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpcleavelin%2Fnes_emu_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpcleavelin%2Fnes_emu_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2110e7046e6fb3c9c04ba5c50d211ec63da8f221
[INFO] checking pcleavelin/nes_emu_rust against master#d5419f1e97b90741d51841f800d3c697c662567d for pr-147565
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fpcleavelin%2Fnes_emu_rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/pcleavelin/nes_emu_rust
[INFO] finished tweaking git repo https://github.com/pcleavelin/nes_emu_rust
[INFO] tweaked toml for git repo https://github.com/pcleavelin/nes_emu_rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/pcleavelin/nes_emu_rust on toolchain d5419f1e97b90741d51841f800d3c697c662567d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d5419f1e97b90741d51841f800d3c697c662567d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/pcleavelin/nes_emu_rust 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" "+d5419f1e97b90741d51841f800d3c697c662567d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded dylib v0.0.1
[INFO] [stderr]   Downloaded libc v0.1.12
[INFO] [stderr]   Downloaded redox_syscall v0.1.18
[INFO] [stderr]   Downloaded kernel32-sys v0.1.4
[INFO] [stderr]   Downloaded time v0.1.37
[INFO] [stderr]   Downloaded gcc v0.3.50
[INFO] [stderr]   Downloaded num-traits v0.1.37
[INFO] [stderr]   Downloaded x11-dl v2.2.1
[INFO] [stderr]   Downloaded minifb v0.9.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d5419f1e97b90741d51841f800d3c697c662567d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 77987e2cadfed754c939efdcca88b3583ccd656a3756c75d620b0c3edf90d6c2
[INFO] running `Command { std: "docker" "start" "-a" "77987e2cadfed754c939efdcca88b3583ccd656a3756c75d620b0c3edf90d6c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "77987e2cadfed754c939efdcca88b3583ccd656a3756c75d620b0c3edf90d6c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "77987e2cadfed754c939efdcca88b3583ccd656a3756c75d620b0c3edf90d6c2", kill_on_drop: false }`
[INFO] [stdout] 77987e2cadfed754c939efdcca88b3583ccd656a3756c75d620b0c3edf90d6c2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d5419f1e97b90741d51841f800d3c697c662567d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] baf885157904ad468301dbdadca2c3cd171ee6c576d89e10312057c9b0924db1
[INFO] running `Command { std: "docker" "start" "-a" "baf885157904ad468301dbdadca2c3cd171ee6c576d89e10312057c9b0924db1", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling gcc v0.3.50
[INFO] [stderr]     Checking dylib v0.0.1
[INFO] [stderr]     Checking libc v0.1.12
[INFO] [stderr]     Checking time v0.1.37
[INFO] [stderr]     Checking num-traits v0.1.37
[INFO] [stderr]     Checking x11-dl v2.2.1
[INFO] [stderr]     Checking enum_primitive v0.1.1
[INFO] [stderr]    Compiling minifb v0.9.1
[INFO] [stderr]     Checking nes_emu_rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `super::opcode::Op::*`
[INFO] [stdout]  --> src/nes/cpu.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::opcode::Op::*;
[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 imports: `Key`, `Scale`, and `WindowOptions`
[INFO] [stdout]  --> src/nes/ppu.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{WindowOptions, Window, Key, Scale};
[INFO] [stdout]   |              ^^^^^^^^^^^^^          ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::interconnect::Interconnect`
[INFO] [stdout]  --> src/nes/ppu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::interconnect::Interconnect;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key`, `Scale`, and `WindowOptions`
[INFO] [stdout]  --> src/nes/interconnect.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{WindowOptions, Window, Key, Scale};
[INFO] [stdout]   |              ^^^^^^^^^^^^^          ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 |             0...3 => {
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:60:14
[INFO] [stdout]    |
[INFO] [stdout] 60 |             0...3 => {
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 88 |             0x0000...0x1FFF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             0x2000...0x3FFF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:96:19
[INFO] [stdout]    |
[INFO] [stdout] 96 |             0x4000...0x4017 => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |             0x4018...0x401F => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |             0x4020...0x5FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:108:19
[INFO] [stdout]     |
[INFO] [stdout] 108 |             0x6000...0x7FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:112:19
[INFO] [stdout]     |
[INFO] [stdout] 112 |             0x8000...0xBFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout] 116 |             0xC000...0xFFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:144:23
[INFO] [stdout]     |
[INFO] [stdout] 144 |         self.read_mem((addr + x))
[INFO] [stdout]     |                       ^        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 144 -         self.read_mem((addr + x))
[INFO] [stdout] 144 +         self.read_mem(addr + x )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:148:23
[INFO] [stdout]     |
[INFO] [stdout] 148 |         self.read_mem((addr + y))
[INFO] [stdout]     |                       ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 148 -         self.read_mem((addr + y))
[INFO] [stdout] 148 +         self.read_mem(addr + y )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             0x0000...0x1FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             0x2000...0x3FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:178:19
[INFO] [stdout]     |
[INFO] [stdout] 178 |             0x4000...0x4017 => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |             0x4018...0x401F => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:187:19
[INFO] [stdout]     |
[INFO] [stdout] 187 |             0x4020...0x5FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |             0x6000...0x7FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:195:19
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x8000...0xFFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:222:24
[INFO] [stdout]     |
[INFO] [stdout] 222 |         self.write_mem((addr + x), val);
[INFO] [stdout]     |                        ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 222 -         self.write_mem((addr + x), val);
[INFO] [stdout] 222 +         self.write_mem(addr + x , val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:226:24
[INFO] [stdout]     |
[INFO] [stdout] 226 |         self.write_mem((addr + y), val);
[INFO] [stdout]     |                        ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         self.write_mem((addr + y), val);
[INFO] [stdout] 226 +         self.write_mem(addr + y , val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::opcode::Op::*`
[INFO] [stdout]  --> src/nes/cpu.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::opcode::Op::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/nes/mod.rs:75:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 break;
[INFO] [stdout]    |                 ----- any code following this expression is unreachable
[INFO] [stdout] 75 |                 self.cpu.offset_pc(1);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key`, `Scale`, and `WindowOptions`
[INFO] [stdout]  --> src/nes/ppu.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{WindowOptions, Window, Key, Scale};
[INFO] [stdout]   |              ^^^^^^^^^^^^^          ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::interconnect::Interconnect`
[INFO] [stdout]  --> src/nes/ppu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::interconnect::Interconnect;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key`, `Scale`, and `WindowOptions`
[INFO] [stdout]  --> src/nes/interconnect.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use minifb::{WindowOptions, Window, Key, Scale};
[INFO] [stdout]   |              ^^^^^^^^^^^^^          ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 |             0...3 => {
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:60:14
[INFO] [stdout]    |
[INFO] [stdout] 60 |             0...3 => {
[INFO] [stdout]    |              ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 88 |             0x0000...0x1FFF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             0x2000...0x3FFF => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/interconnect.rs:96:19
[INFO] [stdout]    |
[INFO] [stdout] 96 |             0x4000...0x4017 => {
[INFO] [stdout]    |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |             0x4018...0x401F => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:104:19
[INFO] [stdout]     |
[INFO] [stdout] 104 |             0x4020...0x5FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:108:19
[INFO] [stdout]     |
[INFO] [stdout] 108 |             0x6000...0x7FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:112:19
[INFO] [stdout]     |
[INFO] [stdout] 112 |             0x8000...0xBFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:116:19
[INFO] [stdout]     |
[INFO] [stdout] 116 |             0xC000...0xFFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:144:23
[INFO] [stdout]     |
[INFO] [stdout] 144 |         self.read_mem((addr + x))
[INFO] [stdout]     |                       ^        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 144 -         self.read_mem((addr + x))
[INFO] [stdout] 144 +         self.read_mem(addr + x )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:148:23
[INFO] [stdout]     |
[INFO] [stdout] 148 |         self.read_mem((addr + y))
[INFO] [stdout]     |                       ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 148 -         self.read_mem((addr + y))
[INFO] [stdout] 148 +         self.read_mem(addr + y )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:168:19
[INFO] [stdout]     |
[INFO] [stdout] 168 |             0x0000...0x1FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:172:19
[INFO] [stdout]     |
[INFO] [stdout] 172 |             0x2000...0x3FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:178:19
[INFO] [stdout]     |
[INFO] [stdout] 178 |             0x4000...0x4017 => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:183:19
[INFO] [stdout]     |
[INFO] [stdout] 183 |             0x4018...0x401F => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:187:19
[INFO] [stdout]     |
[INFO] [stdout] 187 |             0x4020...0x5FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |             0x6000...0x7FFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/nes/interconnect.rs:195:19
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x8000...0xFFFF => {
[INFO] [stdout]     |                   ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:222:24
[INFO] [stdout]     |
[INFO] [stdout] 222 |         self.write_mem((addr + x), val);
[INFO] [stdout]     |                        ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 222 -         self.write_mem((addr + x), val);
[INFO] [stdout] 222 +         self.write_mem(addr + x , val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/nes/interconnect.rs:226:24
[INFO] [stdout]     |
[INFO] [stdout] 226 |         self.write_mem((addr + y), val);
[INFO] [stdout]     |                        ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         self.write_mem((addr + y), val);
[INFO] [stdout] 226 +         self.write_mem(addr + y , val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/nes/cpu.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut val = lhs.wrapping_sub(rhs);
[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/nes/cpu.rs:356:13
[INFO] [stdout]     |
[INFO] [stdout] 356 |         let mut val = lhs.wrapping_sub(rhs);
[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/nes/cpu.rs:378:13
[INFO] [stdout]     |
[INFO] [stdout] 378 |         let mut val = lhs & rhs;
[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/nes/cpu.rs:395:13
[INFO] [stdout]     |
[INFO] [stdout] 395 |         let mut val = lhs | rhs;
[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/nes/cpu.rs:551:29
[INFO] [stdout]     |
[INFO] [stdout] 551 |                         let mut val = interconnect.read_zero_page(opcode.imm1() 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/nes/interconnect.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut pt0 = self.cart.get_pattern_table(0);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/nes/interconnect.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let mut pt1 = self.cart.get_pattern_table(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/nes/interconnect.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut nt0 = &self.internal_ram[(0*0x400)..((0+1)*0x400)];
[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/nes/interconnect.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let mut nt1 = &self.internal_ram[(1*0x400)..((1+1)*0x400)];
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `soft_restart` is never used
[INFO] [stdout]   --> src/nes/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl NES {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn soft_restart(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/nes/cpu.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl NESCpu {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn a(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn x(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn y(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn s(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn p(&self) -> CPUStatus {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn set_p(&mut self, val: CPUStatus) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn offset_a(&mut self, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     fn add(&mut self, lhs: u8, rhs: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn subtract_with_carry(&mut self, lhs: u8, rhs: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr` and `oam_dma` are never read
[INFO] [stdout]   --> src/nes/ppu.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct NESPpu {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     addr: u8,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     data: u8,
[INFO] [stdout] 16 |     oam_dma: u8,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `apu` and `io` are never read
[INFO] [stdout]   --> src/nes/interconnect.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Interconnect {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     apu: NESApu, //Can't wait for this (never done audio before)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 18 |     io: NESIo,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/nes/interconnect.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Interconnect {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn ram(&self) -> [u8;0x0800] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn get_pattern_table(&mut self, num: usize) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn get_name_table(&mut self, num: usize) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn read_zero_paged_indexed_y(&mut self, addr: usize, y: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn read_indexed_indirect_y(&mut self, addr: usize, y: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn write_zero_paged_indexed_y(&mut self, addr: usize, y: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn write_absolute_indexed_x(&mut self, addr: usize, x: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn write_absolute_indexed_y(&mut self, addr: usize, y: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn write_indexed_indirect_x(&mut self, addr: usize, x: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/nes/mod.rs:75:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 break;
[INFO] [stdout]    |                 ----- any code following this expression is unreachable
[INFO] [stdout] 75 |                 self.cpu.offset_pc(1);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/nes/cpu.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut val = lhs.wrapping_sub(rhs);
[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/nes/cpu.rs:356:13
[INFO] [stdout]     |
[INFO] [stdout] 356 |         let mut val = lhs.wrapping_sub(rhs);
[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/nes/cpu.rs:378:13
[INFO] [stdout]     |
[INFO] [stdout] 378 |         let mut val = lhs & rhs;
[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/nes/cpu.rs:395:13
[INFO] [stdout]     |
[INFO] [stdout] 395 |         let mut val = lhs | rhs;
[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/nes/cpu.rs:551:29
[INFO] [stdout]     |
[INFO] [stdout] 551 |                         let mut val = interconnect.read_zero_page(opcode.imm1() 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/nes/interconnect.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut pt0 = self.cart.get_pattern_table(0);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/nes/interconnect.rs:72:13
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let mut pt1 = self.cart.get_pattern_table(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/nes/interconnect.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut nt0 = &self.internal_ram[(0*0x400)..((0+1)*0x400)];
[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/nes/interconnect.rs:75:13
[INFO] [stdout]    |
[INFO] [stdout] 75 |         let mut nt1 = &self.internal_ram[(1*0x400)..((1+1)*0x400)];
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `soft_restart` is never used
[INFO] [stdout]   --> src/nes/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl NES {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn soft_restart(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/nes/cpu.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl NESCpu {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn a(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn x(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn y(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn s(&self) -> u8 {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn p(&self) -> CPUStatus {
[INFO] [stdout]     |            ^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn set_p(&mut self, val: CPUStatus) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn offset_a(&mut self, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 308 |     fn add(&mut self, lhs: u8, rhs: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 330 |     pub fn subtract_with_carry(&mut self, lhs: u8, rhs: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr` and `oam_dma` are never read
[INFO] [stdout]   --> src/nes/ppu.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct NESPpu {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     addr: u8,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     data: u8,
[INFO] [stdout] 16 |     oam_dma: u8,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `apu` and `io` are never read
[INFO] [stdout]   --> src/nes/interconnect.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Interconnect {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     apu: NESApu, //Can't wait for this (never done audio before)
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 18 |     io: NESIo,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/nes/interconnect.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl Interconnect {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn ram(&self) -> [u8;0x0800] {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub fn get_pattern_table(&mut self, num: usize) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn get_name_table(&mut self, num: usize) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn read_zero_paged_indexed_y(&mut self, addr: usize, y: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn read_indexed_indirect_y(&mut self, addr: usize, y: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub fn write_zero_paged_indexed_y(&mut self, addr: usize, y: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn write_absolute_indexed_x(&mut self, addr: usize, x: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn write_absolute_indexed_y(&mut self, addr: usize, y: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn write_indexed_indirect_x(&mut self, addr: usize, x: usize, val: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.64s
[INFO] running `Command { std: "docker" "inspect" "baf885157904ad468301dbdadca2c3cd171ee6c576d89e10312057c9b0924db1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "baf885157904ad468301dbdadca2c3cd171ee6c576d89e10312057c9b0924db1", kill_on_drop: false }`
[INFO] [stdout] baf885157904ad468301dbdadca2c3cd171ee6c576d89e10312057c9b0924db1
