[INFO] cloning repository https://github.com/fdb/emunes [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fdb/emunes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffdb%2Femunes", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffdb%2Femunes'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 103512664ebd291df6830f10cee2681002ae98a0 [INFO] checking fdb/emunes against master#385fa9d845dd326c6bbfd58c22244215e431948a for absurd-question-mark-desugar [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffdb%2Femunes" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/fdb/emunes on toolchain 385fa9d845dd326c6bbfd58c22244215e431948a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+385fa9d845dd326c6bbfd58c22244215e431948a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/fdb/emunes [INFO] finished tweaking git repo https://github.com/fdb/emunes [INFO] tweaked toml for git repo https://github.com/fdb/emunes written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/fdb/emunes 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" "+385fa9d845dd326c6bbfd58c22244215e431948a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded num-traits v0.1.42 [INFO] [stderr] Downloaded rand v0.3.20 [INFO] [stderr] Downloaded num v0.1.41 [INFO] [stderr] Downloaded sdl2 v0.31.0 [INFO] [stderr] Downloaded sdl2-sys v0.31.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+385fa9d845dd326c6bbfd58c22244215e431948a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 53cbc1d4f5f847f7a695f24164b42b4da787f46be884fbc3a040ce84924c3f14 [INFO] running `Command { std: "docker" "start" "-a" "53cbc1d4f5f847f7a695f24164b42b4da787f46be884fbc3a040ce84924c3f14", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "53cbc1d4f5f847f7a695f24164b42b4da787f46be884fbc3a040ce84924c3f14", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "53cbc1d4f5f847f7a695f24164b42b4da787f46be884fbc3a040ce84924c3f14", kill_on_drop: false }` [INFO] [stdout] 53cbc1d4f5f847f7a695f24164b42b4da787f46be884fbc3a040ce84924c3f14 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+385fa9d845dd326c6bbfd58c22244215e431948a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4abe90b41c56e7fc4adf4f2fbc54885f7dded94ed6788d5925d9a50ffecfbc1a [INFO] running `Command { std: "docker" "start" "-a" "4abe90b41c56e7fc4adf4f2fbc54885f7dded94ed6788d5925d9a50ffecfbc1a", kill_on_drop: false }` [INFO] [stderr] Compiling cfg-if v0.1.2 [INFO] [stderr] Checking num-traits v0.1.42 [INFO] [stderr] Checking libc v0.2.36 [INFO] [stderr] Checking lazy_static v0.2.11 [INFO] [stderr] Checking bitflags v0.7.0 [INFO] [stderr] Checking bitflags v1.0.1 [INFO] [stderr] Compiling sdl2-sys v0.31.0 [INFO] [stderr] Checking rand v0.3.20 [INFO] [stderr] Checking num-integer v0.1.35 [INFO] [stderr] Checking num-iter v0.1.34 [INFO] [stderr] Checking num v0.1.41 [INFO] [stderr] Checking sdl2 v0.31.0 [INFO] [stderr] Checking emunes v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `sdl2::render::TextureQuery` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::render::TextureQuery; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:203:47 [INFO] [stdout] | [INFO] [stdout] 203 | let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 203 - let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] 203 + let address = bus.read_16_bug(bus.read(self.pc + 1) as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:218:17 [INFO] [stdout] | [INFO] [stdout] 218 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 218 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] 218 + (bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 221 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] 221 + (bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | 0x0000...0x1FFF => self.ram[(address % 0x2000) as usize], [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | 0x2000...0x3FFF => 0xCC, // TODO: self.ppu.read_register(0x2000 + address % 8) [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:35:19 [INFO] [stdout] | [INFO] [stdout] 35 | 0x4000...0x4013 => 0xFF, // TODO: read from APU registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:40:19 [INFO] [stdout] | [INFO] [stdout] 40 | 0x4018...0x5FFF => 0xFF, // TODO: I/O registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:41:19 [INFO] [stdout] | [INFO] [stdout] 41 | 0x6000...0xFFFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::render::TextureQuery` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::render::TextureQuery; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:59:19 [INFO] [stdout] | [INFO] [stdout] 59 | 0x0000...0x1FFF => self.ram[(address % 2048) as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | 0x4000...0x4013 | 0x4015 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | 0x6000...0x7FFF => 0xCC, // TODO: self.cartridge.sram[address - 0x6000] [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:71:19 [INFO] [stdout] | [INFO] [stdout] 71 | 0x8000...0xBFFF => self.cartridge.prg[(address - 0x8000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | 0xC000...0xFFFF => self.cartridge.prg[(address - 0xC000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | 0x0000...0x1FFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:203:47 [INFO] [stdout] | [INFO] [stdout] 203 | let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 203 - let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] 203 + let address = bus.read_16_bug(bus.read(self.pc + 1) as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:218:17 [INFO] [stdout] | [INFO] [stdout] 218 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 218 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] 218 + (bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 221 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] 221 + (bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | 0x0000...0x1FFF => self.ram[(address % 0x2000) as usize], [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | 0x2000...0x3FFF => 0xCC, // TODO: self.ppu.read_register(0x2000 + address % 8) [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:35:19 [INFO] [stdout] | [INFO] [stdout] 35 | 0x4000...0x4013 => 0xFF, // TODO: read from APU registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:40:19 [INFO] [stdout] | [INFO] [stdout] 40 | 0x4018...0x5FFF => 0xFF, // TODO: I/O registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:81:19 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:41:19 [INFO] [stdout] | [INFO] [stdout] 41 | 0x6000...0xFFFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:59:19 [INFO] [stdout] | [INFO] [stdout] 59 | 0x0000...0x1FFF => self.ram[(address % 2048) as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | 0x4000...0x4013 | 0x4015 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | 0x6000...0x7FFF => 0xCC, // TODO: self.cartridge.sram[address - 0x6000] [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:71:19 [INFO] [stdout] | [INFO] [stdout] 71 | 0x8000...0xBFFF => self.cartridge.prg[(address - 0x8000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | 0x2001...0xC000 => self.cartridge.prg[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | 0x0000...0x2000 => self.cartridge.chr[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | 0x2001...0xC000 => self.cartridge.prg[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | 0xC000...0xFFFF => self.cartridge.prg[(address - 0xC000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | 0x0000...0x1FFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:81:19 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | 0x2001...0xC000 => self.cartridge.prg[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | 0x0000...0x2000 => self.cartridge.chr[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | 0x2001...0xC000 => self.cartridge.prg[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `bitflags::core::str::::trim_right`: superseded by `trim_end` [INFO] [stdout] --> src/main.rs:523:37 [INFO] [stdout] | [INFO] [stdout] 523 | let expected = expected.trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 523 | let expected = expected.trim_end().to_owned(); [INFO] [stdout] | ~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/cpu.rs:812:21 [INFO] [stdout] | [INFO] [stdout] 812 | let mut c: u8 = if self.flags.intersects(Flags::CARRY) { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `render_line` [INFO] [stdout] --> src/ppu.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let render_line = pre_line || visible_line; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_render_line` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/ppu.rs:118:28 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/bus.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => panic!("Invalid bus memory read at address {:04X}", address), [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple patterns overlap on their endpoints [INFO] [stdout] --> src/bus.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [INFO] [stdout] | --------------- this range overlaps on `16128_u16`... [INFO] [stdout] ... [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [INFO] [stdout] | ^^^^^^^^^^^^^^^ ... with this range [INFO] [stdout] | [INFO] [stdout] = note: you likely meant to write mutually exclusive ranges [INFO] [stdout] = note: `#[warn(overlapping_range_endpoints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/bus.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | let mode = self.cartridge.mirror_mode; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/apu.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/cpu.rs:812:21 [INFO] [stdout] | [INFO] [stdout] 812 | let mut c: u8 = if self.flags.intersects(Flags::CARRY) { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/main.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `render_line` [INFO] [stdout] --> src/ppu.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let render_line = pre_line || visible_line; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_render_line` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/ppu.rs:118:28 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/bus.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => panic!("Invalid bus memory read at address {:04X}", address), [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple patterns overlap on their endpoints [INFO] [stdout] --> src/bus.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [INFO] [stdout] | --------------- this range overlaps on `16128_u16`... [INFO] [stdout] ... [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [INFO] [stdout] | ^^^^^^^^^^^^^^^ ... with this range [INFO] [stdout] | [INFO] [stdout] = note: you likely meant to write mutually exclusive ranges [INFO] [stdout] = note: `#[warn(overlapping_range_endpoints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/bus.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | let mode = self.cartridge.mirror_mode; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/main.rs:245:21 [INFO] [stdout] | [INFO] [stdout] 245 | let b1 = (plane1 >> ((7 - ((x % 8) as u8)) as usize)) & 1; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/apu.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/main.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/main.rs:245:21 [INFO] [stdout] | [INFO] [stdout] 245 | let b1 = (plane1 >> ((7 - ((x % 8) as u8)) as usize)) & 1; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let mut current_cps = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `log_string` is never used [INFO] [stdout] --> src/console.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Console { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn log_string(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `log_string` and `log` are never used [INFO] [stdout] --> src/cpu.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 119 | impl CPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn log_string(&mut self, bus: &Bus) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn log(&mut self, bus: &Bus) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PALETTE` is never used [INFO] [stdout] --> src/ppu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const PALETTE: [u32; 64] = [ [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/ppu.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PPU { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub sprite_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | pub sprite_patterns: [u32; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | pub sprite_positions: [u8; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub grayscale_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub show_left_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub show_left_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | pub show_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | pub show_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | pub red_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 35 | pub green_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pub blue_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 37 | [INFO] [stdout] 38 | pub tile_data: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 39 | pub palette_data: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `fetch_tile_data`, `background_pixel`, `sprite_pixel`, `read_palette`, and `render_pixel` are never used [INFO] [stdout] --> src/ppu.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl PPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn fetch_tile_data(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn background_pixel(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn sprite_pixel(&mut self) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn read_palette(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn render_pixel(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ppu_name_table`, `ppu_palette`, and `ppu_oam` are never read [INFO] [stdout] --> src/bus.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Bus { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub ppu_name_table: [u8; 2048], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 11 | pub ppu_palette: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 12 | pub ppu_oam: [u8; 256], [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `ppu_read` is never used [INFO] [stdout] --> src/bus.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Bus { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn ppu_read(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_BUFFER_SIZE` is never used [INFO] [stdout] --> src/apu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const AUDIO_BUFFER_SIZE: u32 = 50 * 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LENGTH_TABLE` is never used [INFO] [stdout] --> src/apu.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const LENGTH_TABLE: [u8; 32] = [ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DUTY_TABLE` is never used [INFO] [stdout] --> src/apu.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DUTY_TABLE: [[u8; 8]; 4] = [ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sample_rate` is never read [INFO] [stdout] --> src/apu.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct APU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub sample_rate: u32 [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `square_wave` is never used [INFO] [stdout] --> src/apu.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl APU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn square_wave(&mut self, bus: &mut Bus, tone_hz: u32) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pulse` is never constructed [INFO] [stdout] --> src/apu.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Pulse { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/apu.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 85 | impl Pulse { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 86 | pub fn write_control(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn write_sweep(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn write_timer_low(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn write_timer_high(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn step_timer(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn step_envelope(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn step_sweep(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn step_length(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sweep(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn output(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 50 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let mut current_cps = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `log` is never used [INFO] [stdout] --> src/cpu.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 119 | impl CPU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn log(&mut self, bus: &Bus) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PALETTE` is never used [INFO] [stdout] --> src/ppu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const PALETTE: [u32; 64] = [ [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/ppu.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PPU { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub sprite_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | pub sprite_patterns: [u32; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | pub sprite_positions: [u8; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub grayscale_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub show_left_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub show_left_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | pub show_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | pub show_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | pub red_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 35 | pub green_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pub blue_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 37 | [INFO] [stdout] 38 | pub tile_data: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 39 | pub palette_data: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `fetch_tile_data`, `background_pixel`, `sprite_pixel`, `read_palette`, and `render_pixel` are never used [INFO] [stdout] --> src/ppu.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl PPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn fetch_tile_data(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn background_pixel(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn sprite_pixel(&mut self) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn read_palette(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn render_pixel(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ppu_name_table`, `ppu_palette`, and `ppu_oam` are never read [INFO] [stdout] --> src/bus.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Bus { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub ppu_name_table: [u8; 2048], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 11 | pub ppu_palette: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 12 | pub ppu_oam: [u8; 256], [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `ppu_read` is never used [INFO] [stdout] --> src/bus.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Bus { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn ppu_read(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_BUFFER_SIZE` is never used [INFO] [stdout] --> src/apu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const AUDIO_BUFFER_SIZE: u32 = 50 * 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LENGTH_TABLE` is never used [INFO] [stdout] --> src/apu.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const LENGTH_TABLE: [u8; 32] = [ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DUTY_TABLE` is never used [INFO] [stdout] --> src/apu.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DUTY_TABLE: [[u8; 8]; 4] = [ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sample_rate` is never read [INFO] [stdout] --> src/apu.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct APU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub sample_rate: u32 [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `square_wave` is never used [INFO] [stdout] --> src/apu.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl APU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn square_wave(&mut self, bus: &mut Bus, tone_hz: u32) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pulse` is never constructed [INFO] [stdout] --> src/apu.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Pulse { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/apu.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 85 | impl Pulse { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 86 | pub fn write_control(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn write_sweep(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn write_timer_low(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn write_timer_high(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn step_timer(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn step_envelope(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn step_sweep(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn step_length(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sweep(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn output(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 50 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.81s [INFO] running `Command { std: "docker" "inspect" "4abe90b41c56e7fc4adf4f2fbc54885f7dded94ed6788d5925d9a50ffecfbc1a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4abe90b41c56e7fc4adf4f2fbc54885f7dded94ed6788d5925d9a50ffecfbc1a", kill_on_drop: false }` [INFO] [stdout] 4abe90b41c56e7fc4adf4f2fbc54885f7dded94ed6788d5925d9a50ffecfbc1a [INFO] checking fdb/emunes against try#645bb72776a6a56a1a8f52631a44bd082b2ba509 for absurd-question-mark-desugar [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffdb%2Femunes" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/fdb/emunes on toolchain 645bb72776a6a56a1a8f52631a44bd082b2ba509 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+645bb72776a6a56a1a8f52631a44bd082b2ba509" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/fdb/emunes [INFO] finished tweaking git repo https://github.com/fdb/emunes [INFO] tweaked toml for git repo https://github.com/fdb/emunes written to /workspace/builds/worker-1-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/fdb/emunes 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" "+645bb72776a6a56a1a8f52631a44bd082b2ba509" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+645bb72776a6a56a1a8f52631a44bd082b2ba509" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 5db45df68a9e9de054379840c26269c29baccf8c1b23c64d921d3e09d76a9620 [INFO] running `Command { std: "docker" "start" "-a" "5db45df68a9e9de054379840c26269c29baccf8c1b23c64d921d3e09d76a9620", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5db45df68a9e9de054379840c26269c29baccf8c1b23c64d921d3e09d76a9620", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5db45df68a9e9de054379840c26269c29baccf8c1b23c64d921d3e09d76a9620", kill_on_drop: false }` [INFO] [stdout] 5db45df68a9e9de054379840c26269c29baccf8c1b23c64d921d3e09d76a9620 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+645bb72776a6a56a1a8f52631a44bd082b2ba509" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] afa1ae5962d9932870ee55011f86872f5072246db5a9e28b549cbbbf15b02c59 [INFO] running `Command { std: "docker" "start" "-a" "afa1ae5962d9932870ee55011f86872f5072246db5a9e28b549cbbbf15b02c59", kill_on_drop: false }` [INFO] [stderr] Compiling cfg-if v0.1.2 [INFO] [stderr] Checking num-traits v0.1.42 [INFO] [stderr] Checking libc v0.2.36 [INFO] [stderr] Checking lazy_static v0.2.11 [INFO] [stderr] Checking bitflags v0.7.0 [INFO] [stderr] Checking bitflags v1.0.1 [INFO] [stderr] Compiling sdl2-sys v0.31.0 [INFO] [stderr] Checking rand v0.3.20 [INFO] [stderr] Checking num-integer v0.1.35 [INFO] [stderr] Checking num-iter v0.1.34 [INFO] [stderr] Checking num v0.1.41 [INFO] [stderr] Checking sdl2 v0.31.0 [INFO] [stderr] Checking emunes v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `sdl2::render::TextureQuery` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::render::TextureQuery; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:203:47 [INFO] [stdout] | [INFO] [stdout] 203 | let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 203 - let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] 203 + let address = bus.read_16_bug(bus.read(self.pc + 1) as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:218:17 [INFO] [stdout] | [INFO] [stdout] 218 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 218 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] 218 + (bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 221 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] 221 + (bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | 0x0000...0x1FFF => self.ram[(address % 0x2000) as usize], [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | 0x2000...0x3FFF => 0xCC, // TODO: self.ppu.read_register(0x2000 + address % 8) [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:35:19 [INFO] [stdout] | [INFO] [stdout] 35 | 0x4000...0x4013 => 0xFF, // TODO: read from APU registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:40:19 [INFO] [stdout] | [INFO] [stdout] 40 | 0x4018...0x5FFF => 0xFF, // TODO: I/O registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:41:19 [INFO] [stdout] | [INFO] [stdout] 41 | 0x6000...0xFFFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:59:19 [INFO] [stdout] | [INFO] [stdout] 59 | 0x0000...0x1FFF => self.ram[(address % 2048) as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | 0x4000...0x4013 | 0x4015 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | 0x6000...0x7FFF => 0xCC, // TODO: self.cartridge.sram[address - 0x6000] [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:71:19 [INFO] [stdout] | [INFO] [stdout] 71 | 0x8000...0xBFFF => self.cartridge.prg[(address - 0x8000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | 0xC000...0xFFFF => self.cartridge.prg[(address - 0xC000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | 0x0000...0x1FFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:81:19 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | 0x2001...0xC000 => self.cartridge.prg[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | 0x0000...0x2000 => self.cartridge.chr[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | 0x2001...0xC000 => self.cartridge.prg[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `sdl2::render::TextureQuery` [INFO] [stdout] --> src/main.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use sdl2::render::TextureQuery; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated macro `try`: use the `?` operator instead [INFO] [stdout] --> src/cpu.rs:89:1 [INFO] [stdout] | [INFO] [stdout] 89 | / bitflags! { [INFO] [stdout] 90 | | #[derive(Default)] [INFO] [stdout] 91 | | pub struct Flags: u8 { [INFO] [stdout] 92 | | const CARRY = 1 << 0; [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] 101 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `__impl_bitflags` which comes from the expansion of the macro `bitflags` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around method argument [INFO] [stdout] --> src/cpu.rs:203:47 [INFO] [stdout] | [INFO] [stdout] 203 | let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 203 - let address = bus.read_16_bug((bus.read(self.pc + 1) as u16)) [INFO] [stdout] 203 + let address = bus.read_16_bug(bus.read(self.pc + 1) as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:218:17 [INFO] [stdout] | [INFO] [stdout] 218 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 218 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16) [INFO] [stdout] 218 + (bus.read(self.pc + 1) as u16).wrapping_add(self.x as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around block return value [INFO] [stdout] --> src/cpu.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 221 - ((bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16) [INFO] [stdout] 221 + (bus.read(self.pc + 1) as u16).wrapping_add(self.y as u16) & 0xFF as u16 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | 0x0000...0x1FFF => self.ram[(address % 0x2000) as usize], [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:34:19 [INFO] [stdout] | [INFO] [stdout] 34 | 0x2000...0x3FFF => 0xCC, // TODO: self.ppu.read_register(0x2000 + address % 8) [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:35:19 [INFO] [stdout] | [INFO] [stdout] 35 | 0x4000...0x4013 => 0xFF, // TODO: read from APU registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:40:19 [INFO] [stdout] | [INFO] [stdout] 40 | 0x4018...0x5FFF => 0xFF, // TODO: I/O registers [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:41:19 [INFO] [stdout] | [INFO] [stdout] 41 | 0x6000...0xFFFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:59:19 [INFO] [stdout] | [INFO] [stdout] 59 | 0x0000...0x1FFF => self.ram[(address % 2048) as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | 0x4000...0x4013 | 0x4015 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:69:19 [INFO] [stdout] | [INFO] [stdout] 69 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | 0x6000...0x7FFF => 0xCC, // TODO: self.cartridge.sram[address - 0x6000] [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:71:19 [INFO] [stdout] | [INFO] [stdout] 71 | 0x8000...0xBFFF => self.cartridge.prg[(address - 0x8000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:72:19 [INFO] [stdout] | [INFO] [stdout] 72 | 0xC000...0xFFFF => self.cartridge.prg[(address - 0xC000) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:80:19 [INFO] [stdout] | [INFO] [stdout] 80 | 0x0000...0x1FFF => self.mapper_read(address), [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:81:19 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/bus.rs:86:19 [INFO] [stdout] | [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:112:19 [INFO] [stdout] | [INFO] [stdout] 112 | 0x0000...0x2000 => self.cartridge.chr[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:113:19 [INFO] [stdout] | [INFO] [stdout] 113 | 0x2001...0xC000 => self.cartridge.prg[address as usize], [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:120:19 [INFO] [stdout] | [INFO] [stdout] 120 | 0x0000...0x2000 => self.cartridge.chr[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/main.rs:121:19 [INFO] [stdout] | [INFO] [stdout] 121 | 0x2001...0xC000 => self.cartridge.prg[address as usize] = value, [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 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/cpu.rs:812:21 [INFO] [stdout] | [INFO] [stdout] 812 | let mut c: u8 = if self.flags.intersects(Flags::CARRY) { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `bitflags::core::str::::trim_right`: superseded by `trim_end` [INFO] [stdout] --> src/main.rs:523:37 [INFO] [stdout] | [INFO] [stdout] 523 | let expected = expected.trim_right().to_owned(); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] help: replace the use of the deprecated method [INFO] [stdout] | [INFO] [stdout] 523 | let expected = expected.trim_end().to_owned(); [INFO] [stdout] | ~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `render_line` [INFO] [stdout] --> src/ppu.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let render_line = pre_line || visible_line; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_render_line` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/ppu.rs:118:28 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/bus.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => panic!("Invalid bus memory read at address {:04X}", address), [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple patterns overlap on their endpoints [INFO] [stdout] --> src/bus.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [INFO] [stdout] | --------------- this range overlaps on `16128_u16`... [INFO] [stdout] ... [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [INFO] [stdout] | ^^^^^^^^^^^^^^^ ... with this range [INFO] [stdout] | [INFO] [stdout] = note: you likely meant to write mutually exclusive ranges [INFO] [stdout] = note: `#[warn(overlapping_range_endpoints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/bus.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | let mode = self.cartridge.mirror_mode; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/apu.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/main.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/main.rs:245:21 [INFO] [stdout] | [INFO] [stdout] 245 | let b1 = (plane1 >> ((7 - ((x % 8) as u8)) as usize)) & 1; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/cpu.rs:812:21 [INFO] [stdout] | [INFO] [stdout] 812 | let mut c: u8 = if self.flags.intersects(Flags::CARRY) { [INFO] [stdout] | ----^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `render_line` [INFO] [stdout] --> src/ppu.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | let render_line = pre_line || visible_line; [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_render_line` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/ppu.rs:118:28 [INFO] [stdout] | [INFO] [stdout] 118 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/bus.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | _ => panic!("Invalid bus memory read at address {:04X}", address), [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple patterns overlap on their endpoints [INFO] [stdout] --> src/bus.rs:86:13 [INFO] [stdout] | [INFO] [stdout] 81 | 0x2000...0x3F00 => { [INFO] [stdout] | --------------- this range overlaps on `16128_u16`... [INFO] [stdout] ... [INFO] [stdout] 86 | 0x3F00...0x4000 => self.ppu_palette[(address % 32) as usize], [INFO] [stdout] | ^^^^^^^^^^^^^^^ ... with this range [INFO] [stdout] | [INFO] [stdout] = note: you likely meant to write mutually exclusive ranges [INFO] [stdout] = note: `#[warn(overlapping_range_endpoints)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/bus.rs:82:21 [INFO] [stdout] | [INFO] [stdout] 82 | let mode = self.cartridge.mirror_mode; [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bus` [INFO] [stdout] --> src/apu.rs:53:28 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn step(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_bus` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `buffer` [INFO] [stdout] --> src/main.rs:232:13 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let mut current_cps = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `log_string` is never used [INFO] [stdout] --> src/console.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 13 | impl Console { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn log_string(&mut self) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b1` [INFO] [stdout] --> src/main.rs:245:21 [INFO] [stdout] | [INFO] [stdout] 245 | let b1 = (plane1 >> ((7 - ((x % 8) as u8)) as usize)) & 1; [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_b1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `log_string` and `log` are never used [INFO] [stdout] --> src/cpu.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 119 | impl CPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn log_string(&mut self, bus: &Bus) -> String { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn log(&mut self, bus: &Bus) { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PALETTE` is never used [INFO] [stdout] --> src/ppu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const PALETTE: [u32; 64] = [ [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/ppu.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PPU { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub sprite_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | pub sprite_patterns: [u32; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | pub sprite_positions: [u8; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub grayscale_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub show_left_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub show_left_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | pub show_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | pub show_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | pub red_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 35 | pub green_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pub blue_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 37 | [INFO] [stdout] 38 | pub tile_data: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 39 | pub palette_data: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `fetch_tile_data`, `background_pixel`, `sprite_pixel`, `read_palette`, and `render_pixel` are never used [INFO] [stdout] --> src/ppu.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl PPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn fetch_tile_data(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn background_pixel(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn sprite_pixel(&mut self) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn read_palette(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn render_pixel(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ppu_name_table`, `ppu_palette`, and `ppu_oam` are never read [INFO] [stdout] --> src/bus.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Bus { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub ppu_name_table: [u8; 2048], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 11 | pub ppu_palette: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 12 | pub ppu_oam: [u8; 256], [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `ppu_read` is never used [INFO] [stdout] --> src/bus.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Bus { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn ppu_read(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_BUFFER_SIZE` is never used [INFO] [stdout] --> src/apu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const AUDIO_BUFFER_SIZE: u32 = 50 * 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LENGTH_TABLE` is never used [INFO] [stdout] --> src/apu.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const LENGTH_TABLE: [u8; 32] = [ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DUTY_TABLE` is never used [INFO] [stdout] --> src/apu.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DUTY_TABLE: [[u8; 8]; 4] = [ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sample_rate` is never read [INFO] [stdout] --> src/apu.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct APU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub sample_rate: u32 [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `square_wave` is never used [INFO] [stdout] --> src/apu.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl APU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn square_wave(&mut self, bus: &mut Bus, tone_hz: u32) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pulse` is never constructed [INFO] [stdout] --> src/apu.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Pulse { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/apu.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 85 | impl Pulse { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 86 | pub fn write_control(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn write_sweep(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn write_timer_low(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn write_timer_high(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn step_timer(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn step_envelope(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn step_sweep(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn step_length(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sweep(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn output(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 50 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 232 | let mut buffer: Vec = vec![0; WINDOW_WIDTH * WINDOW_HEIGHT]; [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let mut current_cps = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `log` is never used [INFO] [stdout] --> src/cpu.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 119 | impl CPU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 325 | pub fn log(&mut self, bus: &Bus) { [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PALETTE` is never used [INFO] [stdout] --> src/ppu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const PALETTE: [u32; 64] = [ [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/ppu.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct PPU { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 24 | pub sprite_count: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 25 | pub sprite_patterns: [u32; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 26 | pub sprite_positions: [u8; 8], [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | pub grayscale_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 30 | pub show_left_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 31 | pub show_left_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 32 | pub show_background_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 33 | pub show_sprites_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 34 | pub red_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 35 | pub green_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 36 | pub blue_tint_flag: u8, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 37 | [INFO] [stdout] 38 | pub tile_data: u64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 39 | pub palette_data: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `fetch_tile_data`, `background_pixel`, `sprite_pixel`, `read_palette`, and `render_pixel` are never used [INFO] [stdout] --> src/ppu.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl PPU { [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn fetch_tile_data(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn background_pixel(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn sprite_pixel(&mut self) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | pub fn read_palette(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn render_pixel(&mut self, bus: &mut Bus) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ppu_name_table`, `ppu_palette`, and `ppu_oam` are never read [INFO] [stdout] --> src/bus.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct Bus { [INFO] [stdout] | --- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub ppu_name_table: [u8; 2048], [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 11 | pub ppu_palette: [u8; 32], [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 12 | pub ppu_oam: [u8; 256], [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `ppu_read` is never used [INFO] [stdout] --> src/bus.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Bus { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn ppu_read(&self, address: u16) -> u8 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AUDIO_BUFFER_SIZE` is never used [INFO] [stdout] --> src/apu.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | const AUDIO_BUFFER_SIZE: u32 = 50 * 1024; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LENGTH_TABLE` is never used [INFO] [stdout] --> src/apu.rs:4:7 [INFO] [stdout] | [INFO] [stdout] 4 | const LENGTH_TABLE: [u8; 32] = [ [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DUTY_TABLE` is never used [INFO] [stdout] --> src/apu.rs:8:7 [INFO] [stdout] | [INFO] [stdout] 8 | const DUTY_TABLE: [[u8; 8]; 4] = [ [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `sample_rate` is never read [INFO] [stdout] --> src/apu.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct APU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub sample_rate: u32 [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `square_wave` is never used [INFO] [stdout] --> src/apu.rs:33:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl APU { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn square_wave(&mut self, bus: &mut Bus, tone_hz: u32) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Pulse` is never constructed [INFO] [stdout] --> src/apu.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct Pulse { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/apu.rs:86:12 [INFO] [stdout] | [INFO] [stdout] 85 | impl Pulse { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 86 | pub fn write_control(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn write_sweep(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn write_timer_low(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn write_timer_high(&mut self, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 115 | pub fn step_timer(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn step_envelope(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn step_sweep(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn step_length(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn sweep(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn output(&mut self) -> u8 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: 50 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.12s [INFO] running `Command { std: "docker" "inspect" "afa1ae5962d9932870ee55011f86872f5072246db5a9e28b549cbbbf15b02c59", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "afa1ae5962d9932870ee55011f86872f5072246db5a9e28b549cbbbf15b02c59", kill_on_drop: false }` [INFO] [stdout] afa1ae5962d9932870ee55011f86872f5072246db5a9e28b549cbbbf15b02c59