[INFO] cloning repository https://github.com/kyhou/nes_emulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/kyhou/nes_emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyhou%2Fnes_emulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyhou%2Fnes_emulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 18f88474deb0ecb0f3cd1cfb34f49e9fdd2684a6
[INFO] checking kyhou/nes_emulator against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fkyhou%2Fnes_emulator" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/kyhou/nes_emulator
[INFO] finished tweaking git repo https://github.com/kyhou/nes_emulator
[INFO] tweaked toml for git repo https://github.com/kyhou/nes_emulator written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/kyhou/nes_emulator on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/kyhou/nes_emulator 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded linked-list v0.0.3
[INFO] [stderr]   Downloaded miniquad v0.3.14
[INFO] [stderr]   Downloaded quad-snd v0.2.7
[INFO] [stderr]   Downloaded macroquad v0.3.25
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 84d6ab4479ceaa456fb108a83a8f33995b314d5c85ea29852978be6557e6a455
[INFO] running `Command { std: "docker" "start" "-a" "84d6ab4479ceaa456fb108a83a8f33995b314d5c85ea29852978be6557e6a455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "84d6ab4479ceaa456fb108a83a8f33995b314d5c85ea29852978be6557e6a455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "84d6ab4479ceaa456fb108a83a8f33995b314d5c85ea29852978be6557e6a455", kill_on_drop: false }`
[INFO] [stdout] 84d6ab4479ceaa456fb108a83a8f33995b314d5c85ea29852978be6557e6a455
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 03762abe4baccec8f45ea1e2dc596bb42ca1f062f006b6f108328355699b7b1d
[INFO] running `Command { std: "docker" "start" "-a" "03762abe4baccec8f45ea1e2dc596bb42ca1f062f006b6f108328355699b7b1d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.144
[INFO] [stderr]     Checking ogg v0.7.1
[INFO] [stderr]     Checking once_cell v1.17.1
[INFO] [stderr]    Compiling miniquad v0.3.14
[INFO] [stderr]     Checking hound v3.5.0
[INFO] [stderr]    Compiling quad-snd v0.2.7
[INFO] [stderr]     Checking ttf-parser v0.15.2
[INFO] [stderr]     Checking quad-rand v0.2.1
[INFO] [stderr]     Checking bumpalo v3.12.2
[INFO] [stderr]    Compiling macroquad_macro v0.1.7
[INFO] [stderr]     Checking glam v0.21.3
[INFO] [stderr]     Checking bitfield v0.14.0
[INFO] [stderr]     Checking linked-list v0.0.3
[INFO] [stderr]     Checking png v0.17.8
[INFO] [stderr]     Checking ahash v0.8.3
[INFO] [stderr]     Checking lewton v0.9.4
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]     Checking image v0.24.6
[INFO] [stderr]     Checking audrey v0.3.0
[INFO] [stderr]     Checking fontdue v0.7.3
[INFO] [stderr]     Checking quad-alsa-sys v0.3.2
[INFO] [stderr]     Checking macroquad v0.3.25
[INFO] [stderr]     Checking nes_emulator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let mut show_name_tbl: bool = false;
[INFO] [stdout]    |         ----^^^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let mut show_name_tbl: bool = false;
[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: `map_asm`
[INFO] [stdout]   --> src/main.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let map_asm: BTreeMap<u16, String>;
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_asm`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_name_tbl`
[INFO] [stdout]   --> src/main.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let mut show_name_tbl: bool = false;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_name_tbl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chr_banks` is never read
[INFO] [stdout]  --> src/mapper.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Mapper {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     pub prg_banks: u8,
[INFO] [stdout] 5 |     pub chr_banks: u8,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CYAN` is never used
[INFO] [stdout]  --> src/cpu.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const CYAN: macroquad::color::Color = Color {
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/cpu.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct Instruction {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 26 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disassemble` and `draw_code` are never used
[INFO] [stdout]     --> src/cpu.rs:2571:12
[INFO] [stdout]      |
[INFO] [stdout]   47 | impl Cpu {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2571 |     pub fn disassemble(
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2775 |     pub fn draw_code(
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sprite_name_table` is never read
[INFO] [stdout]   --> src/ppu.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ppu {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sprite_name_table: [Image; 2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_name_table` is never used
[INFO] [stdout]    --> src/ppu.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub trait Debug {
[INFO] [stdout]     |           ----- method in this trait
[INFO] [stdout] 118 |     fn get_screen(&self) -> &Image;
[INFO] [stdout] 119 |     fn get_name_table(&self, i: u8) -> &Image;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prg_banks` is never read
[INFO] [stdout]   --> src/cartridge.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Cartridge {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub prg_banks: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `OneScreenLo` and `OneScreenHi` are never constructed
[INFO] [stdout]   --> src/cartridge.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum Mirror {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 35 |     OneScreenLo,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 36 |     OneScreenHi,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mirror` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:1813:76
[INFO] [stdout]      |
[INFO] [stdout] 1813 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 1813 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2170:76
[INFO] [stdout]      |
[INFO] [stdout] 2170 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2170 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2266:76
[INFO] [stdout]      |
[INFO] [stdout] 2266 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2266 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2283:76
[INFO] [stdout]      |
[INFO] [stdout] 2283 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2283 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2564:78
[INFO] [stdout]      |
[INFO] [stdout] 2564 |         if !(self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize) {
[INFO] [stdout]      |                                                                              ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2564 |         if !(self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize) {
[INFO] [stdout]      |                                                                              ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2596:75
[INFO] [stdout]      |
[INFO] [stdout] 2596 |             if self.lookup[opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                           ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2596 |             if self.lookup[opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                           ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2598:82
[INFO] [stdout]      |
[INFO] [stdout] 2598 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::imm as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2598 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::imm as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2604:82
[INFO] [stdout]      |
[INFO] [stdout] 2604 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zp0 as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2604 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zp0 as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2610:82
[INFO] [stdout]      |
[INFO] [stdout] 2610 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2610 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2616:82
[INFO] [stdout]      |
[INFO] [stdout] 2616 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpy as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2616 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpy as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2622:82
[INFO] [stdout]      |
[INFO] [stdout] 2622 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2622 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2628:82
[INFO] [stdout]      |
[INFO] [stdout] 2628 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izy as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2628 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izy as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2634:82
[INFO] [stdout]      |
[INFO] [stdout] 2634 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abs as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2634 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abs as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2642:82
[INFO] [stdout]      |
[INFO] [stdout] 2642 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2642 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2650:82
[INFO] [stdout]      |
[INFO] [stdout] 2650 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::aby as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2650 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::aby as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2658:82
[INFO] [stdout]      |
[INFO] [stdout] 2658 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::ind as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2658 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::ind as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2666:82
[INFO] [stdout]      |
[INFO] [stdout] 2666 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::rel as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2666 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::rel as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_asm`
[INFO] [stdout]   --> src/main.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let map_asm: BTreeMap<u16, String>;
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_asm`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_name_tbl`
[INFO] [stdout]   --> src/main.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let mut show_name_tbl: bool = false;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_name_tbl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `chr_banks` is never read
[INFO] [stdout]  --> src/mapper.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Mapper {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     pub prg_banks: u8,
[INFO] [stdout] 5 |     pub chr_banks: u8,
[INFO] [stdout]   |         ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CYAN` is never used
[INFO] [stdout]  --> src/cpu.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const CYAN: macroquad::color::Color = Color {
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]   --> src/cpu.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct Instruction {
[INFO] [stdout]    |        ----------- field in this struct
[INFO] [stdout] 26 |     name: String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `disassemble` and `draw_code` are never used
[INFO] [stdout]     --> src/cpu.rs:2571:12
[INFO] [stdout]      |
[INFO] [stdout]   47 | impl Cpu {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2571 |     pub fn disassemble(
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2775 |     pub fn draw_code(
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sprite_name_table` is never read
[INFO] [stdout]   --> src/ppu.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Ppu {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     sprite_name_table: [Image; 2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_name_table` is never used
[INFO] [stdout]    --> src/ppu.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub trait Debug {
[INFO] [stdout]     |           ----- method in this trait
[INFO] [stdout] 118 |     fn get_screen(&self) -> &Image;
[INFO] [stdout] 119 |     fn get_name_table(&self, i: u8) -> &Image;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `prg_banks` is never read
[INFO] [stdout]   --> src/cartridge.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Cartridge {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub prg_banks: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `OneScreenLo` and `OneScreenHi` are never constructed
[INFO] [stdout]   --> src/cartridge.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum Mirror {
[INFO] [stdout]    |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 35 |     OneScreenLo,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 36 |     OneScreenHi,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Mirror` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:1813:76
[INFO] [stdout]      |
[INFO] [stdout] 1813 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(function_casts_as_integer)]` on by default
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 1813 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2170:76
[INFO] [stdout]      |
[INFO] [stdout] 2170 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2170 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2266:76
[INFO] [stdout]      |
[INFO] [stdout] 2266 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2266 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2283:76
[INFO] [stdout]      |
[INFO] [stdout] 2283 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                            ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2283 |         if self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                            ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2564:78
[INFO] [stdout]      |
[INFO] [stdout] 2564 |         if !(self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as usize) {
[INFO] [stdout]      |                                                                              ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2564 |         if !(self.lookup[self.opcode as usize].addrmode as usize == Cpu::imp as *const () as usize) {
[INFO] [stdout]      |                                                                              ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2596:75
[INFO] [stdout]      |
[INFO] [stdout] 2596 |             if self.lookup[opcode as usize].addrmode as usize == Cpu::imp as usize {
[INFO] [stdout]      |                                                                           ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2596 |             if self.lookup[opcode as usize].addrmode as usize == Cpu::imp as *const () as usize {
[INFO] [stdout]      |                                                                           ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2598:82
[INFO] [stdout]      |
[INFO] [stdout] 2598 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::imm as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2598 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::imm as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2604:82
[INFO] [stdout]      |
[INFO] [stdout] 2604 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zp0 as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2604 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zp0 as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2610:82
[INFO] [stdout]      |
[INFO] [stdout] 2610 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2610 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2616:82
[INFO] [stdout]      |
[INFO] [stdout] 2616 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpy as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2616 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::zpy as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2622:82
[INFO] [stdout]      |
[INFO] [stdout] 2622 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2622 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2628:82
[INFO] [stdout]      |
[INFO] [stdout] 2628 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izy as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2628 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::izy as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2634:82
[INFO] [stdout]      |
[INFO] [stdout] 2634 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abs as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2634 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abs as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2642:82
[INFO] [stdout]      |
[INFO] [stdout] 2642 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abx as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2642 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::abx as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2650:82
[INFO] [stdout]      |
[INFO] [stdout] 2650 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::aby as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2650 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::aby as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2658:82
[INFO] [stdout]      |
[INFO] [stdout] 2658 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::ind as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2658 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::ind as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: direct cast of function item into an integer
[INFO] [stdout]     --> src/cpu.rs:2666:82
[INFO] [stdout]      |
[INFO] [stdout] 2666 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::rel as usize {
[INFO] [stdout]      |                                                                                  ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: first cast to a pointer `as *const ()`
[INFO] [stdout]      |
[INFO] [stdout] 2666 |             } else if self.lookup[opcode as usize].addrmode as usize == Cpu::rel as *const () as usize {
[INFO] [stdout]      |                                                                                  ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.02s
[INFO] running `Command { std: "docker" "inspect" "03762abe4baccec8f45ea1e2dc596bb42ca1f062f006b6f108328355699b7b1d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "03762abe4baccec8f45ea1e2dc596bb42ca1f062f006b6f108328355699b7b1d", kill_on_drop: false }`
[INFO] [stdout] 03762abe4baccec8f45ea1e2dc596bb42ca1f062f006b6f108328355699b7b1d
