[INFO] cloning repository https://github.com/glinesbdev/gb_emulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/glinesbdev/gb_emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fglinesbdev%2Fgb_emulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fglinesbdev%2Fgb_emulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c952b663dc8f99504dc17bec867125bc8bff0810
[INFO] checking glinesbdev/gb_emulator against try#4f260f0f20b3133d20cfb50353c0221943af5796+rustflags=-Dunmustuse_in_always_ok for pr-148577
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fglinesbdev%2Fgb_emulator" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/glinesbdev/gb_emulator
[INFO] finished tweaking git repo https://github.com/glinesbdev/gb_emulator
[INFO] tweaked toml for git repo https://github.com/glinesbdev/gb_emulator written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/glinesbdev/gb_emulator on toolchain 4f260f0f20b3133d20cfb50353c0221943af5796
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/glinesbdev/gb_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" "+4f260f0f20b3133d20cfb50353c0221943af5796" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8f0e51d19dfe47c5394eef7840ea3969bf09e201e6f6d10d059a1dbabbc1e73f
[INFO] running `Command { std: "docker" "start" "-a" "8f0e51d19dfe47c5394eef7840ea3969bf09e201e6f6d10d059a1dbabbc1e73f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8f0e51d19dfe47c5394eef7840ea3969bf09e201e6f6d10d059a1dbabbc1e73f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f0e51d19dfe47c5394eef7840ea3969bf09e201e6f6d10d059a1dbabbc1e73f", kill_on_drop: false }`
[INFO] [stdout] 8f0e51d19dfe47c5394eef7840ea3969bf09e201e6f6d10d059a1dbabbc1e73f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Dunmustuse_in_always_ok" "-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+4f260f0f20b3133d20cfb50353c0221943af5796" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 877c7bb2bb6161e8182218fca1fdea12d58352ea6785cc7e0865394b77df8309
[INFO] running `Command { std: "docker" "start" "-a" "877c7bb2bb6161e8182218fca1fdea12d58352ea6785cc7e0865394b77df8309", kill_on_drop: false }`
[INFO] [stderr]     Checking gb_emulator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused macro definition: `assert_flags`
[INFO] [stdout]  --> src/cpu/./tests/cpu_tests.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | macro_rules! assert_flags {
[INFO] [stdout]   |              ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `test_instruction`
[INFO] [stdout]   --> src/cpu/./tests/cpu_tests.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | macro_rules! test_instruction {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `carry`
[INFO] [stdout]    --> src/cpu/mod.rs:481:13
[INFO] [stdout]     |
[INFO] [stdout] 481 |         let carry = u8::from(self.registers.f.carry);
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_carry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boot_rom`
[INFO] [stdout]   --> src/memory.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn new(boot_rom: Option<Vec<u8>>, rom: Vec<u8>) -> Self {
[INFO] [stdout]    |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boot_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn run(mut cpu: CPU) {
[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: fields `pc`, `sp`, and `registers` are never read
[INFO] [stdout]    --> src/cpu/mod.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct CPU {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 146 |     pub pc: u16,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 147 |     pub sp: u16,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 148 |     pub registers: Registers,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cpu/mod.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl CPU {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn execute_instruction(&mut self, instruction: Instruction) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     fn add(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn adc(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn and(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     fn compare(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn dec(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     fn inc(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     fn or(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     fn sbc(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     fn sub(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     fn xor(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     fn add_hl(&mut self, value: u16) -> u16 {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     fn inc_16bit(&mut self, value: u16) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     fn dec_16bit(&mut self, value: u16) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn bit(&mut self, value: u8, bit_position: BitPosition) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 425 |     fn set(&mut self, value: u8, bit_position: BitPosition) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 429 |     fn swap(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     fn rl(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     fn rla(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     fn rlc(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     fn rlca(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn rr(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn rra(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     fn rrc(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 512 |     fn rrca(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 521 |     fn ccf(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 527 |     fn complement(&mut self, value: u8) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     fn scf(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArithmeticTarget` is never used
[INFO] [stdout]  --> src/cpu/instructions.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub enum ArithmeticTarget {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `IncDecTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum IncDecTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ADDHLTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum ADDHLTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PrefixTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum PrefixTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadByteTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:73:10
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub enum LoadByteTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadByteSource` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:84:10
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub enum LoadByteSource {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadWordTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:95:10
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub enum LoadWordTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadType` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub enum LoadType {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RSTVector` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum RSTVector {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Interrupts` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum Interrupts {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Instruction` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:125:10
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum Instruction {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/cpu/registers.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Registers {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  7 |     pub a: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout]  8 |     pub b: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout]  9 |     pub c: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout] 10 |     pub d: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout] 11 |     pub e: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout] 12 |     pub f: FlagsRegister,
[INFO] [stdout]    |         ^
[INFO] [stdout] 13 |     pub h: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout] 14 |     pub l: u8,
[INFO] [stdout]    |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_bc`, `set_bc`, `get_de`, `set_de`, `get_hl`, and `set_hl` are never used
[INFO] [stdout]   --> src/cpu/registers.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Registers {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn get_bc(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn set_bc(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_de(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn set_de(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn get_hl(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn set_hl(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_cpu` is never used
[INFO] [stdout]   --> src/cpu/./tests/cpu_tests.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn new_cpu() -> CPU {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_START` is never used
[INFO] [stdout]  --> src/memory.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const VRAM_START: usize = 0x8000;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const VRAM_END: usize = 0x9FFF;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const VRAM_SIZE: usize = VRAM_END - VRAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const EXTERNAL_RAM_START: usize = 0xA000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const EXTERNAL_RAM_END: usize = 0xBFFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const EXTERNAL_RAM_SIZE: usize = EXTERNAL_RAM_END - EXTERNAL_RAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_START` is never used
[INFO] [stdout]   --> src/memory.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const WRAM_1_START: usize = 0xC000;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_END` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const WRAM_1_END: usize = 0xCFFF;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const WRAM_1_SIZE: usize = WRAM_1_END - WRAM_1_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_START` is never used
[INFO] [stdout]   --> src/memory.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const WRAM_2_START: usize = 0xD000;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_END` is never used
[INFO] [stdout]   --> src/memory.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const WRAM_2_END: usize = 0xDFFF;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const WRAM_2_SIZE: usize = WRAM_2_END - WRAM_2_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ECHO_RAM_START: usize = 0xE000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ECHO_RAM_END: usize = 0xFDFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ECHO_RAM_SIZE: usize = ECHO_RAM_END - ECHO_RAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const OAM_START: usize = 0xFE00;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const OAM_END: usize = 0xFE9F;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const OAM_SIZE: usize = OAM_END - OAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_START` is never used
[INFO] [stdout]   --> src/memory.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const UNUSABLE_START: usize = 0xFEA0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_END` is never used
[INFO] [stdout]   --> src/memory.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const UNUSABLE_END: usize = 0xFEFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const UNUSABLE_SIZE: usize = UNUSABLE_END - UNUSABLE_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_START` is never used
[INFO] [stdout]   --> src/memory.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const IO_REGISTERS_START: usize = 0xFF00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_END` is never used
[INFO] [stdout]   --> src/memory.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const IO_REGISTERS_END: usize = 0xFF7F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const IO_REGISTERS_SIZE: usize = IO_REGISTERS_END - IO_REGISTERS_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gb_emulator` (bin "gb_emulator") due to 1 previous error; 51 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: constant `HRAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const HRAM_START: usize = 0xFF80;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HRAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const HRAM_END: usize = 0xFFEE;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HRAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const HRAM_SIZE: usize = HRAM_END - HRAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERRUPT_ENABLE` is never used
[INFO] [stdout]   --> src/memory.rs:45:11
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub const INTERRUPT_ENABLE: usize = 0xFFFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vblank`, `stat`, `timer`, `serial`, and `joypad` are never read
[INFO] [stdout]   --> src/memory.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct InterruptFlags {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 48 |     pub vblank: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 49 |     pub stat: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 50 |     pub timer: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub serial: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 52 |     pub joypad: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interrupt_flags` is never read
[INFO] [stdout]   --> src/memory.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct Memory {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 68 |     pub bus: [u8; 0xFFFF],
[INFO] [stdout] 69 |     pub interrupt_flags: InterruptFlags,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<&[u8], Infallible>
[INFO] [stdout]   --> src/memory.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             rom.as_slice().try_into().expect(
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `carry`
[INFO] [stdout]    --> src/cpu/mod.rs:481:13
[INFO] [stdout]     |
[INFO] [stdout] 481 |         let carry = u8::from(self.registers.f.carry);
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_carry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `boot_rom`
[INFO] [stdout]   --> src/memory.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub fn new(boot_rom: Option<Vec<u8>>, rom: Vec<u8>) -> Self {
[INFO] [stdout]    |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_boot_rom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn run(mut cpu: CPU) {
[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: fields `pc` and `sp` are never read
[INFO] [stdout]    --> src/cpu/mod.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct CPU {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] 146 |     pub pc: u16,
[INFO] [stdout]     |         ^^
[INFO] [stdout] 147 |     pub sp: u16,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `E`, `L`, and `HLI` are never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub enum ArithmeticTarget {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  8 |     E,
[INFO] [stdout]    |     ^
[INFO] [stdout]  9 |     H,
[INFO] [stdout] 10 |     L,
[INFO] [stdout]    |     ^
[INFO] [stdout] 11 |     HLI,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum IncDecTarget {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 15 |     A,
[INFO] [stdout] 16 |     B,
[INFO] [stdout]    |     ^
[INFO] [stdout] 17 |     C,
[INFO] [stdout]    |     ^
[INFO] [stdout] 18 |     D,
[INFO] [stdout]    |     ^
[INFO] [stdout] 19 |     E,
[INFO] [stdout]    |     ^
[INFO] [stdout] 20 |     H,
[INFO] [stdout]    |     ^
[INFO] [stdout] 21 |     L,
[INFO] [stdout]    |     ^
[INFO] [stdout] 22 |     BC,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 23 |     DE,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 24 |     HL,
[INFO] [stdout] 25 |     HLI,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 26 |     SP,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `SP` is never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum ADDHLTarget {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 33 |     SP,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `D`, `E`, and `HLI` are never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum PrefixTarget {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 40 |     D,
[INFO] [stdout]    |     ^
[INFO] [stdout] 41 |     E,
[INFO] [stdout]    |     ^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     HLI,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub enum LoadByteTarget {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 74 |     A,
[INFO] [stdout]    |     ^
[INFO] [stdout] 75 |     B,
[INFO] [stdout]    |     ^
[INFO] [stdout] 76 |     C,
[INFO] [stdout]    |     ^
[INFO] [stdout] 77 |     D,
[INFO] [stdout]    |     ^
[INFO] [stdout] 78 |     E,
[INFO] [stdout]    |     ^
[INFO] [stdout] 79 |     H,
[INFO] [stdout]    |     ^
[INFO] [stdout] 80 |     L,
[INFO] [stdout]    |     ^
[INFO] [stdout] 81 |     HLI,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/cpu/instructions.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub enum LoadByteSource {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 85 |     A,
[INFO] [stdout]    |     ^
[INFO] [stdout] 86 |     B,
[INFO] [stdout]    |     ^
[INFO] [stdout] 87 |     C,
[INFO] [stdout]    |     ^
[INFO] [stdout] 88 |     D,
[INFO] [stdout]    |     ^
[INFO] [stdout] 89 |     E,
[INFO] [stdout]    |     ^
[INFO] [stdout] 90 |     H,
[INFO] [stdout]    |     ^
[INFO] [stdout] 91 |     L,
[INFO] [stdout]    |     ^
[INFO] [stdout] 92 |     HLI,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `LoadWordTarget` is never used
[INFO] [stdout]   --> src/cpu/instructions.rs:95:10
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub enum LoadWordTarget {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BYTE` is never constructed
[INFO] [stdout]    --> src/cpu/instructions.rs:102:5
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub enum LoadType {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] 102 |     BYTE(LoadByteSource, LoadByteTarget),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RSTVector` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:106:10
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub enum RSTVector {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Interrupts` is never used
[INFO] [stdout]    --> src/cpu/instructions.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum Interrupts {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SBC`, `BIT`, and `LD` are never constructed
[INFO] [stdout]    --> src/cpu/instructions.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub enum Instruction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 134 |     SBC(ArithmeticTarget),
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     BIT(PrefixTarget, BitPosition),
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     LD(LoadType),
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_START` is never used
[INFO] [stdout]  --> src/memory.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const VRAM_START: usize = 0x8000;
[INFO] [stdout]   |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const VRAM_END: usize = 0x9FFF;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const VRAM_SIZE: usize = VRAM_END - VRAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const EXTERNAL_RAM_START: usize = 0xA000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const EXTERNAL_RAM_END: usize = 0xBFFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXTERNAL_RAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const EXTERNAL_RAM_SIZE: usize = EXTERNAL_RAM_END - EXTERNAL_RAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_START` is never used
[INFO] [stdout]   --> src/memory.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const WRAM_1_START: usize = 0xC000;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_END` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const WRAM_1_END: usize = 0xCFFF;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_1_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const WRAM_1_SIZE: usize = WRAM_1_END - WRAM_1_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_START` is never used
[INFO] [stdout]   --> src/memory.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const WRAM_2_START: usize = 0xD000;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_END` is never used
[INFO] [stdout]   --> src/memory.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const WRAM_2_END: usize = 0xDFFF;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_2_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const WRAM_2_SIZE: usize = WRAM_2_END - WRAM_2_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ECHO_RAM_START: usize = 0xE000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ECHO_RAM_END: usize = 0xFDFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ECHO_RAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ECHO_RAM_SIZE: usize = ECHO_RAM_END - ECHO_RAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const OAM_START: usize = 0xFE00;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const OAM_END: usize = 0xFE9F;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const OAM_SIZE: usize = OAM_END - OAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_START` is never used
[INFO] [stdout]   --> src/memory.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const UNUSABLE_START: usize = 0xFEA0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_END` is never used
[INFO] [stdout]   --> src/memory.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const UNUSABLE_END: usize = 0xFEFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNUSABLE_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const UNUSABLE_SIZE: usize = UNUSABLE_END - UNUSABLE_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_START` is never used
[INFO] [stdout]   --> src/memory.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const IO_REGISTERS_START: usize = 0xFF00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_END` is never used
[INFO] [stdout]   --> src/memory.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const IO_REGISTERS_END: usize = 0xFF7F;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IO_REGISTERS_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const IO_REGISTERS_SIZE: usize = IO_REGISTERS_END - IO_REGISTERS_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HRAM_START` is never used
[INFO] [stdout]   --> src/memory.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const HRAM_START: usize = 0xFF80;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HRAM_END` is never used
[INFO] [stdout]   --> src/memory.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const HRAM_END: usize = 0xFFEE;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HRAM_SIZE` is never used
[INFO] [stdout]   --> src/memory.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const HRAM_SIZE: usize = HRAM_END - HRAM_START + 1;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INTERRUPT_ENABLE` is never used
[INFO] [stdout]   --> src/memory.rs:45:11
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub const INTERRUPT_ENABLE: usize = 0xFFFF;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vblank`, `stat`, `timer`, `serial`, and `joypad` are never read
[INFO] [stdout]   --> src/memory.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct InterruptFlags {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 48 |     pub vblank: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 49 |     pub stat: bool,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 50 |     pub timer: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 51 |     pub serial: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 52 |     pub joypad: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interrupt_flags` is never read
[INFO] [stdout]   --> src/memory.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct Memory {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] 68 |     pub bus: [u8; 0xFFFF],
[INFO] [stdout] 69 |     pub interrupt_flags: InterruptFlags,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this type will no longer be must used: Result<&[u8], Infallible>
[INFO] [stdout]   --> src/memory.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             rom.as_slice().try_into().expect(
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-D unmustuse-in-always-ok`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `gb_emulator` (bin "gb_emulator" test) due to 1 previous error; 45 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "877c7bb2bb6161e8182218fca1fdea12d58352ea6785cc7e0865394b77df8309", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "877c7bb2bb6161e8182218fca1fdea12d58352ea6785cc7e0865394b77df8309", kill_on_drop: false }`
[INFO] [stdout] 877c7bb2bb6161e8182218fca1fdea12d58352ea6785cc7e0865394b77df8309
