[INFO] cloning repository https://github.com/alexandrelombard/rust-nes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alexandrelombard/rust-nes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandrelombard%2Frust-nes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandrelombard%2Frust-nes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3155c4b2eadf340712f7cd01e8859c648baaad41
[INFO] checking alexandrelombard/rust-nes against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falexandrelombard%2Frust-nes" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/alexandrelombard/rust-nes
[INFO] finished tweaking git repo https://github.com/alexandrelombard/rust-nes
[INFO] tweaked toml for git repo https://github.com/alexandrelombard/rust-nes written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/alexandrelombard/rust-nes on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/alexandrelombard/rust-nes already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5657704408edda64215d07a17890b29678bdce661ccc4292a6c6db579c4139dd
[INFO] running `Command { std: "docker" "start" "-a" "5657704408edda64215d07a17890b29678bdce661ccc4292a6c6db579c4139dd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5657704408edda64215d07a17890b29678bdce661ccc4292a6c6db579c4139dd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5657704408edda64215d07a17890b29678bdce661ccc4292a6c6db579c4139dd", kill_on_drop: false }`
[INFO] [stdout] 5657704408edda64215d07a17890b29678bdce661ccc4292a6c6db579c4139dd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 17af9ff732863e98ea09712782d295284bde7aa59182a20f092bb385632b9f2b
[INFO] running `Command { std: "docker" "start" "-a" "17af9ff732863e98ea09712782d295284bde7aa59182a20f092bb385632b9f2b", kill_on_drop: false }`
[INFO] [stderr]     Checking regex-syntax v0.6.23
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking regex v1.4.5
[INFO] [stderr]     Checking env_logger v0.8.3
[INFO] [stderr]     Checking nes_emulator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variant `FOUR_SCREEN` should have an upper camel case name
[INFO] [stdout]   --> src/rom_file.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     FOUR_SCREEN
[INFO] [stdout]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `FourScreen`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rom_file::RomFile`
[INFO] [stdout]  --> src/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rom_file::RomFile;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error`, `info`, and `warn`
[INFO] [stdout]  --> src/cpu.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{debug, info, error, warn};
[INFO] [stdout]   |                  ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/ppu.rs:49:26
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let lb = ((self.vram[i + offset] & (0b10000000 >> j)) >> (7-j));
[INFO] [stdout]    |                          ^                                                    ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 49 -                 let lb = ((self.vram[i + offset] & (0b10000000 >> j)) >> (7-j));
[INFO] [stdout] 49 +                 let lb = (self.vram[i + offset] & (0b10000000 >> j)) >> (7-j) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]  --> src/memory.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{debug, info, error, warn};
[INFO] [stdout]   |           ^^^^^  ^^^^         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Canvas`, `RenderTarget`, and `TextureAccess`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use sdl2::render::{Texture, Canvas, RenderTarget, TextureAccess};
[INFO] [stdout]   |                             ^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::PixelFormatEnum`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::pixels::PixelFormatEnum;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LevelFilter`, `Level`, `debug`, `error`, and `log_enabled`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::{LevelFilter, Level, log_enabled, debug, error};
[INFO] [stdout]   |           ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PPU_CTRL`
[INFO] [stdout]  --> src/main.rs:8:29
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::memory::{Memory, PPU_CTRL};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::nes_debug::sdl_ppu`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::nes_debug::sdl_ppu;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PixelFormat`
[INFO] [stdout]   --> src/main.rs:16:27
[INFO] [stdout]    |
[INFO] [stdout] 16 | use sdl2::pixels::{Color, PixelFormat, PixelFormatEnum};
[INFO] [stdout]    |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LevelFilter`, `Level`, `debug`, and `log_enabled`
[INFO] [stdout]   --> src/main.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use log::{LevelFilter, Level, log_enabled, debug, error};
[INFO] [stdout]    |           ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Canvas` and `TextureCreator`
[INFO] [stdout]   --> src/main.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | use sdl2::render::{Canvas, Texture, TextureAccess, TextureCreator};
[INFO] [stdout]    |                    ^^^^^^                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::any::Any;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]   --> src/main.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             'running: loop {
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pitch`
[INFO] [stdout]   --> src/nes_debug/sdl_ppu.rs:27:49
[INFO] [stdout]    |
[INFO] [stdout] 27 |     texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_pitch`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FOUR_SCREEN` should have an upper camel case name
[INFO] [stdout]   --> src/rom_file.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     FOUR_SCREEN
[INFO] [stdout]    |     ^^^^^^^^^^^ help: convert the identifier to upper camel case: `FourScreen`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rom_file::RomFile`
[INFO] [stdout]  --> src/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rom_file::RomFile;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error`, `info`, and `warn`
[INFO] [stdout]  --> src/cpu.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{debug, info, error, warn};
[INFO] [stdout]   |                  ^^^^  ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut texture =
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/ppu.rs:49:26
[INFO] [stdout]    |
[INFO] [stdout] 49 |                 let lb = ((self.vram[i + offset] & (0b10000000 >> j)) >> (7-j));
[INFO] [stdout]    |                          ^                                                    ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 49 -                 let lb = ((self.vram[i + offset] & (0b10000000 >> j)) >> (7-j));
[INFO] [stdout] 49 +                 let lb = (self.vram[i + offset] & (0b10000000 >> j)) >> (7-j) ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `framebuffer`
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut framebuffer: [u8; 1024 * 256 * 3];
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_framebuffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `texture`
[INFO] [stdout]   --> src/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut texture =
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_texture`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]  --> src/memory.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{debug, info, error, warn};
[INFO] [stdout]   |           ^^^^^  ^^^^         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Canvas`, `RenderTarget`, and `TextureAccess`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use sdl2::render::{Texture, Canvas, RenderTarget, TextureAccess};
[INFO] [stdout]   |                             ^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::PixelFormatEnum`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::pixels::PixelFormatEnum;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LevelFilter`, `Level`, `debug`, `error`, and `log_enabled`
[INFO] [stdout]  --> src/nes_debug/sdl_ppu.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::{LevelFilter, Level, log_enabled, debug, error};
[INFO] [stdout]   |           ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PPU_CTRL`
[INFO] [stdout]  --> src/main.rs:8:29
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::memory::{Memory, PPU_CTRL};
[INFO] [stdout]   |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::nes_debug::sdl_ppu`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::nes_debug::sdl_ppu;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PixelFormat`
[INFO] [stdout]   --> src/main.rs:16:27
[INFO] [stdout]    |
[INFO] [stdout] 16 | use sdl2::pixels::{Color, PixelFormat, PixelFormatEnum};
[INFO] [stdout]    |                           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LevelFilter`, `Level`, `debug`, and `log_enabled`
[INFO] [stdout]   --> src/main.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | use log::{LevelFilter, Level, log_enabled, debug, error};
[INFO] [stdout]    |           ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Canvas` and `TextureCreator`
[INFO] [stdout]   --> src/main.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | use sdl2::render::{Canvas, Texture, TextureAccess, TextureCreator};
[INFO] [stdout]    |                    ^^^^^^                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::any::Any`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::any::Any;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused label
[INFO] [stdout]   --> src/main.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |             'running: loop {
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_labels)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]    --> src/main.rs:103:26
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn handle_user_input(memory: &mut Memory, event_pump: &mut EventPump) {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile_attr`
[INFO] [stdout]    --> src/main.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let tile_attr = ppu.read_vram(0);
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_attr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]    --> src/main.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let pixel = ((ppu.read_vram(adr) >> (7 - (col % 8))) & 1) + (((ppu.read_vram(adr + 8) >> (7 - (col % 8))) & 1) * 2);
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw` is never used
[INFO] [stdout]    --> src/main.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn draw<T>(ppu: &Ppu, memory: &Memory, framebuffer: &mut [u8; 1024 * 256 * 3], texture: &mut Texture) {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_CARTRIDGE_BATTERY` is never used
[INFO] [stdout]  --> src/rom_file.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const FLAG_CARTRIDGE_BATTERY: u8 = 0b00000010;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_U` is never used
[INFO] [stdout]   --> src/cpu.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const FLAG_U: u8                    = 0b00100000;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_NMI_OCCURRED` is never used
[INFO] [stdout]   --> src/cpu.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const FLAG_NMI_OCCURRED: u8     = 0b10000000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]   --> src/cpu.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum Instruction {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cpu.rs:491:8
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 491 |     fn handle_nmi(&mut self, memory: &mut Memory) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     fn adc(&mut self, memory: &Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     fn add(&mut self, val: u8) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     fn inx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 754 |     fn lsr(&mut self, memory: &mut Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     fn pla(&mut self, memory: &mut Memory) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 818 |     pub fn ror(&mut self, memory: &mut Memory, address: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 828 |     pub fn ror_akk(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn sbc(&mut self, memory: &Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 859 |     fn sed(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 879 |     fn tax(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 885 |     fn tay(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn tsx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 907 |     fn tya(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vram_data`, `read_vram`, `write_vram`, `get_vblank`, and `set_nmi_occurred` are never used
[INFO] [stdout]   --> src/ppu.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Ppu {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn vram_data(&self) -> &[u8;0x4000] {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn read_vram(&self, address: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn write_vram(&mut self, address: u16, val: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn get_vblank(&self, memory: &Memory) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn set_nmi_occurred(&self, memory: &mut Memory, status: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_INTERNAL_RAM` is never used
[INFO] [stdout]  --> src/memory.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const NES_INTERNAL_RAM: u16 = 0x0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_PPU_REGISTERS` is never used
[INFO] [stdout]  --> src/memory.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const NES_PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_APU_IO_REGISTERS` is never used
[INFO] [stdout]  --> src/memory.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const NES_APU_IO_REGISTERS: u16 = 0x4000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_CARTRIDGE_SPACE` is never used
[INFO] [stdout]  --> src/memory.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const NES_CARTRIDGE_SPACE: u16 = 0x4020;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_MASK` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const PPU_MASK: u16     = 0x2001;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_ADDR` is never used
[INFO] [stdout]   --> src/memory.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const OAM_ADDR: u16     = 0x2003;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_DATA` is never used
[INFO] [stdout]   --> src/memory.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const OAM_DATA: u16     = 0x2004;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_SCROLL` is never used
[INFO] [stdout]   --> src/memory.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const PPU_SCROLL: u16   = 0x2005;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_ADDR` is never used
[INFO] [stdout]   --> src/memory.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const PPU_ADDR: u16     = 0x2006;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_DATA` is never used
[INFO] [stdout]   --> src/memory.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const PPU_DATA: u16     = 0x2007;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_DMA` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const OAM_DMA: u16      = 0x4014;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_PPU_MASTER_SLAVE` is never used
[INFO] [stdout]   --> src/memory.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const FLAG_PPU_MASTER_SLAVE: u8         = 0b01000000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_SPRITE_HEIGHT` is never used
[INFO] [stdout]   --> src/memory.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const FLAG_SPRITE_HEIGHT: u8            = 0b00100000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_SPRITE_TILE_SELECT` is never used
[INFO] [stdout]   --> src/memory.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const FLAG_SPRITE_TILE_SELECT: u8       = 0b00001000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_INCREMENT_MODE` is never used
[INFO] [stdout]   --> src/memory.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const FLAG_INCREMENT_MODE: u8           = 0b00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_NAMETABLE_SELECT` is never used
[INFO] [stdout]   --> src/memory.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const FLAG_NAMETABLE_SELECT: u8         = 0b00000011;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressingMode` is never used
[INFO] [stdout]   --> src/memory.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum AddressingMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_RIGHT` is never used
[INFO] [stdout]  --> src/controller.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const JOY_RIGHT: u8     = 0b10000000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_LEFT` is never used
[INFO] [stdout]  --> src/controller.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const JOY_LEFT: u8      = 0b01000000;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_DOWN` is never used
[INFO] [stdout]  --> src/controller.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const JOY_DOWN: u8      = 0b00100000;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_UP` is never used
[INFO] [stdout]  --> src/controller.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const JOY_UP: u8        = 0b00010000;
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_START` is never used
[INFO] [stdout]  --> src/controller.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const JOY_START: u8     = 0b00001000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_SELECT` is never used
[INFO] [stdout]  --> src/controller.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const JOY_SELECT: u8    = 0b00000100;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_BUTTON_B` is never used
[INFO] [stdout]  --> src/controller.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const JOY_BUTTON_B: u8  = 0b00000010;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_BUTTON_A` is never used
[INFO] [stdout]  --> src/controller.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const JOY_BUTTON_A: u8  = 0b00000001;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROLLER_1_ADDRESS` is never used
[INFO] [stdout]   --> src/controller.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONTROLLER_1_ADDRESS: u16 = 0x4016;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROLLER_2_ADDRESS` is never used
[INFO] [stdout]   --> src/controller.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CONTROLLER_2_ADDRESS: u16 = 0x4017;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/main.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 canvas.copy(&debug_chr_texture, None, Some(Rect::new(0, 0, 1024, 1024)));
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 let _ = canvas.copy(&debug_chr_texture, None, Some(Rect::new(0, 0, 1024, 1024)));
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     texture.update(None, framebuffer, 256 * 3);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |     let _ = texture.update(None, framebuffer, 256 * 3);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/ppu.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if 0 <= self.scanline && self.scanline <= 239 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/nes_debug/sdl_ppu.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | /     texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout] 28 | |         for x in 0..16 {
[INFO] [stdout] 29 | |             for y in 0..16 {
[INFO] [stdout] 30 | |                 let offset: usize = x as usize * tile_width + y as usize * line_width;
[INFO] [stdout] ...  |
[INFO] [stdout] 43 | |     });
[INFO] [stdout]    | |______^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let _ = texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pitch`
[INFO] [stdout]   --> src/nes_debug/sdl_ppu.rs:27:49
[INFO] [stdout]    |
[INFO] [stdout] 27 |     texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_pitch`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut texture =
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `framebuffer`
[INFO] [stdout]   --> src/main.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut framebuffer: [u8; 1024 * 256 * 3];
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_framebuffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `texture`
[INFO] [stdout]   --> src/main.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let mut texture =
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_texture`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `memory`
[INFO] [stdout]    --> src/main.rs:103:26
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn handle_user_input(memory: &mut Memory, event_pump: &mut EventPump) {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile_attr`
[INFO] [stdout]    --> src/main.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |             let tile_attr = ppu.read_vram(0);
[INFO] [stdout]     |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tile_attr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pixel`
[INFO] [stdout]    --> src/main.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |             let pixel = ((ppu.read_vram(adr) >> (7 - (col % 8))) & 1) + (((ppu.read_vram(adr + 8) >> (7 - (col % 8))) & 1) * 2);
[INFO] [stdout]     |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_pixel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw` is never used
[INFO] [stdout]    --> src/main.rs:138:4
[INFO] [stdout]     |
[INFO] [stdout] 138 | fn draw<T>(ppu: &Ppu, memory: &Memory, framebuffer: &mut [u8; 1024 * 256 * 3], texture: &mut Texture) {
[INFO] [stdout]     |    ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_CARTRIDGE_BATTERY` is never used
[INFO] [stdout]  --> src/rom_file.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const FLAG_CARTRIDGE_BATTERY: u8 = 0b00000010;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_U` is never used
[INFO] [stdout]   --> src/cpu.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const FLAG_U: u8                    = 0b00100000;
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_NMI_OCCURRED` is never used
[INFO] [stdout]   --> src/cpu.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const FLAG_NMI_OCCURRED: u8     = 0b10000000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]   --> src/cpu.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum Instruction {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cpu.rs:491:8
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl Cpu {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 491 |     fn handle_nmi(&mut self, memory: &mut Memory) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     fn adc(&mut self, memory: &Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 566 |     fn add(&mut self, val: u8) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     fn inx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 754 |     fn lsr(&mut self, memory: &mut Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     fn pla(&mut self, memory: &mut Memory) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 818 |     pub fn ror(&mut self, memory: &mut Memory, address: u16) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 828 |     pub fn ror_akk(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 851 |     fn sbc(&mut self, memory: &Memory, address: u16) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 859 |     fn sed(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 879 |     fn tax(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 885 |     fn tay(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 891 |     fn tsx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 907 |     fn tya(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `vram_data`, `read_vram`, `write_vram`, `get_vblank`, and `set_nmi_occurred` are never used
[INFO] [stdout]   --> src/ppu.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Ppu {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn vram_data(&self) -> &[u8;0x4000] {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn read_vram(&self, address: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn write_vram(&mut self, address: u16, val: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn get_vblank(&self, memory: &Memory) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn set_nmi_occurred(&self, memory: &mut Memory, status: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_INTERNAL_RAM` is never used
[INFO] [stdout]  --> src/memory.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const NES_INTERNAL_RAM: u16 = 0x0000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_PPU_REGISTERS` is never used
[INFO] [stdout]  --> src/memory.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const NES_PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_APU_IO_REGISTERS` is never used
[INFO] [stdout]  --> src/memory.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const NES_APU_IO_REGISTERS: u16 = 0x4000;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_CARTRIDGE_SPACE` is never used
[INFO] [stdout]  --> src/memory.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const NES_CARTRIDGE_SPACE: u16 = 0x4020;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_MASK` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const PPU_MASK: u16     = 0x2001;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_ADDR` is never used
[INFO] [stdout]   --> src/memory.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const OAM_ADDR: u16     = 0x2003;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_DATA` is never used
[INFO] [stdout]   --> src/memory.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const OAM_DATA: u16     = 0x2004;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_SCROLL` is never used
[INFO] [stdout]   --> src/memory.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const PPU_SCROLL: u16   = 0x2005;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_ADDR` is never used
[INFO] [stdout]   --> src/memory.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const PPU_ADDR: u16     = 0x2006;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_DATA` is never used
[INFO] [stdout]   --> src/memory.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const PPU_DATA: u16     = 0x2007;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_DMA` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const OAM_DMA: u16      = 0x4014;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_PPU_MASTER_SLAVE` is never used
[INFO] [stdout]   --> src/memory.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const FLAG_PPU_MASTER_SLAVE: u8         = 0b01000000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_SPRITE_HEIGHT` is never used
[INFO] [stdout]   --> src/memory.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const FLAG_SPRITE_HEIGHT: u8            = 0b00100000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_SPRITE_TILE_SELECT` is never used
[INFO] [stdout]   --> src/memory.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const FLAG_SPRITE_TILE_SELECT: u8       = 0b00001000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_INCREMENT_MODE` is never used
[INFO] [stdout]   --> src/memory.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const FLAG_INCREMENT_MODE: u8           = 0b00000100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FLAG_NAMETABLE_SELECT` is never used
[INFO] [stdout]   --> src/memory.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const FLAG_NAMETABLE_SELECT: u8         = 0b00000011;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressingMode` is never used
[INFO] [stdout]   --> src/memory.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum AddressingMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_RIGHT` is never used
[INFO] [stdout]  --> src/controller.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const JOY_RIGHT: u8     = 0b10000000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_LEFT` is never used
[INFO] [stdout]  --> src/controller.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const JOY_LEFT: u8      = 0b01000000;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_DOWN` is never used
[INFO] [stdout]  --> src/controller.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const JOY_DOWN: u8      = 0b00100000;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_UP` is never used
[INFO] [stdout]  --> src/controller.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const JOY_UP: u8        = 0b00010000;
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_START` is never used
[INFO] [stdout]  --> src/controller.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const JOY_START: u8     = 0b00001000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_SELECT` is never used
[INFO] [stdout]  --> src/controller.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const JOY_SELECT: u8    = 0b00000100;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_BUTTON_B` is never used
[INFO] [stdout]  --> src/controller.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const JOY_BUTTON_B: u8  = 0b00000010;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `JOY_BUTTON_A` is never used
[INFO] [stdout]  --> src/controller.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const JOY_BUTTON_A: u8  = 0b00000001;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROLLER_1_ADDRESS` is never used
[INFO] [stdout]   --> src/controller.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONTROLLER_1_ADDRESS: u16 = 0x4016;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONTROLLER_2_ADDRESS` is never used
[INFO] [stdout]   --> src/controller.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CONTROLLER_2_ADDRESS: u16 = 0x4017;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/main.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 canvas.copy(&debug_chr_texture, None, Some(Rect::new(0, 0, 1024, 1024)));
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 91 |                 let _ = canvas.copy(&debug_chr_texture, None, Some(Rect::new(0, 0, 1024, 1024)));
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:155:5
[INFO] [stdout]     |
[INFO] [stdout] 155 |     texture.update(None, framebuffer, 256 * 3);
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 155 |     let _ = texture.update(None, framebuffer, 256 * 3);
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/ppu.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 |         if 0 <= self.scanline && self.scanline <= 239 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/nes_debug/sdl_ppu.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | /     texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout] 28 | |         for x in 0..16 {
[INFO] [stdout] 29 | |             for y in 0..16 {
[INFO] [stdout] 30 | |                 let offset: usize = x as usize * tile_width + y as usize * line_width;
[INFO] [stdout] ...  |
[INFO] [stdout] 43 | |     });
[INFO] [stdout]    | |______^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let _ = texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.88s
[INFO] running `Command { std: "docker" "inspect" "17af9ff732863e98ea09712782d295284bde7aa59182a20f092bb385632b9f2b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17af9ff732863e98ea09712782d295284bde7aa59182a20f092bb385632b9f2b", kill_on_drop: false }`
[INFO] [stdout] 17af9ff732863e98ea09712782d295284bde7aa59182a20f092bb385632b9f2b
