[INFO] cloning repository https://github.com/bokuweb/rustynes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bokuweb/rustynes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbokuweb%2Frustynes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbokuweb%2Frustynes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f213881554e20054c7ea7adafe511195c25f8cb7
[INFO] checking bokuweb/rustynes against master#bca37a20bd376ce3fd138e7cdee7fe704e0f8814 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbokuweb%2Frustynes" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-0-tc1/source/.cargo/config
[INFO] started tweaking git repo https://github.com/bokuweb/rustynes
[INFO] finished tweaking git repo https://github.com/bokuweb/rustynes
[INFO] tweaked toml for git repo https://github.com/bokuweb/rustynes written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/bokuweb/rustynes on toolchain bca37a20bd376ce3fd138e7cdee7fe704e0f8814
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/bokuweb/rustynes 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" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: /workspace/builds/worker-0-tc1/source/standalone/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: /workspace/builds/worker-0-tc1/source/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded libc v0.2.30
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ff1f2985dc61ab1160ae0e493e3a5e7f1ddce0a99c57d4036cae9aacd36812fc
[INFO] running `Command { std: "docker" "start" "-a" "ff1f2985dc61ab1160ae0e493e3a5e7f1ddce0a99c57d4036cae9aacd36812fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ff1f2985dc61ab1160ae0e493e3a5e7f1ddce0a99c57d4036cae9aacd36812fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ff1f2985dc61ab1160ae0e493e3a5e7f1ddce0a99c57d4036cae9aacd36812fc", kill_on_drop: false }`
[INFO] [stdout] ff1f2985dc61ab1160ae0e493e3a5e7f1ddce0a99c57d4036cae9aacd36812fc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+bca37a20bd376ce3fd138e7cdee7fe704e0f8814" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d552e2af5da7190534e8dfb066604676c1ff33d7c21b3473a1e5275451b86ca6
[INFO] running `Command { std: "docker" "start" "-a" "d552e2af5da7190534e8dfb066604676c1ff33d7c21b3473a1e5275451b86ca6", kill_on_drop: false }`
[INFO] [stderr] warning: /opt/rustwide/workdir/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr] warning: /opt/rustwide/workdir/standalone/Cargo.toml: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling autocfg v0.1.4
[INFO] [stderr]     Checking rand_core v0.4.0
[INFO] [stderr]     Checking libc v0.2.30
[INFO] [stderr]    Compiling cfg-if v0.1.9
[INFO] [stderr]     Checking lazy_static v0.2.8
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling sdl2 v0.32.2
[INFO] [stderr]     Checking lazy_static v1.3.0
[INFO] [stderr]    Compiling sdl2-sys v0.32.6
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]     Checking rand_jitter v0.1.4
[INFO] [stderr]     Checking rand_isaac v0.1.1
[INFO] [stderr]     Checking rand_hc v0.1.0
[INFO] [stderr]     Checking rand_xorshift v0.1.1
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]     Checking rustynes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/apu/mod.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x00...0x03 => {
[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/apu/mod.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |             0x04...0x07 => {
[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/apu/mod.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             0x08...0x0b => {
[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/apu/mod.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x0c...0x0f => {
[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/bus/cpu_bus.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0x0000...0x1FFF => self.work_ram.read(addr & 0x07FF),
[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/bus/cpu_bus.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |             0x2000...0x3FFF => self.ppu.read(addr - 0x2000),
[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/bus/cpu_bus.rs:62:19
[INFO] [stdout]    |
[INFO] [stdout] 62 |             0x4000...0x401F => self.apu.read(addr - 0x4000),
[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/bus/cpu_bus.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |             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/bus/cpu_bus.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             0x8000...0xBFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             0xC000...0xFFFF if self.program_rom.size() <= 0x4000 => {
[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/bus/cpu_bus.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xC000...0xFFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x1FFF => self.work_ram.write(addr & 0x07FF, data),
[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/bus/cpu_bus.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |             0x2000...0x3FFF => self.ppu.write(addr - 0x2000, data),
[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/bus/cpu_bus.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 |             0x4000...0x401F => self.apu.write(addr - 0x4000, data),
[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/bus/cpu_bus.rs:86:19
[INFO] [stdout]    |
[INFO] [stdout] 86 |             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/bus/cpu_bus.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             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/cpu/instructions.rs:556:15
[INFO] [stdout]     |
[INFO] [stdout] 556 |     bus.write((addr | 0x0100), data);
[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] 556 -     bus.write((addr | 0x0100), data);
[INFO] [stdout] 556 +     bus.write(addr | 0x0100 , data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/apu/mod.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x00...0x03 => {
[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/apu/mod.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |             0x04...0x07 => {
[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/apu/mod.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             0x08...0x0b => {
[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/apu/mod.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x0c...0x0f => {
[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/bus/cpu_bus.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0x0000...0x1FFF => self.work_ram.read(addr & 0x07FF),
[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/bus/cpu_bus.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |             0x2000...0x3FFF => self.ppu.read(addr - 0x2000),
[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/bus/cpu_bus.rs:62:19
[INFO] [stdout]    |
[INFO] [stdout] 62 |             0x4000...0x401F => self.apu.read(addr - 0x4000),
[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/bus/cpu_bus.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |             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/bus/cpu_bus.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             0x8000...0xBFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             0xC000...0xFFFF if self.program_rom.size() <= 0x4000 => {
[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/bus/cpu_bus.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xC000...0xFFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x1FFF => self.work_ram.write(addr & 0x07FF, data),
[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/bus/cpu_bus.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |             0x2000...0x3FFF => self.ppu.write(addr - 0x2000, data),
[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/bus/cpu_bus.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 |             0x4000...0x401F => self.apu.write(addr - 0x4000, data),
[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/bus/cpu_bus.rs:86:19
[INFO] [stdout]    |
[INFO] [stdout] 86 |             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/bus/cpu_bus.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             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/cpu/instructions.rs:556:15
[INFO] [stdout]     |
[INFO] [stdout] 556 |     bus.write((addr | 0x0100), data);
[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] 556 -     bus.write((addr | 0x0100), data);
[INFO] [stdout] 556 +     bus.write(addr | 0x0100 , data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout]  35 |         Instruction::LDA => lda(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  36 |         Instruction::LDX if code.mode == Addressing::Immediate => ldx_imm(operand, registers),
[INFO] [stdout]  37 |         Instruction::LDX => ldx(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  38 |         Instruction::LDY if code.mode == Addressing::Immediate => ldy_imm(operand, registers),
[INFO] [stdout]  39 |         Instruction::LDY => ldy(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  40 |         Instruction::STA => sta(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `divider_for_frequency` and `frequency` are never read
[INFO] [stdout]   --> src/nes/apu/noise.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Noise {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     divider_for_frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Noise` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `enable` and `disable` are never used
[INFO] [stdout]   --> src/nes/apu/noise.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Noise {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn enable(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn disable(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_oscillator` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn close_oscillator(index: usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_oscillator_pulse_width` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn set_oscillator_pulse_width(index: usize, width: f32);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_negative`, `set_zero`, `get_reserved`, `get_break`, and `get_decimal` are never used
[INFO] [stdout]   --> src/nes/cpu_registers/mod.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub trait CpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn set_negative(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_zero(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn get_reserved(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     fn get_break(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn get_decimal(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_background_masked` and `is_sprite_masked` are never used
[INFO] [stdout]   --> src/nes/ppu/registers/mod.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait PpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn is_background_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |
[INFO] [stdout] 85 |     fn is_sprite_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_addr` is never used
[INFO] [stdout]   --> src/nes/ppu/registers/oam.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Oam {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn reset_addr(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout]  35 |         Instruction::LDA => lda(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  36 |         Instruction::LDX if code.mode == Addressing::Immediate => ldx_imm(operand, registers),
[INFO] [stdout]  37 |         Instruction::LDX => ldx(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  38 |         Instruction::LDY if code.mode == Addressing::Immediate => ldy_imm(operand, registers),
[INFO] [stdout]  39 |         Instruction::LDY => ldy(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  40 |         Instruction::STA => sta(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `divider_for_frequency` and `frequency` are never read
[INFO] [stdout]   --> src/nes/apu/noise.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Noise {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     divider_for_frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Noise` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `enable` and `disable` are never used
[INFO] [stdout]   --> src/nes/apu/noise.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Noise {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn enable(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn disable(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_oscillator` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn close_oscillator(index: usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_oscillator_pulse_width` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn set_oscillator_pulse_width(index: usize, width: f32);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_negative`, `set_zero`, `get_reserved`, `get_break`, and `get_decimal` are never used
[INFO] [stdout]   --> src/nes/cpu_registers/mod.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub trait CpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn set_negative(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_zero(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn get_reserved(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     fn get_break(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn get_decimal(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_background_masked` and `is_sprite_masked` are never used
[INFO] [stdout]   --> src/nes/ppu/registers/mod.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait PpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn is_background_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |
[INFO] [stdout] 85 |     fn is_sprite_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_addr` is never used
[INFO] [stdout]   --> src/nes/ppu/registers/oam.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Oam {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn reset_addr(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/apu/mod.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x00...0x03 => {
[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/apu/mod.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |             0x04...0x07 => {
[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/apu/mod.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             0x08...0x0b => {
[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/apu/mod.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x0c...0x0f => {
[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/bus/cpu_bus.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0x0000...0x1FFF => self.work_ram.read(addr & 0x07FF),
[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/bus/cpu_bus.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |             0x2000...0x3FFF => self.ppu.read(addr - 0x2000),
[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/bus/cpu_bus.rs:62:19
[INFO] [stdout]    |
[INFO] [stdout] 62 |             0x4000...0x401F => self.apu.read(addr - 0x4000),
[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/bus/cpu_bus.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |             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/bus/cpu_bus.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             0x8000...0xBFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             0xC000...0xFFFF if self.program_rom.size() <= 0x4000 => {
[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/bus/cpu_bus.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xC000...0xFFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x1FFF => self.work_ram.write(addr & 0x07FF, data),
[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/bus/cpu_bus.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |             0x2000...0x3FFF => self.ppu.write(addr - 0x2000, data),
[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/bus/cpu_bus.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 |             0x4000...0x401F => self.apu.write(addr - 0x4000, data),
[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/bus/cpu_bus.rs:86:19
[INFO] [stdout]    |
[INFO] [stdout] 86 |             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/bus/cpu_bus.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             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/cpu/instructions.rs:556:15
[INFO] [stdout]     |
[INFO] [stdout] 556 |     bus.write((addr | 0x0100), data);
[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] 556 -     bus.write((addr | 0x0100), data);
[INFO] [stdout] 556 +     bus.write(addr | 0x0100 , data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ppu::background`
[INFO] [stdout]   --> src/nes/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use self::ppu::background;
[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: `self::ppu::Tile`
[INFO] [stdout]   --> src/nes/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use self::ppu::Tile;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SpriteWithCtx`
[INFO] [stdout]   --> src/nes/mod.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use self::ppu::{Sprite, SpritePosition, SpriteWithCtx};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/nes/apu/mod.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x00...0x03 => {
[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/apu/mod.rs:84:17
[INFO] [stdout]    |
[INFO] [stdout] 84 |             0x04...0x07 => {
[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/apu/mod.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |             0x08...0x0b => {
[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/apu/mod.rs:90:17
[INFO] [stdout]    |
[INFO] [stdout] 90 |             0x0c...0x0f => {
[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/bus/cpu_bus.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0x0000...0x1FFF => self.work_ram.read(addr & 0x07FF),
[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/bus/cpu_bus.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |             0x2000...0x3FFF => self.ppu.read(addr - 0x2000),
[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/bus/cpu_bus.rs:62:19
[INFO] [stdout]    |
[INFO] [stdout] 62 |             0x4000...0x401F => self.apu.read(addr - 0x4000),
[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/bus/cpu_bus.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |             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/bus/cpu_bus.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             0x8000...0xBFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             0xC000...0xFFFF if self.program_rom.size() <= 0x4000 => {
[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/bus/cpu_bus.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xC000...0xFFFF => self.program_rom.read(addr - 0x8000),
[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/bus/cpu_bus.rs:81:19
[INFO] [stdout]    |
[INFO] [stdout] 81 |             0x0000...0x1FFF => self.work_ram.write(addr & 0x07FF, data),
[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/bus/cpu_bus.rs:82:19
[INFO] [stdout]    |
[INFO] [stdout] 82 |             0x2000...0x3FFF => self.ppu.write(addr - 0x2000, data),
[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/bus/cpu_bus.rs:85:19
[INFO] [stdout]    |
[INFO] [stdout] 85 |             0x4000...0x401F => self.apu.write(addr - 0x4000, data),
[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/bus/cpu_bus.rs:86:19
[INFO] [stdout]    |
[INFO] [stdout] 86 |             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/bus/cpu_bus.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |             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/cpu/instructions.rs:556:15
[INFO] [stdout]     |
[INFO] [stdout] 556 |     bus.write((addr | 0x0100), data);
[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] 556 -     bus.write((addr | 0x0100), data);
[INFO] [stdout] 556 +     bus.write(addr | 0x0100 , data);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self::ppu::background`
[INFO] [stdout]   --> src/nes/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use self::ppu::background;
[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: `self::ppu::Tile`
[INFO] [stdout]   --> src/nes/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use self::ppu::Tile;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SpriteWithCtx`
[INFO] [stdout]   --> src/nes/mod.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use self::ppu::{Sprite, SpritePosition, SpriteWithCtx};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]    --> src/nes/cpu/opecode.rs:98:1
[INFO] [stdout]     |
[INFO] [stdout]  98 | / lazy_static! {
[INFO] [stdout]  99 | |         
[INFO] [stdout] 100 | |         pub static ref MAP: HashMap<u8, Opecode> = {
[INFO] [stdout] ...   |
[INFO] [stdout] 359 | |         };        
[INFO] [stdout] 360 | |     }
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `__lazy_static_create` which comes from the expansion of the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout]  35 |         Instruction::LDA => lda(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  36 |         Instruction::LDX if code.mode == Addressing::Immediate => ldx_imm(operand, registers),
[INFO] [stdout]  37 |         Instruction::LDX => ldx(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  38 |         Instruction::LDY if code.mode == Addressing::Immediate => ldy_imm(operand, registers),
[INFO] [stdout]  39 |         Instruction::LDY => ldy(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  40 |         Instruction::STA => sta(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_render_buf` is never used
[INFO] [stdout]   --> src/nes/mod.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn get_render_buf(ctx: &mut Context) -> &Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `divider_for_frequency` and `frequency` are never read
[INFO] [stdout]   --> src/nes/apu/noise.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Noise {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     divider_for_frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Noise` 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 `enable` and `disable` are never used
[INFO] [stdout]   --> src/nes/apu/noise.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Noise {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn enable(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn disable(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_oscillator` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn close_oscillator(index: usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_oscillator_pulse_width` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn set_oscillator_pulse_width(index: usize, width: f32);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_negative`, `set_zero`, `get_reserved`, `get_break`, and `get_decimal` are never used
[INFO] [stdout]   --> src/nes/cpu_registers/mod.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub trait CpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn set_negative(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_zero(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn get_reserved(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     fn get_break(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn get_decimal(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mapper` is never read
[INFO] [stdout]  --> src/nes/mmc/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Mmc {
[INFO] [stdout]   |            --- field in this struct
[INFO] [stdout] 3 |     mapper: u8,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Mmc` 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 `get_bank` and `get_mapper` are never used
[INFO] [stdout]   --> src/nes/mmc/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Mmc {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn get_bank(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn get_mapper(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_background_masked` and `is_sprite_masked` are never used
[INFO] [stdout]   --> src/nes/ppu/registers/mod.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait PpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn is_background_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |
[INFO] [stdout] 85 |     fn is_sprite_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_addr` is never used
[INFO] [stdout]   --> src/nes/ppu/registers/oam.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Oam {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn reset_addr(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `offset_addr_by_sprite_table` is never read
[INFO] [stdout]   --> src/nes/ppu/sprite_utils.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SpriteConfig {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub offset_addr_by_sprite_table: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpriteConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_buf` is never used
[INFO] [stdout]   --> src/nes/renderer/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Renderer {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn get_buf(&self) -> &Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval` is never used
[INFO] [stdout]   --> src/externs/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn eval(x: &str) -> i32 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `emscripten_run_script_int` is never used
[INFO] [stdout]   --> src/externs/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn emscripten_run_script_int(x: *const c_uchar) -> c_int;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking num v0.1.42
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/nes/cpu/mod.rs:113:9
[INFO] [stdout]     |
[INFO] [stdout]  35 |         Instruction::LDA => lda(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  36 |         Instruction::LDX if code.mode == Addressing::Immediate => ldx_imm(operand, registers),
[INFO] [stdout]  37 |         Instruction::LDX => ldx(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  38 |         Instruction::LDY if code.mode == Addressing::Immediate => ldy_imm(operand, registers),
[INFO] [stdout]  39 |         Instruction::LDY => ldy(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout]  40 |         Instruction::STA => sta(operand, registers, bus),
[INFO] [stdout]     |         ---------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 113 |         _ => panic!("{}", "Undefined opecode detected."),
[INFO] [stdout]     |         ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_render_buf` is never used
[INFO] [stdout]   --> src/nes/mod.rs:89:8
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn get_render_buf(ctx: &mut Context) -> &Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `divider_for_frequency` and `frequency` are never read
[INFO] [stdout]   --> src/nes/apu/noise.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Noise {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     divider_for_frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     frequency: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Noise` 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 `enable` and `disable` are never used
[INFO] [stdout]   --> src/nes/apu/noise.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Noise {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn enable(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn disable(&mut self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `close_oscillator` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn close_oscillator(index: usize);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_oscillator_pulse_width` is never used
[INFO] [stdout]   --> src/nes/apu/triangle.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn set_oscillator_pulse_width(index: usize, width: f32);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_negative`, `set_zero`, `get_reserved`, `get_break`, and `get_decimal` are never used
[INFO] [stdout]   --> src/nes/cpu_registers/mod.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub trait CpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 52 |     fn set_negative(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_zero(&mut self, v: bool) -> &mut Self;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn get_reserved(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     fn get_break(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn get_decimal(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mapper` is never read
[INFO] [stdout]  --> src/nes/mmc/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Mmc {
[INFO] [stdout]   |            --- field in this struct
[INFO] [stdout] 3 |     mapper: u8,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Mmc` 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 `get_bank` and `get_mapper` are never used
[INFO] [stdout]   --> src/nes/mmc/mod.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Mmc {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn get_bank(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn get_mapper(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_background_masked` and `is_sprite_masked` are never used
[INFO] [stdout]   --> src/nes/ppu/registers/mod.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub trait PpuRegisters {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 83 |     fn is_background_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 84 |
[INFO] [stdout] 85 |     fn is_sprite_masked(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset_addr` is never used
[INFO] [stdout]   --> src/nes/ppu/registers/oam.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Oam {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn reset_addr(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `offset_addr_by_sprite_table` is never read
[INFO] [stdout]   --> src/nes/ppu/sprite_utils.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SpriteConfig {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub offset_addr_by_sprite_table: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpriteConfig` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_buf` is never used
[INFO] [stdout]   --> src/nes/renderer/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Renderer {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn get_buf(&self) -> &Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eval` is never used
[INFO] [stdout]   --> src/externs/mod.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn eval(x: &str) -> i32 {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `emscripten_run_script_int` is never used
[INFO] [stdout]   --> src/externs/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn emscripten_run_script_int(x: *const c_uchar) -> c_int;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking standalone v0.1.0 (/opt/rustwide/workdir/standalone)
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> standalone/src/main.rs:185:20
[INFO] [stdout]     |
[INFO] [stdout] 185 |             panic!(err);
[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: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]     |
[INFO] [stdout] 185 |             panic!("{}", err);
[INFO] [stdout]     |                    +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]     |
[INFO] [stdout] 185 -             panic!(err);
[INFO] [stdout] 185 +             std::panic::panic_any(err);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> standalone/src/main.rs:185:20
[INFO] [stdout]     |
[INFO] [stdout] 185 |             panic!(err);
[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: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]     |
[INFO] [stdout] 185 |             panic!("{}", err);
[INFO] [stdout]     |                    +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]     |
[INFO] [stdout] 185 -             panic!(err);
[INFO] [stdout] 185 +             std::panic::panic_any(err);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.52s
[INFO] running `Command { std: "docker" "inspect" "d552e2af5da7190534e8dfb066604676c1ff33d7c21b3473a1e5275451b86ca6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d552e2af5da7190534e8dfb066604676c1ff33d7c21b3473a1e5275451b86ca6", kill_on_drop: false }`
[INFO] [stdout] d552e2af5da7190534e8dfb066604676c1ff33d7c21b3473a1e5275451b86ca6
