[INFO] cloning repository https://github.com/Gabriel-Axe/Chip8
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Gabriel-Axe/Chip8" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGabriel-Axe%2FChip8", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGabriel-Axe%2FChip8'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d764e6d615c2e8989e2a88425d0699da5ef4403d
[INFO] checking Gabriel-Axe/Chip8 against 012c0bd4d516934012c9a1ecb26e9eb283d2ed75 for pr-133502-29
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FGabriel-Axe%2FChip8" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Gabriel-Axe/Chip8
[INFO] finished tweaking git repo https://github.com/Gabriel-Axe/Chip8
[INFO] tweaked toml for git repo https://github.com/Gabriel-Axe/Chip8 written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Gabriel-Axe/Chip8 on toolchain 012c0bd4d516934012c9a1ecb26e9eb283d2ed75
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012c0bd4d516934012c9a1ecb26e9eb283d2ed75" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Gabriel-Axe/Chip8 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" "+012c0bd4d516934012c9a1ecb26e9eb283d2ed75" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded pixels v0.17.2
[INFO] [stderr]   Downloaded wgpu-core-deps-emscripten v29.0.4
[INFO] [stderr]   Downloaded ultraviolet v0.10.0
[INFO] [stderr]   Downloaded minifb v0.28.0
[INFO] [stderr]   Downloaded sdl2 v0.38.0
[INFO] [stderr]   Downloaded sdl2-sys v0.38.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331
[INFO] running `Command { std: "docker" "start" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331" "/opt/rustwide/cargo-home/bin/cargo" "+012c0bd4d516934012c9a1ecb26e9eb283d2ed75" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331" "/opt/rustwide/cargo-home/bin/cargo" "+012c0bd4d516934012c9a1ecb26e9eb283d2ed75" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]    Compiling cfg_aliases v0.2.2
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling xml-rs v0.8.28
[INFO] [stderr]     Checking foldhash v0.2.0
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling ash v0.38.0+1.3.281
[INFO] [stderr]     Checking bit-vec v0.9.1
[INFO] [stderr]    Compiling naga v29.0.4
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking bit-set v0.9.1
[INFO] [stderr]     Checking spirv v0.4.0+sdk-1.4.341.0
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking dlib v0.5.3
[INFO] [stderr]     Checking codespan-reporting v0.13.1
[INFO] [stderr]     Checking unicode-ident v1.0.24
[INFO] [stderr]     Checking hexf-parse v0.2.1
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]    Compiling wgpu-hal v29.0.4
[INFO] [stderr]     Checking presser v0.3.1
[INFO] [stderr]     Checking renderdoc-sys v1.1.0
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]     Checking glow v0.17.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]    Compiling wgpu-core v29.0.4
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.10
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking aho-corasick v1.1.5
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling cc v1.4.2
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling wgpu v29.0.4
[INFO] [stderr]     Checking ordered-float v5.3.0
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking cpufeatures v0.3.0
[INFO] [stderr]     Checking jiff-core v0.1.0
[INFO] [stderr]     Checking xcursor v0.3.11
[INFO] [stderr]     Checking fastrand v2.5.0
[INFO] [stderr]     Checking chacha20 v0.10.1
[INFO] [stderr]     Checking pollster v0.4.0
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking rand v0.10.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling minifb v0.28.0
[INFO] [stderr]     Checking jiff v0.2.35
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking env_filter v2.0.0
[INFO] [stderr]     Checking env_logger v0.11.11
[INFO] [stderr]    Compiling bytemuck_derive v1.11.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.55
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking bytemuck v1.25.2
[INFO] [stderr]     Checking wgpu-types v29.0.4
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking ultraviolet v0.10.0
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking gpu-allocator v0.28.0
[INFO] [stderr]     Checking wgpu-naga-bridge v29.0.4
[INFO] [stderr]     Checking wgpu-core-deps-windows-linux-android v29.0.4
[INFO] [stderr]     Checking pixels v0.17.2
[INFO] [stderr]     Checking Chip8 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `disassembler::Disassembler`
[INFO] [stdout]  --> src/main.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{chip8::Chip8, disassembler::Disassembler};
[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: `any::Any`, `fmt::format`, `fs`, `io::Empty`, `num::ParseFloatError`, `path::PathBuf`, `thread::sleep`, and `time::Duration`
[INFO] [stdout]  --> src/chip8.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{any::Any, fmt::format, fs, io::Empty, num::ParseFloatError, path::PathBuf, thread::sleep, time::Duration};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^^^^^^  ^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PROGRAM_START_OFFSET`, `join_2_nibbles_into_u8`, `join_3_nibbles_into_u8`, and `self`
[INFO] [stdout]  --> src/chip8.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...::{self, DebugPrinter}, display::Display, file_handler::RomHandler, memory::{Memory, PROGRAM_START_OFFSET}, opcode_handler::Instruction::{self, ADD_VALUE_TO_REGISTER_7, CLEAR_SCREEN_0, DRAW_D, JUMP_1, LOAD_INDEX_REGISTER_WITH_VALUE_A, LOAD_REGISTER_VX_WITH_VALUE_6, UNKNOWN}, util::{join_2_nibbles_into_u8, join_3_nibbles_into_u8}};
[INFO] [stdout]   |       ^^^^                                                                              ^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key0`, `WindowOptions`, and `Window`
[INFO] [stdout]  --> src/chip8.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use minifb::{Key::{self, Key0}, Window, WindowOptions};
[INFO] [stdout]   |                          ^^^^   ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `rng`
[INFO] [stdout]  --> src/chip8.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, rng};
[INFO] [stdout]   |            ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/chip8.rs:75:35
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 let stored: u16 = (temp | *instruction as u16);
[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] 75 -                 let stored: u16 = (temp | *instruction as u16);
[INFO] [stdout] 75 +                 let stored: u16 = temp | *instruction as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chip8::Chip8`
[INFO] [stdout]  --> src/cpu.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{chip8::Chip8, debug_printer::DebugPrinter, memory::Memory, register::{Register, RegisterI}};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt::format` and `str::FromStr`
[INFO] [stdout]  --> src/display.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::format, str::FromStr};
[INFO] [stdout]   |           ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PROGRAM_START_OFFSET`, `Register`, and `from_u8_to_bin_color`
[INFO] [stdout]  --> src/display.rs:5:69
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...memory::{Memory, PROGRAM_START_OFFSET}, register::{Register, RegisterI}, util::{from_u8_rgb, from_u8_to_bin_color}};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/display.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | const BUFFER_SIZE: usize = (BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize);
[INFO] [stdout]    |                            ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 29 - const BUFFER_SIZE: usize = (BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize);
[INFO] [stdout] 29 + const BUFFER_SIZE: usize = BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/display.rs:214:33
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let mut temp_y: usize = (BUFFER_WIDTH as usize * (y as usize));
[INFO] [stdout]     |                                 ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 214 -         let mut temp_y: usize = (BUFFER_WIDTH as usize * (y as usize));
[INFO] [stdout] 214 +         let mut temp_y: usize = BUFFER_WIDTH as usize * (y as usize);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/display.rs:274:58
[INFO] [stdout]     |
[INFO] [stdout] 274 |             let colided = self.draw_line_from_u8(x_data, (y_data + i as u8), mem_val);
[INFO] [stdout]     |                                                          ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -             let colided = self.draw_line_from_u8(x_data, (y_data + i as u8), mem_val);
[INFO] [stdout] 274 +             let colided = self.draw_line_from_u8(x_data, y_data + i as u8, mem_val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CLEAR_SCREEN_0` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     CLEAR_SCREEN_0,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClearScreen0`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `JUMP_1` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     JUMP_1 { nnn: u16 },
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to upper camel case: `Jump1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LOAD_REGISTER_VX_WITH_VALUE_6` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     LOAD_REGISTER_VX_WITH_VALUE_6 { x: u8, value: u8 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `LoadRegisterVxWithValue6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LOAD_INDEX_REGISTER_WITH_VALUE_A` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     LOAD_INDEX_REGISTER_WITH_VALUE_A { value: u16 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `LoadIndexRegisterWithValueA`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ADD_VALUE_TO_REGISTER_7` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ADD_VALUE_TO_REGISTER_7 { x: u8, value: u8 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AddValueToRegister7`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DRAW_D` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DRAW_D { x: u8, y: u8, n: u8 },
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to upper camel case: `DrawD`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_rom`, `self`, and `util::mirror_bits`
[INFO] [stdout]  --> src/file_handler.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{load_rom, memory::{self, Memory, PROGRAM_START_OFFSET}, util::mirror_bits};
[INFO] [stdout]   |             ^^^^^^^^           ^^^^                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `disassembler::Disassembler`
[INFO] [stdout]  --> src/main.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{chip8::Chip8, disassembler::Disassembler};
[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: `any::Any`, `fmt::format`, `fs`, `io::Empty`, `num::ParseFloatError`, `path::PathBuf`, `thread::sleep`, and `time::Duration`
[INFO] [stdout]  --> src/chip8.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{any::Any, fmt::format, fs, io::Empty, num::ParseFloatError, path::PathBuf, thread::sleep, time::Duration};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^^^^^^  ^^  ^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PROGRAM_START_OFFSET`, `join_2_nibbles_into_u8`, `join_3_nibbles_into_u8`, and `self`
[INFO] [stdout]  --> src/chip8.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | ...::{self, DebugPrinter}, display::Display, file_handler::RomHandler, memory::{Memory, PROGRAM_START_OFFSET}, opcode_handler::Instruction::{self, ADD_VALUE_TO_REGISTER_7, CLEAR_SCREEN_0, DRAW_D, JUMP_1, LOAD_INDEX_REGISTER_WITH_VALUE_A, LOAD_REGISTER_VX_WITH_VALUE_6, UNKNOWN}, util::{join_2_nibbles_into_u8, join_3_nibbles_into_u8}};
[INFO] [stdout]   |       ^^^^                                                                              ^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Key0`, `WindowOptions`, and `Window`
[INFO] [stdout]  --> src/chip8.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use minifb::{Key::{self, Key0}, Window, WindowOptions};
[INFO] [stdout]   |                          ^^^^   ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `rng`
[INFO] [stdout]  --> src/chip8.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, rng};
[INFO] [stdout]   |            ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/chip8.rs:75:35
[INFO] [stdout]    |
[INFO] [stdout] 75 |                 let stored: u16 = (temp | *instruction as u16);
[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] 75 -                 let stored: u16 = (temp | *instruction as u16);
[INFO] [stdout] 75 +                 let stored: u16 = temp | *instruction as u16;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chip8::Chip8`
[INFO] [stdout]  --> src/cpu.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{chip8::Chip8, debug_printer::DebugPrinter, memory::Memory, register::{Register, RegisterI}};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt::format` and `str::FromStr`
[INFO] [stdout]  --> src/display.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::format, str::FromStr};
[INFO] [stdout]   |           ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PROGRAM_START_OFFSET`, `Register`, and `from_u8_to_bin_color`
[INFO] [stdout]  --> src/display.rs:5:69
[INFO] [stdout]   |
[INFO] [stdout] 5 | ...memory::{Memory, PROGRAM_START_OFFSET}, register::{Register, RegisterI}, util::{from_u8_rgb, from_u8_to_bin_color}};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^              ^^^^^^^^                                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/display.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 | const BUFFER_SIZE: usize = (BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize);
[INFO] [stdout]    |                            ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 29 - const BUFFER_SIZE: usize = (BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize);
[INFO] [stdout] 29 + const BUFFER_SIZE: usize = BUFFER_WIDTH as usize * BUFFER_HEIGHT as usize;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/display.rs:214:33
[INFO] [stdout]     |
[INFO] [stdout] 214 |         let mut temp_y: usize = (BUFFER_WIDTH as usize * (y as usize));
[INFO] [stdout]     |                                 ^                                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 214 -         let mut temp_y: usize = (BUFFER_WIDTH as usize * (y as usize));
[INFO] [stdout] 214 +         let mut temp_y: usize = BUFFER_WIDTH as usize * (y as usize);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/display.rs:274:58
[INFO] [stdout]     |
[INFO] [stdout] 274 |             let colided = self.draw_line_from_u8(x_data, (y_data + i as u8), mem_val);
[INFO] [stdout]     |                                                          ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 274 -             let colided = self.draw_line_from_u8(x_data, (y_data + i as u8), mem_val);
[INFO] [stdout] 274 +             let colided = self.draw_line_from_u8(x_data, y_data + i as u8, mem_val);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `CLEAR_SCREEN_0` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     CLEAR_SCREEN_0,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `ClearScreen0`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `JUMP_1` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     JUMP_1 { nnn: u16 },
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to upper camel case: `Jump1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LOAD_REGISTER_VX_WITH_VALUE_6` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     LOAD_REGISTER_VX_WITH_VALUE_6 { x: u8, value: u8 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `LoadRegisterVxWithValue6`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LOAD_INDEX_REGISTER_WITH_VALUE_A` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     LOAD_INDEX_REGISTER_WITH_VALUE_A { value: u16 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `LoadIndexRegisterWithValueA`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ADD_VALUE_TO_REGISTER_7` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     ADD_VALUE_TO_REGISTER_7 { x: u8, value: u8 },
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `AddValueToRegister7`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `DRAW_D` should have an upper camel case name
[INFO] [stdout]  --> src/opcode_handler.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     DRAW_D { x: u8, y: u8, n: u8 },
[INFO] [stdout]   |     ^^^^^^ help: convert the identifier to upper camel case: `DrawD`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_rom`, `self`, and `util::mirror_bits`
[INFO] [stdout]  --> src/file_handler.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{load_rom, memory::{self, Memory, PROGRAM_START_OFFSET}, util::mirror_bits};
[INFO] [stdout]   |             ^^^^^^^^           ^^^^                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `temp`
[INFO] [stdout]   --> src/chip8.rs:77:21
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 let temp: u8 = 0;
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_temp`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/chip8.rs:122:35
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn match_instruction_8(&self, instruction: u8) -> Option<()> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/chip8.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn read_instruction(&mut self, mut instruction: &u16) {
[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: `conflict`
[INFO] [stdout]    --> src/chip8.rs:179:21
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 let conflict = self.display.draw_sprite(&self.memory, &self.cpu, &mut self.cpu.get_regI_copy(), x, y, n);
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conflict`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cpu.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut cur_addr = self.get_pc_address();
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `register_data` is never read
[INFO] [stdout]    --> src/cpu.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |         register_data = data + value;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `register_data` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut register_data = self.get_register_data(reg_id);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_register_data` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `register_data` is never read
[INFO] [stdout]    --> src/cpu.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |         register_data = result_val;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_data` is never read
[INFO] [stdout]    --> src/cpu.rs:186:32
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let mut new_data: u8 = 0;
[INFO] [stdout]     |                                ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 196 |             new_data = temp;
[INFO] [stdout]     |             --------------- `new_data` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/cpu.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let val = self.dt_reg.data;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `register`
[INFO] [stdout]    --> src/cpu.rs:213:13
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let register = self.set_register_data(reg_id, self.dt_reg.data);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hundreds`
[INFO] [stdout]    --> src/cpu.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |         let hundreds = (val / 100) % 10;
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hundreds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tens`
[INFO] [stdout]    --> src/cpu.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let tens = (val / 10) % 10;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_tens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `units`
[INFO] [stdout]    --> src/cpu.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let units = val % 10;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_units`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `vf` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:397:13
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let mut vf = self.VF;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_vf` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `vx` is never read
[INFO] [stdout]    --> src/cpu.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         vx = val;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `vf` is never read
[INFO] [stdout]    --> src/cpu.rs:400:13
[INFO] [stdout]     |
[INFO] [stdout] 400 |             vf.data = 1;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/display.rs:55:37
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn convert_bool_to_color(&self, mut vec: &Vec<bool>) -> Vec<u32> {
[INFO] [stdout]    |                                     ----^^^
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/display.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut buffer: Vec<u32> = vec![0; BUFFER_SIZE];
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `true_val`
[INFO] [stdout]    --> src/display.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let true_val = sprite_val;
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_true_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pot_colide` is never read
[INFO] [stdout]    --> src/display.rs:147:34
[INFO] [stdout]     |
[INFO] [stdout] 147 |             let mut pot_colide = false;
[INFO] [stdout]     |                                  ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 155 |             pot_colide = self.draw_pixel(x + i, y);
[INFO] [stdout]     |             -------------------------------------- `pot_colide` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/display.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |             let x = BUFFER_WIDTH - x;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/display.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |             let y = BUFFER_WIDTH - y;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old`
[INFO] [stdout]    --> src/display.rs:228:13
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let old = self.buffer[loc as usize];
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_old`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/display.rs:260:13
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut buffer = self.buffer.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffer`
[INFO] [stdout]    --> src/display.rs:260:13
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut buffer = self.buffer.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/file_handler.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let mut path_buf = PathBuf::from(existent_path.clone());
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/file_handler.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |         for (mut addr, instruction) in 
[INFO] [stdout]    |              ----^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Disassembler` is never constructed
[INFO] [stdout]  --> src/disassembler.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Disassembler {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `read_instructions` and `output_to_file` are never used
[INFO] [stdout]   --> src/disassembler.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Disassembler {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout]  7 |
[INFO] [stdout]  8 |     pub fn read_instructions(rom: Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn output_to_file(binary_contents: Vec<u8>) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intructions_from_file`, `match_instruction_8`, and `get_nibble` are never used
[INFO] [stdout]    --> src/chip8.rs:67:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Chip8 {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     fn get_intructions_from_file(&self, rom: Vec<u8>) -> Vec<u16> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn match_instruction_8(&self, instruction: u8) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn get_nibble(&self, instruction: &u16, position: u8) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sp`, `VF`, `dt_reg`, and `st_reg` are never read
[INFO] [stdout]   --> src/cpu.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct CPU {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sp: u8,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     VF: Register,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     dt_reg: Register,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     st_reg: Register,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cpu.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl CPU {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn set_vf_value(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn get_vf_value(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn jump_to_address(&mut self, address: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn jump_offset_by_v0(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn skip_instruction_if_equal(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn skip_instruction_if_nequal(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn set_value_of_pc(&mut self, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn get_pc_address(&self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn value_equals_register_value(&mut self, compared_val: u8, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn compare_registers_values(&mut self, reg_id_1: u8, reg_id_2: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn value_not_equals_register_value(&mut self, compared_val: u8, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn byte_skip_instruction(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn add_byte_operation(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn and_number_to_random_value(&mut self, reg_id: u8, and_val: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     fn store_from_register_x_into_y(&mut self, reg_x_id: u8, reg_y_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn set_delay_timer_value_at_vx(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn set_delay_timer_value(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn set_sound_timer_value(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn call_address(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn increment_vx_to_i(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn store_bcd_of_vx(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn jump_to_machine_code(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn set_program_counter_to_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn reset_pc(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn increment_sp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn decrement_sp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn get_sp(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn get_pc(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn or_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn and_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn xor_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn add_values(&mut self, x: u8, y: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn sub_values(&mut self, x: u8, y: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 412 |     pub fn store_vx_in_delay_timer(&mut self, reg_id: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn store_vx_in_sound_timer(&mut self, reg_id: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn return_from_subroutine(&mut self, memory: Memory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn nand(&self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keys` is never read
[INFO] [stdout]   --> src/display.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Display {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     keys: Vec<u8>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_bool_to_color`, `draw_h_line`, `draw_v_line`, `draw_square`, and `get_keys_pressed` are never used
[INFO] [stdout]    --> src/display.rs:55:8
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Display {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn convert_bool_to_color(&self, mut vec: &Vec<bool>) -> Vec<u32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn draw_h_line(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn draw_v_line(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn draw_square(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_keys_pressed(&self) -> Vec<Key> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stack` is never read
[INFO] [stdout]  --> src/memory.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Memory {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     data: [u8; 4096],
[INFO] [stdout] 5 |     pub stack: [u8; 16],
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `log_contents` and `size` are never used
[INFO] [stdout]   --> src/memory.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Memory {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn log_contents(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn size(&self) -> usize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DelayTimerRegister` is never constructed
[INFO] [stdout]   --> src/register.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct DelayTimerRegister {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundTimerRegister` is never constructed
[INFO] [stdout]   --> src/register.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct SoundTimerRegister {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_16_binary` is never used
[INFO] [stdout]  --> src/util.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn print_bytes_in_16_binary(bytes: &Vec<u16>) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mirror_bits` is never used
[INFO] [stdout]  --> src/util.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub fn mirror_bits(mut val: u8) -> u8 {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_binary` is never used
[INFO] [stdout]   --> src/util.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn print_bytes_in_binary(bytes: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_hex` is never used
[INFO] [stdout]   --> src/util.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn print_bytes_in_hex(rom: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_deciaml` is never used
[INFO] [stdout]   --> src/util.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn print_bytes_in_deciaml(bytes: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_bytes_u8_to_u16` is never used
[INFO] [stdout]   --> src/util.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn convert_bytes_u8_to_u16(bytes: &[u8]) -> Result<Vec<u16>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `join_2_nibbles_into_u8` is never used
[INFO] [stdout]   --> src/util.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn join_2_nibbles_into_u8(nibble_1: u8, nibble_2: u8) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `temp`
[INFO] [stdout]   --> src/chip8.rs:77:21
[INFO] [stdout]    |
[INFO] [stdout] 77 |                 let temp: u8 = 0;
[INFO] [stdout]    |                     ^^^^ help: if this is intentional, prefix it with an underscore: `_temp`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `join_3_nibbles_into_u8` is never used
[INFO] [stdout]   --> src/util.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn join_3_nibbles_into_u8(nibble_1: u8, nibble_2: u8, nibble_3: u8) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_u32_vec_from_bool` is never used
[INFO] [stdout]   --> src/util.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn create_u32_vec_from_bool(bool_vec: Vec<bool>) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_u8_to_bin_color` is never used
[INFO] [stdout]   --> src/util.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn from_u8_to_bin_color(val: u8) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]    --> src/chip8.rs:122:35
[INFO] [stdout]     |
[INFO] [stdout] 122 |     fn match_instruction_8(&self, instruction: u8) -> Option<()> {
[INFO] [stdout]     |                                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `VF` should have a snake case name
[INFO] [stdout]   --> src/cpu.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     VF: Register,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case (notice the capitalization): `vf`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regI` should have a snake case name
[INFO] [stdout]   --> src/cpu.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     regI: RegisterI,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `reg_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:311:32
[INFO] [stdout]     |
[INFO] [stdout] 311 |             if reg_id > len || 0 > reg_id {
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:328:45
[INFO] [stdout]     |
[INFO] [stdout] 328 |         if reg_id > self.registers.len() || 0 > reg_id {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout] 386 |         if (vx_data + vy_data) > 255 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_regI_copy` should have a snake case name
[INFO] [stdout]    --> src/cpu.rs:469:12
[INFO] [stdout]     |
[INFO] [stdout] 469 |     pub fn get_regI_copy(&self) -> RegisterI {
[INFO] [stdout]     |            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_reg_i_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/display.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 |         if x < 0 || x > BUFFER_WIDTH as u8{
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/display.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 208 |         if y < 0 || x > BUFFER_WIDTH as u8{
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/chip8.rs:151:36
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn read_instruction(&mut self, mut instruction: &u16) {
[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: `conflict`
[INFO] [stdout]    --> src/chip8.rs:179:21
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 let conflict = self.display.draw_sprite(&self.memory, &self.cpu, &mut self.cpu.get_regI_copy(), x, y, n);
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_conflict`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cpu.rs:74:13
[INFO] [stdout]    |
[INFO] [stdout] 74 |         let mut cur_addr = self.get_pc_address();
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `register_data` is never read
[INFO] [stdout]    --> src/cpu.rs:166:9
[INFO] [stdout]     |
[INFO] [stdout] 166 |         register_data = data + value;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `register_data` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut register_data = self.get_register_data(reg_id);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_register_data` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `register_data` is never read
[INFO] [stdout]    --> src/cpu.rs:175:9
[INFO] [stdout]     |
[INFO] [stdout] 175 |         register_data = result_val;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_data` is never read
[INFO] [stdout]    --> src/cpu.rs:186:32
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let mut new_data: u8 = 0;
[INFO] [stdout]     |                                ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 196 |             new_data = temp;
[INFO] [stdout]     |             --------------- `new_data` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/cpu.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let val = self.dt_reg.data;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `register`
[INFO] [stdout]    --> src/cpu.rs:213:13
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let register = self.set_register_data(reg_id, self.dt_reg.data);
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_register`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hundreds`
[INFO] [stdout]    --> src/cpu.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |         let hundreds = (val / 100) % 10;
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hundreds`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tens`
[INFO] [stdout]    --> src/cpu.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let tens = (val / 10) % 10;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_tens`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `units`
[INFO] [stdout]    --> src/cpu.rs:246:13
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let units = val % 10;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_units`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/display.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |         self.window.update_with_buffer(&self.buffer, BUFFER_WIDTH as usize, BUFFER_HEIGHT as usize);
[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] 222 |         let _ = self.window.update_with_buffer(&self.buffer, BUFFER_WIDTH as usize, BUFFER_HEIGHT as usize);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `regI` should have a snake case name
[INFO] [stdout]    --> src/display.rs:245:63
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn draw_sprite(&mut self, memory: &Memory, cpu: &CPU, regI: &mut RegisterI, x: u8, y: u8, n_bytes: u8) {
[INFO] [stdout]     |                                                               ^^^^ help: convert the identifier to snake case: `reg_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `vf` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:397:13
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let mut vf = self.VF;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_vf` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `vx` is never read
[INFO] [stdout]    --> src/cpu.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         vx = val;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `vf` is never read
[INFO] [stdout]    --> src/cpu.rs:400:13
[INFO] [stdout]     |
[INFO] [stdout] 400 |             vf.data = 1;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/display.rs:55:37
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn convert_bool_to_color(&self, mut vec: &Vec<bool>) -> Vec<u32> {
[INFO] [stdout]    |                                     ----^^^
[INFO] [stdout]    |                                     |
[INFO] [stdout]    |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/display.rs:91:13
[INFO] [stdout]    |
[INFO] [stdout] 91 |         let mut buffer: Vec<u32> = vec![0; BUFFER_SIZE];
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `true_val`
[INFO] [stdout]    --> src/display.rs:140:13
[INFO] [stdout]     |
[INFO] [stdout] 140 |         let true_val = sprite_val;
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_true_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pot_colide` is never read
[INFO] [stdout]    --> src/display.rs:147:34
[INFO] [stdout]     |
[INFO] [stdout] 147 |             let mut pot_colide = false;
[INFO] [stdout]     |                                  ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 155 |             pot_colide = self.draw_pixel(x + i, y);
[INFO] [stdout]     |             -------------------------------------- `pot_colide` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/display.rs:206:17
[INFO] [stdout]     |
[INFO] [stdout] 206 |             let x = BUFFER_WIDTH - x;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/display.rs:209:17
[INFO] [stdout]     |
[INFO] [stdout] 209 |             let y = BUFFER_WIDTH - y;
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old`
[INFO] [stdout]    --> src/display.rs:228:13
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let old = self.buffer[loc as usize];
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_old`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/display.rs:260:13
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut buffer = self.buffer.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffer`
[INFO] [stdout]    --> src/display.rs:260:13
[INFO] [stdout]     |
[INFO] [stdout] 260 |         let mut buffer = self.buffer.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_buffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/file_handler.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let mut path_buf = PathBuf::from(existent_path.clone());
[INFO] [stdout]    |             ----^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/file_handler.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 |         for (mut addr, instruction) in 
[INFO] [stdout]    |              ----^^^^
[INFO] [stdout]    |              |
[INFO] [stdout]    |              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Disassembler` is never constructed
[INFO] [stdout]  --> src/disassembler.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Disassembler {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `read_instructions` and `output_to_file` are never used
[INFO] [stdout]   --> src/disassembler.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Disassembler {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout]  7 |
[INFO] [stdout]  8 |     pub fn read_instructions(rom: Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn output_to_file(binary_contents: Vec<u8>) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_intructions_from_file`, `match_instruction_8`, and `get_nibble` are never used
[INFO] [stdout]    --> src/chip8.rs:67:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl Chip8 {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     fn get_intructions_from_file(&self, rom: Vec<u8>) -> Vec<u16> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn match_instruction_8(&self, instruction: u8) -> Option<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn get_nibble(&self, instruction: &u16, position: u8) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sp`, `VF`, `dt_reg`, and `st_reg` are never read
[INFO] [stdout]   --> src/cpu.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct CPU {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     sp: u8,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     VF: Register,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     dt_reg: Register,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     st_reg: Register,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/cpu.rs:52:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl CPU {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn set_vf_value(&mut self, active: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn get_vf_value(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn jump_to_address(&mut self, address: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn jump_offset_by_v0(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn skip_instruction_if_equal(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     fn skip_instruction_if_nequal(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn set_value_of_pc(&mut self, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     fn get_pc_address(&self) -> u16 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn value_equals_register_value(&mut self, compared_val: u8, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn compare_registers_values(&mut self, reg_id_1: u8, reg_id_2: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn value_not_equals_register_value(&mut self, compared_val: u8, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn byte_skip_instruction(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn add_byte_operation(&mut self, reg_id: u8, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn and_number_to_random_value(&mut self, reg_id: u8, and_val: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     fn store_from_register_x_into_y(&mut self, reg_x_id: u8, reg_y_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn set_delay_timer_value_at_vx(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     fn set_delay_timer_value(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn set_sound_timer_value(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn call_address(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn increment_vx_to_i(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn store_bcd_of_vx(&mut self, reg_id: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn jump_to_machine_code(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn set_program_counter_to_value(&mut self, value: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn reset_pc(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn increment_sp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn decrement_sp(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn get_sp(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn get_pc(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 368 |     pub fn or_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 372 |     pub fn and_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn xor_values(self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn add_values(&mut self, x: u8, y: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn sub_values(&mut self, x: u8, y: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 412 |     pub fn store_vx_in_delay_timer(&mut self, reg_id: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn store_vx_in_sound_timer(&mut self, reg_id: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     pub fn return_from_subroutine(&mut self, memory: Memory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     fn nand(&self, x: u8, y: u8) -> u8 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keys` is never read
[INFO] [stdout]   --> src/display.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct Display {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     keys: Vec<u8>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `convert_bool_to_color`, `draw_h_line`, `draw_v_line`, `draw_square`, and `get_keys_pressed` are never used
[INFO] [stdout]    --> src/display.rs:55:8
[INFO] [stdout]     |
[INFO] [stdout]  44 | impl Display {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn convert_bool_to_color(&self, mut vec: &Vec<bool>) -> Vec<u32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn draw_h_line(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn draw_v_line(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn draw_square(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn get_keys_pressed(&self) -> Vec<Key> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stack` is never read
[INFO] [stdout]  --> src/memory.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Memory {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 4 |     data: [u8; 4096],
[INFO] [stdout] 5 |     pub stack: [u8; 16],
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `log_contents` and `size` are never used
[INFO] [stdout]   --> src/memory.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Memory {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn log_contents(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn size(&self) -> usize {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DelayTimerRegister` is never constructed
[INFO] [stdout]   --> src/register.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | struct DelayTimerRegister {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SoundTimerRegister` is never constructed
[INFO] [stdout]   --> src/register.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | struct SoundTimerRegister {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_16_binary` is never used
[INFO] [stdout]  --> src/util.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn print_bytes_in_16_binary(bytes: &Vec<u16>) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mirror_bits` is never used
[INFO] [stdout]  --> src/util.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub fn mirror_bits(mut val: u8) -> u8 {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_binary` is never used
[INFO] [stdout]   --> src/util.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn print_bytes_in_binary(bytes: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_hex` is never used
[INFO] [stdout]   --> src/util.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn print_bytes_in_hex(rom: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_bytes_in_deciaml` is never used
[INFO] [stdout]   --> src/util.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn print_bytes_in_deciaml(bytes: &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_bytes_u8_to_u16` is never used
[INFO] [stdout]   --> src/util.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn convert_bytes_u8_to_u16(bytes: &[u8]) -> Result<Vec<u16>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `join_2_nibbles_into_u8` is never used
[INFO] [stdout]   --> src/util.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn join_2_nibbles_into_u8(nibble_1: u8, nibble_2: u8) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `join_3_nibbles_into_u8` is never used
[INFO] [stdout]   --> src/util.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn join_3_nibbles_into_u8(nibble_1: u8, nibble_2: u8, nibble_3: u8) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_u32_vec_from_bool` is never used
[INFO] [stdout]   --> src/util.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn create_u32_vec_from_bool(bool_vec: Vec<bool>) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_u8_to_bin_color` is never used
[INFO] [stdout]   --> src/util.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn from_u8_to_bin_color(val: u8) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `VF` should have a snake case name
[INFO] [stdout]   --> src/cpu.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     VF: Register,
[INFO] [stdout]    |     ^^ help: convert the identifier to snake case (notice the capitalization): `vf`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `regI` should have a snake case name
[INFO] [stdout]   --> src/cpu.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 |     regI: RegisterI,
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `reg_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:311:32
[INFO] [stdout]     |
[INFO] [stdout] 311 |             if reg_id > len || 0 > reg_id {
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:328:45
[INFO] [stdout]     |
[INFO] [stdout] 328 |         if reg_id > self.registers.len() || 0 > reg_id {
[INFO] [stdout]     |                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/cpu.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout] 386 |         if (vx_data + vy_data) > 255 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_regI_copy` should have a snake case name
[INFO] [stdout]    --> src/cpu.rs:469:12
[INFO] [stdout]     |
[INFO] [stdout] 469 |     pub fn get_regI_copy(&self) -> RegisterI {
[INFO] [stdout]     |            ^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_reg_i_copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/display.rs:205:12
[INFO] [stdout]     |
[INFO] [stdout] 205 |         if x < 0 || x > BUFFER_WIDTH as u8{
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/display.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 208 |         if y < 0 || x > BUFFER_WIDTH as u8{
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/display.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |         self.window.update_with_buffer(&self.buffer, BUFFER_WIDTH as usize, BUFFER_HEIGHT as usize);
[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] 222 |         let _ = self.window.update_with_buffer(&self.buffer, BUFFER_WIDTH as usize, BUFFER_HEIGHT as usize);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `regI` should have a snake case name
[INFO] [stdout]    --> src/display.rs:245:63
[INFO] [stdout]     |
[INFO] [stdout] 245 |     pub fn draw_sprite(&mut self, memory: &Memory, cpu: &CPU, regI: &mut RegisterI, x: u8, y: u8, n_bytes: u8) {
[INFO] [stdout]     |                                                               ^^^^ help: convert the identifier to snake case: `reg_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `pixels`
[INFO] [stderr]  --> Cargo.toml:5:1
[INFO] [stderr]   |
[INFO] [stderr] 5 | pixels = "0.17.2"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `pixels`
[INFO] [stderr] warning: `Chip8` (manifest) generated 1 warning
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 57.08s
[INFO] running `Command { std: "docker" "inspect" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331", kill_on_drop: false }`
[INFO] [stdout] 58c4bee5331835656082aabc78d9441141db9fdfc3722fdb9305a81e2bf66331
