[INFO] cloning repository https://github.com/emmnm/dmgr
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/emmnm/dmgr" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femmnm%2Fdmgr", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femmnm%2Fdmgr'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 32da678f01eef30657fe3d0ca0ed81daac715153
[INFO] checking emmnm/dmgr against try#0c70cfbec949d241375e31c5a42066be70c720fc for pr-149681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femmnm%2Fdmgr" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/emmnm/dmgr
[INFO] finished tweaking git repo https://github.com/emmnm/dmgr
[INFO] tweaked toml for git repo https://github.com/emmnm/dmgr written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/emmnm/dmgr on toolchain 0c70cfbec949d241375e31c5a42066be70c720fc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0c70cfbec949d241375e31c5a42066be70c720fc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/emmnm/dmgr 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" "+0c70cfbec949d241375e31c5a42066be70c720fc" "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]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking emmnm/dmgr against try#0c70cfbec949d241375e31c5a42066be70c720fc for pr-149681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femmnm%2Fdmgr" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/emmnm/dmgr
[INFO] finished tweaking git repo https://github.com/emmnm/dmgr
[INFO] tweaked toml for git repo https://github.com/emmnm/dmgr written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/emmnm/dmgr on toolchain 0c70cfbec949d241375e31c5a42066be70c720fc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0c70cfbec949d241375e31c5a42066be70c720fc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/emmnm/dmgr 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" "+0c70cfbec949d241375e31c5a42066be70c720fc" "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]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded num-integer v0.1.34
[INFO] [stderr]   Downloaded num-iter v0.1.33
[INFO] [stderr]   Downloaded sdl2-sys v0.27.3
[INFO] [stderr]   Downloaded num v0.1.37
[INFO] [stderr]   Downloaded num-traits v0.1.37
[INFO] [stderr]   Downloaded sdl2 v0.29.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0c70cfbec949d241375e31c5a42066be70c720fc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 800d20efbde8721d4d72dd3273d6f42f7e78f7c91f2286b94ba1631a0857e013
[INFO] running `Command { std: "docker" "start" "-a" "800d20efbde8721d4d72dd3273d6f42f7e78f7c91f2286b94ba1631a0857e013", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "800d20efbde8721d4d72dd3273d6f42f7e78f7c91f2286b94ba1631a0857e013", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "800d20efbde8721d4d72dd3273d6f42f7e78f7c91f2286b94ba1631a0857e013", kill_on_drop: false }`
[INFO] [stdout] 800d20efbde8721d4d72dd3273d6f42f7e78f7c91f2286b94ba1631a0857e013
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0c70cfbec949d241375e31c5a42066be70c720fc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 26b1891e11b117ef89ebcde32db6ef823a78228ce69caf82e96cc2de64eb989c
[INFO] running `Command { std: "docker" "start" "-a" "26b1891e11b117ef89ebcde32db6ef823a78228ce69caf82e96cc2de64eb989c", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Checking num-traits v0.1.37
[INFO] [stderr]    Compiling sdl2-sys v0.27.3
[INFO] [stderr]     Checking libc v0.2.21
[INFO] [stderr]     Checking lazy_static v0.2.8
[INFO] [stderr]     Checking rand v0.3.15
[INFO] [stderr]     Checking num-integer v0.1.34
[INFO] [stderr]     Checking num-iter v0.1.33
[INFO] [stderr]     Checking num v0.1.37
[INFO] [stderr]     Checking sdl2 v0.29.1
[INFO] [stderr]     Checking dmgr v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::render::Texture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/cart/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/rom_only.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 |             0x0000...0x7FFF => self.bytes[idx],
[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/cart/mbc1.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |             0x0000...0x3FFF => { self.bytes[idx]},
[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/cart/mbc1.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 40 |             0x4000...0x7FFF => { self.bytes[(idx - 0x4000) + 0x4000 * self.rom_bank] }, // here!
[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/cart/mbc1.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 41 |             0xA000...0xBFFF => { self.ram[(idx-0xA000) + 0x2000 * self.ram_bank] },
[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/cart/mbc1.rs:49:19
[INFO] [stdout]    |
[INFO] [stdout] 49 |             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/cart/mbc1.rs:52:19
[INFO] [stdout]    |
[INFO] [stdout] 52 |             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/cart/mbc1.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0xA000...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/cart/mbc1.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |             0x4000...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/cart/mbc1.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             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/cart/mbc3.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |             0x0000...0x3FFF => {self.bytes[idx]},
[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/cart/mbc3.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |             0x4000...0x7FFF => {self.bytes[(idx - 0x4000) + 0x4000 * self.rom_bank] }, // here!
[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: unused import: `sdl2::render::Texture`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::render::Texture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mbc3.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 40 |             0xA000...0xBFFF => { self.ram[(idx-0xA000) + 0x2000 * self.ram_bank] },
[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: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/cart/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/rom_only.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 |             0x0000...0x7FFF => self.bytes[idx],
[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/cart/mbc3.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |             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/cart/mbc3.rs:51:19
[INFO] [stdout]    |
[INFO] [stdout] 51 |             0x2000...0x3FFF => { //use 7 bits.
[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/cart/mbc1.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |             0x0000...0x3FFF => { self.bytes[idx]},
[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/cart/mbc3.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |             0xA000...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/cart/mbc3.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 64 |             0x4000...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/cart/mbc3.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             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/cart/mbc1.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 40 |             0x4000...0x7FFF => { self.bytes[(idx - 0x4000) + 0x4000 * self.rom_bank] }, // here!
[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/cart/mod.rs:41:17
[INFO] [stdout]    |
[INFO] [stdout] 41 |             0x01...0x03 => "MBC1",
[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/cart/mod.rs:42:17
[INFO] [stdout]    |
[INFO] [stdout] 42 |             0x05...0x06 => "MBC2",
[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/cart/mod.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |             0x0F...0x13 => "MBC3",
[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/cart/mbc1.rs:41:19
[INFO] [stdout]    |
[INFO] [stdout] 41 |             0xA000...0xBFFF => { self.ram[(idx-0xA000) + 0x2000 * self.ram_bank] },
[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/cart/mod.rs:44:17
[INFO] [stdout]    |
[INFO] [stdout] 44 |             0x19...0x1E => "MBC5",
[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/cart/mod.rs:59:21
[INFO] [stdout]    |
[INFO] [stdout] 59 |                 0x01...0x03 => Box::new(Mbc1::new(bytes)),
[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/cart/mod.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 0x0F...0x13 => Box::new(Mbc3::new(bytes)),
[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/cart/mbc1.rs:49:19
[INFO] [stdout]    |
[INFO] [stdout] 49 |             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: unused import: `cpu::registers::FlagType::*`
[INFO] [stdout]  --> src/cpu/cb.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cpu::registers::FlagType::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mbc1.rs:52:19
[INFO] [stdout]    |
[INFO] [stdout] 52 |             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/cart/mbc1.rs:58:19
[INFO] [stdout]    |
[INFO] [stdout] 58 |             0xA000...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/cart/mbc1.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |             0x4000...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/cart/mbc1.rs:70:19
[INFO] [stdout]    |
[INFO] [stdout] 70 |             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/cart/mbc3.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |             0x0000...0x3FFF => {self.bytes[idx]},
[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/cart/mbc3.rs:39:19
[INFO] [stdout]    |
[INFO] [stdout] 39 |             0x4000...0x7FFF => {self.bytes[(idx - 0x4000) + 0x4000 * self.rom_bank] }, // here!
[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/cart/mbc3.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 40 |             0xA000...0xBFFF => { self.ram[(idx-0xA000) + 0x2000 * self.ram_bank] },
[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/cart/mbc3.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |             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: unused import: `A`
[INFO] [stdout]  --> src/cpu/registers.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use self::ByteRegister::{A,C,IMM};
[INFO] [stdout]   |                          ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MEM_FF00_C` should have an upper camel case name
[INFO] [stdout]   --> src/cpu/registers.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     MEM_FF00_C,
[INFO] [stdout]    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `MemFf00C`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mbc3.rs:51:19
[INFO] [stdout]    |
[INFO] [stdout] 51 |             0x2000...0x3FFF => { //use 7 bits.
[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: variant `MEM_FF00_IMM` should have an upper camel case name
[INFO] [stdout]   --> src/cpu/registers.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     MEM_FF00_IMM,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `MemFf00Imm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mbc3.rs:61:19
[INFO] [stdout]    |
[INFO] [stdout] 61 |             0xA000...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: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/cpu/z80.rs:249:17
[INFO] [stdout]     |
[INFO] [stdout] 249 |     setf(ctx,Hf,((0x0F & av) - (0x0F & rv) - cv < 0));
[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] 249 -     setf(ctx,Hf,((0x0F & av) - (0x0F & rv) - cv < 0));
[INFO] [stdout] 249 +     setf(ctx,Hf,(0x0F & av) - (0x0F & rv) - cv < 0 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mbc3.rs:64:19
[INFO] [stdout]    |
[INFO] [stdout] 64 |             0x4000...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/cart/mbc3.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |             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: unused imports: `Gpu`, `Joypad`, `Lcd`, `Sound`, and `Timer`
[INFO] [stdout]  --> src/cpu/mmu.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | use io::{Lcd,Gpu,Timer,Joypad,Sound};
[INFO] [stdout]   |          ^^^ ^^^ ^^^^^ ^^^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cart/mod.rs:41:17
[INFO] [stdout]    |
[INFO] [stdout] 41 |             0x01...0x03 => "MBC1",
[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/cpu/mmu.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 |         0x0000...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/cart/mod.rs:42:17
[INFO] [stdout]    |
[INFO] [stdout] 42 |             0x05...0x06 => "MBC2",
[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/cpu/mmu.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |         0x8000...0x9FFF => ctx.gpu().read_byte(addr),
[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/cart/mod.rs:43:17
[INFO] [stdout]    |
[INFO] [stdout] 43 |             0x0F...0x13 => "MBC3",
[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/cart/mod.rs:44:17
[INFO] [stdout]    |
[INFO] [stdout] 44 |             0x19...0x1E => "MBC5",
[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/cpu/mmu.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 |         0xA000...0xBFFF => ctx.cart().read_byte(addr),
[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/cpu/mmu.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |         0xC000...0xCFFF => ctx.wb0()[idx-0xC000],
[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/cpu/mmu.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |         0xD000...0xDFFF => ctx.wb1()[idx-0xD000],
[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/cpu/mmu.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 |         0xE000...0xEFFF => ctx.wb0()[idx-0xE000],
[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/cpu/mmu.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 |         0xF000...0xFDFF => ctx.wb1()[idx-0xF000],
[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/cart/mod.rs:59:21
[INFO] [stdout]    |
[INFO] [stdout] 59 |                 0x01...0x03 => Box::new(Mbc1::new(bytes)),
[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/cart/mod.rs:61:21
[INFO] [stdout]    |
[INFO] [stdout] 61 |                 0x0F...0x13 => Box::new(Mbc3::new(bytes)),
[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: unused import: `cpu::registers::FlagType::*`
[INFO] [stdout]  --> src/cpu/cb.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use cpu::registers::FlagType::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `A`
[INFO] [stdout]  --> src/cpu/registers.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use self::ByteRegister::{A,C,IMM};
[INFO] [stdout]   |                          ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MEM_FF00_C` should have an upper camel case name
[INFO] [stdout]   --> src/cpu/registers.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     MEM_FF00_C,
[INFO] [stdout]    |     ^^^^^^^^^^ help: convert the identifier to upper camel case: `MemFf00C`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MEM_FF00_IMM` should have an upper camel case name
[INFO] [stdout]   --> src/cpu/registers.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 |     MEM_FF00_IMM,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: convert the identifier to upper camel case: `MemFf00Imm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cpu/mmu.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 |         0xFE00...0xFE9F => ctx.gpu().read_byte(addr),
[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/cpu/mmu.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 |         0xFF01...0xFF02 => ctx.serial().read_byte(addr),
[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/cpu/mmu.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 |         0xFF04...0xFF07 => ctx.timer().read_byte(addr),
[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/cpu/mmu.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |         0xFF10...0xFF3F => ctx.sound().read_byte(addr),
[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/cpu/mmu.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |         0xFEA0...0xFEFF => {panic!("Unusable memory")},
[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/cpu/mmu.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |         0xFF40...0xFF4B => ctx.gpu().read_byte(addr),
[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/cpu/mmu.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 |         0xFF80...0xFFFE => ctx.hram()[idx-0xFF80],
[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/cpu/mmu.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 |         0x0000...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/cpu/mmu.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         0x8000...0x9FFF => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |         0xA000...0xBFFF => ctx.cart().write_byte(addr,val),
[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/cpu/mmu.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |         0xC000...0xCFFF => ctx.wb0()[idx-0xC000] = val,
[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/cpu/mmu.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |         0xD000...0xDFFF => ctx.wb1()[idx-0xD000] = val,
[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/cpu/mmu.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |         0xE000...0xEFFF => ctx.wb0()[idx-0xE000] = val,
[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/cpu/mmu.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |         0xF000...0xFDFF => ctx.wb1()[idx-0xF000] = val,
[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/cpu/mmu.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |         0xFE00...0xFE9F => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 |         0xFEA0...0xFEFF => {}, //unusable
[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/cpu/mmu.rs:61:15
[INFO] [stdout]    |
[INFO] [stdout] 61 |         0xFF01...0xFF02 => ctx.serial().write_byte(addr,val),
[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/cpu/mmu.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |         0xFF04...0xFF07 => ctx.timer().write_byte(addr,val),
[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/cpu/mmu.rs:64:15
[INFO] [stdout]    |
[INFO] [stdout] 64 |         0xFF10...0xFF3F => ctx.sound().write_byte(addr,val),
[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/cpu/mmu.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         0xFF40...0xFF4B => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |         0xFF4C...0xFF7F => {}, //empty io
[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/cpu/mmu.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |         0xFF80...0xFFFE => ctx.hram()[idx-0xFF80] = val,
[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 `if` condition
[INFO] [stdout]   --> src/io/joypad.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 if (self.selection & 0x10 > 0) { //direction keys
[INFO] [stdout]    |                    ^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 75 -                 if (self.selection & 0x10 > 0) { //direction keys
[INFO] [stdout] 75 +                 if self.selection & 0x10 > 0 { //direction keys
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/io/joypad.rs:77:27
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 } else if ( self.selection & 0x20 > 0) { //button keys.
[INFO] [stdout]    |                           ^^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 77 -                 } else if ( self.selection & 0x20 > 0) { //button keys.
[INFO] [stdout] 77 +                 } else if self.selection & 0x20 > 0 { //button keys.
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/io/gpu.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |             0x8000...0x9FFF => self.vram[idx-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/io/gpu.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xFE00...0xFE9F => self.oam[idx-0xFE00],
[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/io/gpu.rs:99:19
[INFO] [stdout]    |
[INFO] [stdout] 99 |             0x8000...0x9FFF => self.vram[idx-0x8000] = val,
[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/io/gpu.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |             0xFE00...0xFE9F => self.oam[idx-0xFE00] = val,
[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: unused imports: `BLACK`, `DARK_GRAY`, and `LIGHT_GRAY`
[INFO] [stdout]  --> src/io/lcd.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use constants::{WHITE,LIGHT_GRAY,DARK_GRAY,BLACK,COLORS};
[INFO] [stdout]   |                       ^^^^^^^^^^ ^^^^^^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/cpu/z80.rs:249:17
[INFO] [stdout]     |
[INFO] [stdout] 249 |     setf(ctx,Hf,((0x0F & av) - (0x0F & rv) - cv < 0));
[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] 249 -     setf(ctx,Hf,((0x0F & av) - (0x0F & rv) - cv < 0));
[INFO] [stdout] 249 +     setf(ctx,Hf,(0x0F & av) - (0x0F & rv) - cv < 0 );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Gpu`, `Joypad`, `Lcd`, `Sound`, and `Timer`
[INFO] [stdout]  --> src/cpu/mmu.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | use io::{Lcd,Gpu,Timer,Joypad,Sound};
[INFO] [stdout]   |          ^^^ ^^^ ^^^^^ ^^^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]  --> src/cpu/mmu.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 |         0x0000...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/cpu/mmu.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 |         0x8000...0x9FFF => ctx.gpu().read_byte(addr),
[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/cpu/mmu.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 16 |         0xA000...0xBFFF => ctx.cart().read_byte(addr),
[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/cpu/mmu.rs:17:15
[INFO] [stdout]    |
[INFO] [stdout] 17 |         0xC000...0xCFFF => ctx.wb0()[idx-0xC000],
[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/cpu/mmu.rs:18:15
[INFO] [stdout]    |
[INFO] [stdout] 18 |         0xD000...0xDFFF => ctx.wb1()[idx-0xD000],
[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/cpu/mmu.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 |         0xE000...0xEFFF => ctx.wb0()[idx-0xE000],
[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/cpu/mmu.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 |         0xF000...0xFDFF => ctx.wb1()[idx-0xF000],
[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/cpu/mmu.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 |         0xFE00...0xFE9F => ctx.gpu().read_byte(addr),
[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/cpu/mmu.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 |         0xFF01...0xFF02 => ctx.serial().read_byte(addr),
[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/cpu/mmu.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 |         0xFF04...0xFF07 => ctx.timer().read_byte(addr),
[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/cpu/mmu.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |         0xFF10...0xFF3F => ctx.sound().read_byte(addr),
[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/cpu/mmu.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |         0xFEA0...0xFEFF => {panic!("Unusable memory")},
[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/cpu/mmu.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 |         0xFF40...0xFF4B => ctx.gpu().read_byte(addr),
[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/cpu/mmu.rs:30:15
[INFO] [stdout]    |
[INFO] [stdout] 30 |         0xFF80...0xFFFE => ctx.hram()[idx-0xFF80],
[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 block return value
[INFO] [stdout]    --> src/io/lcd.rs:167:29
[INFO] [stdout]     |
[INFO] [stdout] 167 | ...                   ((tile << 4) + tile_pattern_data)
[INFO] [stdout]     |                       ^                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 167 -                             ((tile << 4) + tile_pattern_data)
[INFO] [stdout] 167 +                             (tile << 4) + tile_pattern_data 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/io/lcd.rs:170:43
[INFO] [stdout]     |
[INFO] [stdout] 170 |                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout]     |                                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout] 170 +                         pixel_mem_addr += tile_pixel_y << 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/io/lcd.rs:208:43
[INFO] [stdout]     |
[INFO] [stdout] 208 |                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout]     |                                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 208 -                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout] 208 +                         pixel_mem_addr += tile_pixel_y << 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `getb`
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 | use cpu::registers::{getb,getw};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cpu/mmu.rs:45:15
[INFO] [stdout]    |
[INFO] [stdout] 45 |         0x0000...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/cpu/mmu.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 |         0x8000...0x9FFF => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |         0xA000...0xBFFF => ctx.cart().write_byte(addr,val),
[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/cpu/mmu.rs:54:15
[INFO] [stdout]    |
[INFO] [stdout] 54 |         0xC000...0xCFFF => ctx.wb0()[idx-0xC000] = val,
[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/cpu/mmu.rs:55:15
[INFO] [stdout]    |
[INFO] [stdout] 55 |         0xD000...0xDFFF => ctx.wb1()[idx-0xD000] = val,
[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/cpu/mmu.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |         0xE000...0xEFFF => ctx.wb0()[idx-0xE000] = val,
[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/cpu/mmu.rs:57:15
[INFO] [stdout]    |
[INFO] [stdout] 57 |         0xF000...0xFDFF => ctx.wb1()[idx-0xF000] = val,
[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/cpu/mmu.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |         0xFE00...0xFE9F => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:59:15
[INFO] [stdout]    |
[INFO] [stdout] 59 |         0xFEA0...0xFEFF => {}, //unusable
[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/cpu/mmu.rs:61:15
[INFO] [stdout]    |
[INFO] [stdout] 61 |         0xFF01...0xFF02 => ctx.serial().write_byte(addr,val),
[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/cpu/mmu.rs:62:15
[INFO] [stdout]    |
[INFO] [stdout] 62 |         0xFF04...0xFF07 => ctx.timer().write_byte(addr,val),
[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/cpu/mmu.rs:64:15
[INFO] [stdout]    |
[INFO] [stdout] 64 |         0xFF10...0xFF3F => ctx.sound().write_byte(addr,val),
[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/cpu/mmu.rs:71:15
[INFO] [stdout]    |
[INFO] [stdout] 71 |         0xFF40...0xFF4B => ctx.gpu().write_byte(addr,val),
[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/cpu/mmu.rs:73:15
[INFO] [stdout]    |
[INFO] [stdout] 73 |         0xFF4C...0xFF7F => {}, //empty io
[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/cpu/mmu.rs:74:15
[INFO] [stdout]    |
[INFO] [stdout] 74 |         0xFF80...0xFFFE => ctx.hram()[idx-0xFF80] = val,
[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 `if` condition
[INFO] [stdout]   --> src/io/joypad.rs:75:20
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 if (self.selection & 0x10 > 0) { //direction keys
[INFO] [stdout]    |                    ^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 75 -                 if (self.selection & 0x10 > 0) { //direction keys
[INFO] [stdout] 75 +                 if self.selection & 0x10 > 0 { //direction keys
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/io/joypad.rs:77:27
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 } else if ( self.selection & 0x20 > 0) { //button keys.
[INFO] [stdout]    |                           ^^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 77 -                 } else if ( self.selection & 0x20 > 0) { //button keys.
[INFO] [stdout] 77 +                 } else if self.selection & 0x20 > 0 { //button keys.
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/io/gpu.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |             0x8000...0x9FFF => self.vram[idx-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/io/gpu.rs:74:19
[INFO] [stdout]    |
[INFO] [stdout] 74 |             0xFE00...0xFE9F => self.oam[idx-0xFE00],
[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/io/gpu.rs:99:19
[INFO] [stdout]    |
[INFO] [stdout] 99 |             0x8000...0x9FFF => self.vram[idx-0x8000] = val,
[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/io/gpu.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |             0xFE00...0xFE9F => self.oam[idx-0xFE00] = val,
[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: unused imports: `BLACK`, `DARK_GRAY`, and `LIGHT_GRAY`
[INFO] [stdout]  --> src/io/lcd.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use constants::{WHITE,LIGHT_GRAY,DARK_GRAY,BLACK,COLORS};
[INFO] [stdout]   |                       ^^^^^^^^^^ ^^^^^^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/io/lcd.rs:167:29
[INFO] [stdout]     |
[INFO] [stdout] 167 | ...                   ((tile << 4) + tile_pattern_data)
[INFO] [stdout]     |                       ^                               ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 167 -                             ((tile << 4) + tile_pattern_data)
[INFO] [stdout] 167 +                             (tile << 4) + tile_pattern_data 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/io/lcd.rs:170:43
[INFO] [stdout]     |
[INFO] [stdout] 170 |                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout]     |                                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout] 170 +                         pixel_mem_addr += tile_pixel_y << 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/io/lcd.rs:208:43
[INFO] [stdout]     |
[INFO] [stdout] 208 |                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout]     |                                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 208 -                         pixel_mem_addr += (tile_pixel_y << 1);
[INFO] [stdout] 208 +                         pixel_mem_addr += tile_pixel_y << 1 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `getb`
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 | use cpu::registers::{getb,getw};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cart/mod.rs:28:14
[INFO] [stdout]    |
[INFO] [stdout] 28 |     mbc: Box<ByteIO>,
[INFO] [stdout]    |              ^^^^^^
[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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |     mbc: Box<dyn ByteIO>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/cart/mod.rs:28:14
[INFO] [stdout]    |
[INFO] [stdout] 28 |     mbc: Box<ByteIO>,
[INFO] [stdout]    |              ^^^^^^
[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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |     mbc: Box<dyn ByteIO>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/cpu/cb.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const CBOPS:[(usize,&'static Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const CBOPS:[(usize,&'static dyn Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/cpu/instructions.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const OPS:[(usize,&'static Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const OPS:[(usize,&'static dyn Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/cpu/cb.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const CBOPS:[(usize,&'static Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const CBOPS:[(usize,&'static dyn Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/cpu/instructions.rs:8:32
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const OPS:[(usize,&'static Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                ^^^^^^^^^^^^^^^^^^^^^^^^^
[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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const OPS:[(usize,&'static dyn Fn(&mut Context) -> usize); 256] = [
[INFO] [stdout]   |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/cart/rom_only.rs:23:30
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/cart/rom_only.rs:23:40
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/cpu/instructions.rs:239:11
[INFO] [stdout]     |
[INFO] [stdout] 239 |     (1, &|ctx| {panic!("CB Prefix!")}), // XB
[INFO] [stdout]     |           ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cpu/z80.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut pc = getw(ctx,PC);
[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: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn fail(ctx: &mut Context) -> usize {
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:76:16
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn invalid(ctx: &mut Context) -> usize {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn stop(ctx: &mut Context) -> usize {
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn nop(ctx: &mut Context) -> usize {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `newflags` is assigned to, but never used
[INFO] [stdout]    --> src/cpu/z80.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let mut newflags = !(0x80 | 0x20);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_newflags` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `newflags` is never read
[INFO] [stdout]    --> src/cpu/z80.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |         newflags |= 0x10;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/cart/rom_only.rs:23:30
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/cart/rom_only.rs:23:40
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/cpu/instructions.rs:239:11
[INFO] [stdout]     |
[INFO] [stdout] 239 |     (1, &|ctx| {panic!("CB Prefix!")}), // XB
[INFO] [stdout]     |           ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_cycles`
[INFO] [stdout]   --> src/io/joypad.rs:31:57
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn step(ctx:&mut Context, pump: &mut EventPump, num_cycles: usize) {
[INFO] [stdout]    |                                                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cycles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cpu/z80.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 |     let mut pc = getw(ctx,PC);
[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: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn fail(ctx: &mut Context) -> usize {
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/io/gpu.rs:121:30
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let (mut req_vblank, mut req_lcdstat) = (false,false);
[INFO] [stdout]     |                              ----^^^^^^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:76:16
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn invalid(ctx: &mut Context) -> usize {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:80:13
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn stop(ctx: &mut Context) -> usize {
[INFO] [stdout]    |             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/cpu/z80.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub fn nop(ctx: &mut Context) -> usize {
[INFO] [stdout]    |            ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `newflags` is assigned to, but never used
[INFO] [stdout]    --> src/cpu/z80.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let mut newflags = !(0x80 | 0x20);
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_newflags` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `newflags` is never read
[INFO] [stdout]    --> src/cpu/z80.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout] 104 |         newflags |= 0x10;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/lcd.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn read_byte(&self, addr:u16) -> u8 {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/io/lcd.rs:58:40
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/io/lcd.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         for t in 0..0x180 { //more than 255 of them.
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/io/lcd.rs:120:18
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn flush(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/io/lcd.rs:161:29
[INFO] [stdout]     |
[INFO] [stdout] 161 |                         let mut tile = ctx.gpu().read_byte(tile_mem_addr as u16) 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/io/lcd.rs:203:29
[INFO] [stdout]     |
[INFO] [stdout] 203 |                         let mut tile = ctx.gpu().read_byte(tile_mem_addr as u16) as usize;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]    --> src/io/lcd.rs:127:48
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn render_to_texture(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]     |                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/sound.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn read_byte(&self, addr:u16) -> u8 {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/sound.rs:18:30
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/io/sound.rs:18:40
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/io/sound.rs:25:17
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cycles`
[INFO] [stdout]   --> src/io/sound.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_cycles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_cycles`
[INFO] [stdout]   --> src/io/joypad.rs:31:57
[INFO] [stdout]    |
[INFO] [stdout] 31 |     pub fn step(ctx:&mut Context, pump: &mut EventPump, num_cycles: usize) {
[INFO] [stdout]    |                                                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_cycles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CYCLES_PER_SECOND` is never used
[INFO] [stdout]  --> src/constants.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CYCLES_PER_SECOND: usize = 4194304 >> 0;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> src/cpu/z80.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn fail(ctx: &mut Context) -> usize {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_scanline` is never used
[INFO] [stdout]   --> src/io/gpu.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Gpu {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn get_scanline(&self) -> u8 { self.scanline }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tiles`, `background_palette`, and `foreground_palette` are never read
[INFO] [stdout]   --> src/io/lcd.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Lcd {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout]  9 |     tiles: Vec<Vec<Vec<usize>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     background_palette: [usize;4],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     foreground_palette: [[usize;4];2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `step` is never used
[INFO] [stdout]   --> src/io/lcd.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Lcd {
[INFO] [stdout]    | -------- associated function in this implementation
[INFO] [stdout] 67 |
[INFO] [stdout] 68 |     pub fn step(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `step` is never used
[INFO] [stdout]   --> src/io/sound.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Sound {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/io/gpu.rs:121:30
[INFO] [stdout]     |
[INFO] [stdout] 121 |         let (mut req_vblank, mut req_lcdstat) = (false,false);
[INFO] [stdout]     |                              ----^^^^^^^^^^^
[INFO] [stdout]     |                              |
[INFO] [stdout]     |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/lcd.rs:55:25
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn read_byte(&self, addr:u16) -> u8 {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/io/lcd.rs:58:40
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t`
[INFO] [stdout]   --> src/io/lcd.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         for t in 0..0x180 { //more than 255 of them.
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]    --> src/io/lcd.rs:120:18
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn flush(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]     |                  ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/constants.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     file.read_to_end(&mut result);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let _ = file.read_to_end(&mut result);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/z80.rs:72:45
[INFO] [stdout]    |
[INFO] [stdout] 72 |         panic!("Supposed to fail! 0x{:02X}",CURR_OP);
[INFO] [stdout]    |                                             ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/io/lcd.rs:161:29
[INFO] [stdout]     |
[INFO] [stdout] 161 |                         let mut tile = ctx.gpu().read_byte(tile_mem_addr as u16) 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/io/lcd.rs:203:29
[INFO] [stdout]     |
[INFO] [stdout] 203 |                         let mut tile = ctx.gpu().read_byte(tile_mem_addr as u16) as usize;
[INFO] [stdout]     |                             ----^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `renderer`
[INFO] [stdout]    --> src/io/lcd.rs:127:48
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn render_to_texture(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]     |                                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_renderer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/sound.rs:15:25
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn read_byte(&self, addr:u16) -> u8 {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/io/sound.rs:18:30
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> src/io/sound.rs:18:40
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn write_byte(&mut self, addr:u16, val:u8) {
[INFO] [stdout]    |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/io/lcd.rs:257:45
[INFO] [stdout]     |
[INFO] [stdout] 257 | ...                   assert!(col >= 0);
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> src/io/sound.rs:25:17
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cycles`
[INFO] [stdout]   --> src/io/sound.rs:25:35
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_cycles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CYCLES_PER_SECOND` is never used
[INFO] [stdout]  --> src/constants.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CYCLES_PER_SECOND: usize = 4194304 >> 0;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fail` is never used
[INFO] [stdout]   --> src/cpu/z80.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn fail(ctx: &mut Context) -> usize {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_scanline` is never used
[INFO] [stdout]   --> src/io/gpu.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Gpu {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn get_scanline(&self) -> u8 { self.scanline }
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `tiles`, `background_palette`, and `foreground_palette` are never read
[INFO] [stdout]   --> src/io/lcd.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Lcd {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout]  9 |     tiles: Vec<Vec<Vec<usize>>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     background_palette: [usize;4],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     foreground_palette: [[usize;4];2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `step` is never used
[INFO] [stdout]   --> src/io/lcd.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Lcd {
[INFO] [stdout]    | -------- associated function in this implementation
[INFO] [stdout] 67 |
[INFO] [stdout] 68 |     pub fn step(ctx:&mut Context, renderer:&mut Renderer, texture:&mut Texture) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `step` is never used
[INFO] [stdout]   --> src/io/sound.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Sound {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 25 |     pub fn step(ctx:&mut Context, cycles: usize) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/constants.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 |     file.read_to_end(&mut result);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let _ = file.read_to_end(&mut result);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/cpu/z80.rs:72:45
[INFO] [stdout]    |
[INFO] [stdout] 72 |         panic!("Supposed to fail! 0x{:02X}",CURR_OP);
[INFO] [stdout]    |                                             ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/io/lcd.rs:257:45
[INFO] [stdout]     |
[INFO] [stdout] 257 | ...                   assert!(col >= 0);
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.74s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "26b1891e11b117ef89ebcde32db6ef823a78228ce69caf82e96cc2de64eb989c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "26b1891e11b117ef89ebcde32db6ef823a78228ce69caf82e96cc2de64eb989c", kill_on_drop: false }`
[INFO] [stdout] 26b1891e11b117ef89ebcde32db6ef823a78228ce69caf82e96cc2de64eb989c
