[INFO] cloning repository https://github.com/arongeo/chip8
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/arongeo/chip8" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farongeo%2Fchip8", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farongeo%2Fchip8'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 568501236c54751346ed1ccd0697e9689d395b1f
[INFO] checking arongeo/chip8 against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farongeo%2Fchip8" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/arongeo/chip8
[INFO] finished tweaking git repo https://github.com/arongeo/chip8
[INFO] tweaked toml for git repo https://github.com/arongeo/chip8 written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/arongeo/chip8 on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/arongeo/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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded minimp3 v0.5.1
[INFO] [stderr]   Downloaded futures-macro v0.3.25
[INFO] [stderr]   Downloaded raw-window-handle v0.3.4
[INFO] [stderr]   Downloaded futures-executor v0.3.25
[INFO] [stderr]   Downloaded minifb v0.23.0
[INFO] [stderr]   Downloaded futures v0.3.25
[INFO] [stderr]   Downloaded sdl2 v0.35.2
[INFO] [stderr]   Downloaded windows_x86_64_gnullvm v0.42.1
[INFO] [stderr]   Downloaded windows_aarch64_gnullvm v0.42.1
[INFO] [stderr]   Downloaded windows_aarch64_msvc v0.42.1
[INFO] [stderr]   Downloaded windows_x86_64_msvc v0.42.1
[INFO] [stderr]   Downloaded windows_x86_64_gnu v0.42.1
[INFO] [stderr]   Downloaded windows_i686_msvc v0.42.1
[INFO] [stderr]   Downloaded windows_i686_gnu v0.42.1
[INFO] [stderr]   Downloaded orbclient v0.3.42
[INFO] [stderr]   Downloaded sdl2-sys v0.35.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 17aeef18fe14f4742dcb834eeb29a19c3ee5ba926fdd6c906f156f88e40d7840
[INFO] running `Command { std: "docker" "start" "-a" "17aeef18fe14f4742dcb834eeb29a19c3ee5ba926fdd6c906f156f88e40d7840", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17aeef18fe14f4742dcb834eeb29a19c3ee5ba926fdd6c906f156f88e40d7840", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17aeef18fe14f4742dcb834eeb29a19c3ee5ba926fdd6c906f156f88e40d7840", kill_on_drop: false }`
[INFO] [stdout] 17aeef18fe14f4742dcb834eeb29a19c3ee5ba926fdd6c906f156f88e40d7840
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3815843e25c75c98e3120d7a147d57e805a831735183498a57c73dedb22d3d2f
[INFO] running `Command { std: "docker" "start" "-a" "3815843e25c75c98e3120d7a147d57e805a831735183498a57c73dedb22d3d2f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.137
[INFO] [stderr]    Compiling cc v1.0.78
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling thiserror v1.0.38
[INFO] [stderr]    Compiling parking_lot_core v0.9.6
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]     Checking dlib v0.5.0
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling x11-dl v2.20.1
[INFO] [stderr]    Compiling cpal v0.14.2
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]     Checking ogg v0.8.0
[INFO] [stderr]     Checking fastrand v1.8.0
[INFO] [stderr]     Checking remove_dir_all v0.5.3
[INFO] [stderr]     Checking hound v3.5.0
[INFO] [stderr]     Checking claxon v0.4.3
[INFO] [stderr]     Checking lewton v0.10.2
[INFO] [stderr]     Checking nom v7.1.2
[INFO] [stderr]    Compiling minimp3-sys v0.3.2
[INFO] [stderr]    Compiling minifb v0.23.0
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking nix v0.23.2
[INFO] [stderr]     Checking slice-deque v0.3.0
[INFO] [stderr]     Checking tempfile v3.3.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.38
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking xcursor v0.3.4
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking minimp3 v0.5.1
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking alsa v0.6.0
[INFO] [stderr]     Checking rodio v0.16.0
[INFO] [stderr]     Checking chip8 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `KeyRepeat` and `WindowOptions`
[INFO] [stdout]   --> src/io.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use minifb::{Key, KeyRepeat, WindowOptions};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/io.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             while (keys.len() == 0) {
[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] 171 -             while (keys.len() == 0) {
[INFO] [stdout] 171 +             while keys.len() == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Decoder`
[INFO] [stdout]  --> src/speakers.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rodio::{Decoder, OutputStream, Sink};
[INFO] [stdout]   |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Source`
[INFO] [stdout]   --> src/speakers.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rodio::source::{SineWave, Source};
[INFO] [stdout]    |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::chip8::io::VKeys`
[INFO] [stdout]   --> src/cpu.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::chip8::io::VKeys;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/cpu.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cpu.rs:35:29
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let new_nnn     =   (instruction & 0b0000111111111111);         // Example: 1nnn
[INFO] [stdout]    |                             ^                                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 35 -         let new_nnn     =   (instruction & 0b0000111111111111);         // Example: 1nnn
[INFO] [stdout] 35 +         let new_nnn     =   instruction & 0b0000111111111111;         // Example: 1nnn
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/cpu.rs:70:23
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 while (self.chip8.io.poll_quit() != false) {}
[INFO] [stdout]    |                       ^                                  ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 70 -                 while (self.chip8.io.poll_quit() != false) {}
[INFO] [stdout] 70 +                 while self.chip8.io.poll_quit() != false {}
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/cpu.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 226 |         if (sum_wo_filter > 255) {
[INFO] [stdout]     |            ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         if (sum_wo_filter > 255) {
[INFO] [stdout] 226 +         if sum_wo_filter > 255 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/cpu.rs:258:12
[INFO] [stdout]     |
[INFO] [stdout] 258 |         if (self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize]) {
[INFO] [stdout]     |            ^                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -         if (self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize]) {
[INFO] [stdout] 258 +         if self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyRepeat` and `WindowOptions`
[INFO] [stdout]   --> src/io.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | use minifb::{Key, KeyRepeat, WindowOptions};
[INFO] [stdout]    |                   ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/io.rs:171:19
[INFO] [stdout]     |
[INFO] [stdout] 171 |             while (keys.len() == 0) {
[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] 171 -             while (keys.len() == 0) {
[INFO] [stdout] 171 +             while keys.len() == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Decoder`
[INFO] [stdout]  --> src/speakers.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rodio::{Decoder, OutputStream, Sink};
[INFO] [stdout]   |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Source`
[INFO] [stdout]   --> src/speakers.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rodio::source::{SineWave, Source};
[INFO] [stdout]    |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::chip8::io::VKeys`
[INFO] [stdout]   --> src/cpu.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::chip8::io::VKeys;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/cpu.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/cpu.rs:35:29
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let new_nnn     =   (instruction & 0b0000111111111111);         // Example: 1nnn
[INFO] [stdout]    |                             ^                                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 35 -         let new_nnn     =   (instruction & 0b0000111111111111);         // Example: 1nnn
[INFO] [stdout] 35 +         let new_nnn     =   instruction & 0b0000111111111111;         // Example: 1nnn
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/cpu.rs:70:23
[INFO] [stdout]    |
[INFO] [stdout] 70 |                 while (self.chip8.io.poll_quit() != false) {}
[INFO] [stdout]    |                       ^                                  ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 70 -                 while (self.chip8.io.poll_quit() != false) {}
[INFO] [stdout] 70 +                 while self.chip8.io.poll_quit() != false {}
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/cpu.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 226 |         if (sum_wo_filter > 255) {
[INFO] [stdout]     |            ^                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         if (sum_wo_filter > 255) {
[INFO] [stdout] 226 +         if sum_wo_filter > 255 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/cpu.rs:258:12
[INFO] [stdout]     |
[INFO] [stdout] 258 |         if (self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize]) {
[INFO] [stdout]     |            ^                                                                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -         if (self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize]) {
[INFO] [stdout] 258 +         if self.chip8.registers.v[y as usize] > self.chip8.registers.v[x as usize] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pixel_coordinate` is never read
[INFO] [stdout]   --> src/io.rs:72:43
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let mut pixel_coordinate: usize = 0;
[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: unused variable: `bytes_size`
[INFO] [stdout]   --> src/romhandler.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let (bytes, bytes_size) = Self::load_bytes_from_rom(romfilename);
[INFO] [stdout]    |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cpu.rs:225:13
[INFO] [stdout]     |
[INFO] [stdout] 225 |         let mut sum_wo_filter = (self.chip8.registers.v[x as usize].overflowing_add(self.chip8.registers.v[y as usize]).0) as 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: value assigned to `vy_with_mac` is never read
[INFO] [stdout]    --> src/cpu.rs:304:31
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut vy_with_mac = 0;
[INFO] [stdout]     |                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i_with_mac` is never read
[INFO] [stdout]    --> src/cpu.rs:305:30
[INFO] [stdout]     |
[INFO] [stdout] 305 |         let mut i_with_mac = 0;
[INFO] [stdout]     |                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]   --> src/main.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         Err(error)  => panic!("Couldn't create window instance!"),
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_MEMORY_SIZE` is never used
[INFO] [stdout]  --> src/config.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const CHIP8_MEMORY_SIZE: usize = 4096;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_DISPLAY_WIDTH` is never used
[INFO] [stdout]   --> src/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const CHIP8_DISPLAY_WIDTH: usize = 64;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_DISPLAY_HEIGHT` is never used
[INFO] [stdout]   --> src/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const CHIP8_DISPLAY_HEIGHT: usize = 32;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_REGISTERS_NUM` is never used
[INFO] [stdout]   --> src/config.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const CHIP8_REGISTERS_NUM: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_STACK_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const CHIP8_STACK_SIZE: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_KEYBOARD_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const CHIP8_KEYBOARD_SIZE: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_CHARSET_LEN` is never used
[INFO] [stdout]   --> src/config.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const CHIP8_CHARSET_LEN: usize = 80;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_INSTRUCTIONS_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const CHIP8_INSTRUCTIONS_SIZE: usize = 0xE00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit_values` is never used
[INFO] [stdout]   --> src/config.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn get_bit_values(n: u8) -> [bool; 8] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chip8` is never constructed
[INFO] [stdout]   --> src/chip8.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Chip8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `stack_push`, and `stack_pop` are never used
[INFO] [stdout]   --> src/chip8.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Chip8 {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 34 |     pub fn new(window: crate::minifb::Window, romfile: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn stack_push(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn stack_pop(&mut self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `printhelp` is never used
[INFO] [stdout]   --> src/config.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn printhelp() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_rom_filename` is never used
[INFO] [stdout]   --> src/config.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_rom_filename() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Memory` is never constructed
[INFO] [stdout]   --> src/memory.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Memory {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/memory.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Memory {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_CHARSET` is never used
[INFO] [stdout]   --> src/charset.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const CHIP8_CHARSET: [u8; config::CHIP8_CHARSET_LEN] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stack` is never constructed
[INFO] [stdout]   --> src/stack.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Stack {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/stack.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Stack {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Registers` is never constructed
[INFO] [stdout]   --> src/registers.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Registers {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/registers.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Registers {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VKeys` is never used
[INFO] [stdout]   --> src/io.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum VKeys {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIXEL_ON` is never used
[INFO] [stdout]   --> src/io.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const PIXEL_ON:  u32    = 0b00000000111111111111111111111111;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIXEL_OFF` is never used
[INFO] [stdout]   --> src/io.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const PIXEL_OFF: u32    = 0;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IO` is never constructed
[INFO] [stdout]   --> src/io.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct IO {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/io.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl IO {
[INFO] [stdout]     | ------- associated items in this implementation
[INFO] [stdout]  43 |     pub fn new(win: crate::minifb::Window) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     fn check_pixel_in_bounds(x: usize, y: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn set_pixel(&mut self, x: usize, y: usize, val: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn get_pixel(&mut self, x: usize, y: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn render(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn draw_byte(&mut self, x: usize, y: usize, byte: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_key_status_from_vkey(&mut self, key: VKeys) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_key_status_from_num(&mut self, n: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn poll_quit(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn check_keys(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn wait_for_key(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Speaker` is never constructed
[INFO] [stdout]   --> src/speakers.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Speaker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sound`, `stop`, `volume`, and `check_st` are never used
[INFO] [stdout]   --> src/speakers.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Speaker {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn sound(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn volume(&mut self, vol: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn check_st(&mut self, st: u8) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RomCartridge` is never constructed
[INFO] [stdout]   --> src/romhandler.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RomCartridge {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `load_bytes_from_rom` are never used
[INFO] [stdout]   --> src/romhandler.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl RomCartridge {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] 20 |     pub fn new(romfilename: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn load_bytes_from_rom(romfilename: String) -> ([u8; config::CHIP8_INSTRUCTIONS_SIZE], usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instruction` is never read
[INFO] [stdout]   --> src/cpu.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Instruction {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 19 |     pub instruction: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stack_push` and `stack_pop` are never used
[INFO] [stdout]   --> src/chip8.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Chip8 {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn stack_push(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn stack_pop(&mut self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream` is never read
[INFO] [stdout]   --> src/speakers.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Speaker {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 13 |     pub sink: Sink, // remove pub after done testing
[INFO] [stdout] 14 |     stream: OutputStream,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sound`, `stop`, and `volume` are never used
[INFO] [stdout]   --> src/speakers.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Speaker {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn sound(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn volume(&mut self, vol: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/io.rs:52:50
[INFO] [stdout]    |
[INFO] [stdout] 52 |         if ((x < config::CHIP8_DISPLAY_WIDTH) && (0 <= x)) == false {
[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/io.rs:55:51
[INFO] [stdout]    |
[INFO] [stdout] 55 |         if ((y < config::CHIP8_DISPLAY_HEIGHT) && (0 <= y)) == false {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/io.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         self.window.update_with_buffer(&buffer, 64, 32);
[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] 81 |         let _ = self.window.update_with_buffer(&buffer, 64, 32);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pixel_coordinate` is never read
[INFO] [stdout]   --> src/io.rs:72:43
[INFO] [stdout]    |
[INFO] [stdout] 72 |         let mut pixel_coordinate: usize = 0;
[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: unused variable: `bytes_size`
[INFO] [stdout]   --> src/romhandler.rs:21:21
[INFO] [stdout]    |
[INFO] [stdout] 21 |         let (bytes, bytes_size) = Self::load_bytes_from_rom(romfilename);
[INFO] [stdout]    |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bytes_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/cpu.rs:225:13
[INFO] [stdout]     |
[INFO] [stdout] 225 |         let mut sum_wo_filter = (self.chip8.registers.v[x as usize].overflowing_add(self.chip8.registers.v[y as usize]).0) as 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: value assigned to `vy_with_mac` is never read
[INFO] [stdout]    --> src/cpu.rs:304:31
[INFO] [stdout]     |
[INFO] [stdout] 304 |         let mut vy_with_mac = 0;
[INFO] [stdout]     |                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `i_with_mac` is never read
[INFO] [stdout]    --> src/cpu.rs:305:30
[INFO] [stdout]     |
[INFO] [stdout] 305 |         let mut i_with_mac = 0;
[INFO] [stdout]     |                              ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error`
[INFO] [stdout]   --> src/main.rs:33:13
[INFO] [stdout]    |
[INFO] [stdout] 33 |         Err(error)  => panic!("Couldn't create window instance!"),
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_error`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_MEMORY_SIZE` is never used
[INFO] [stdout]  --> src/config.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const CHIP8_MEMORY_SIZE: usize = 4096;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_DISPLAY_WIDTH` is never used
[INFO] [stdout]   --> src/config.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const CHIP8_DISPLAY_WIDTH: usize = 64;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_DISPLAY_HEIGHT` is never used
[INFO] [stdout]   --> src/config.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const CHIP8_DISPLAY_HEIGHT: usize = 32;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_REGISTERS_NUM` is never used
[INFO] [stdout]   --> src/config.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const CHIP8_REGISTERS_NUM: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_STACK_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const CHIP8_STACK_SIZE: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_KEYBOARD_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const CHIP8_KEYBOARD_SIZE: usize = 16;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_CHARSET_LEN` is never used
[INFO] [stdout]   --> src/config.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const CHIP8_CHARSET_LEN: usize = 80;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_INSTRUCTIONS_SIZE` is never used
[INFO] [stdout]   --> src/config.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const CHIP8_INSTRUCTIONS_SIZE: usize = 0xE00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit_values` is never used
[INFO] [stdout]   --> src/config.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn get_bit_values(n: u8) -> [bool; 8] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Chip8` is never constructed
[INFO] [stdout]   --> src/chip8.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct Chip8 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `stack_push`, and `stack_pop` are never used
[INFO] [stdout]   --> src/chip8.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Chip8 {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 34 |     pub fn new(window: crate::minifb::Window, romfile: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn stack_push(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn stack_pop(&mut self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `printhelp` is never used
[INFO] [stdout]   --> src/config.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn printhelp() {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_rom_filename` is never used
[INFO] [stdout]   --> src/config.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn read_rom_filename() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Memory` is never constructed
[INFO] [stdout]   --> src/memory.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Memory {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/memory.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Memory {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHIP8_CHARSET` is never used
[INFO] [stdout]   --> src/charset.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const CHIP8_CHARSET: [u8; config::CHIP8_CHARSET_LEN] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stack` is never constructed
[INFO] [stdout]   --> src/stack.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Stack {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/stack.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Stack {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Registers` is never constructed
[INFO] [stdout]   --> src/registers.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Registers {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/registers.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Registers {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VKeys` is never used
[INFO] [stdout]   --> src/io.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum VKeys {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIXEL_ON` is never used
[INFO] [stdout]   --> src/io.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const PIXEL_ON:  u32    = 0b00000000111111111111111111111111;
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIXEL_OFF` is never used
[INFO] [stdout]   --> src/io.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const PIXEL_OFF: u32    = 0;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IO` is never constructed
[INFO] [stdout]   --> src/io.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct IO {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/io.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl IO {
[INFO] [stdout]     | ------- associated items in this implementation
[INFO] [stdout]  43 |     pub fn new(win: crate::minifb::Window) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     fn check_pixel_in_bounds(x: usize, y: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn set_pixel(&mut self, x: usize, y: usize, val: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn get_pixel(&mut self, x: usize, y: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn render(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn draw_byte(&mut self, x: usize, y: usize, byte: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn get_key_status_from_vkey(&mut self, key: VKeys) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_key_status_from_num(&mut self, n: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn poll_quit(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn check_keys(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn wait_for_key(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Speaker` is never constructed
[INFO] [stdout]   --> src/speakers.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Speaker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `sound`, `stop`, `volume`, and `check_st` are never used
[INFO] [stdout]   --> src/speakers.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Speaker {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn sound(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn volume(&mut self, vol: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn check_st(&mut self, st: u8) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RomCartridge` is never constructed
[INFO] [stdout]   --> src/romhandler.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RomCartridge {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `load_bytes_from_rom` are never used
[INFO] [stdout]   --> src/romhandler.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl RomCartridge {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] 20 |     pub fn new(romfilename: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn load_bytes_from_rom(romfilename: String) -> ([u8; config::CHIP8_INSTRUCTIONS_SIZE], usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `instruction` is never read
[INFO] [stdout]   --> src/cpu.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Instruction {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 19 |     pub instruction: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `stack_push` and `stack_pop` are never used
[INFO] [stdout]   --> src/chip8.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Chip8 {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn stack_push(&mut self, value: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn stack_pop(&mut self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream` is never read
[INFO] [stdout]   --> src/speakers.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Speaker {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 13 |     pub sink: Sink, // remove pub after done testing
[INFO] [stdout] 14 |     stream: OutputStream,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sound`, `stop`, and `volume` are never used
[INFO] [stdout]   --> src/speakers.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Speaker {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn sound(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn stop(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn volume(&mut self, vol: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/io.rs:52:50
[INFO] [stdout]    |
[INFO] [stdout] 52 |         if ((x < config::CHIP8_DISPLAY_WIDTH) && (0 <= x)) == false {
[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/io.rs:55:51
[INFO] [stdout]    |
[INFO] [stdout] 55 |         if ((y < config::CHIP8_DISPLAY_HEIGHT) && (0 <= y)) == false {
[INFO] [stdout]    |                                                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/io.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |         self.window.update_with_buffer(&buffer, 64, 32);
[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] 81 |         let _ = self.window.update_with_buffer(&buffer, 64, 32);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 33.04s
[INFO] running `Command { std: "docker" "inspect" "3815843e25c75c98e3120d7a147d57e805a831735183498a57c73dedb22d3d2f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3815843e25c75c98e3120d7a147d57e805a831735183498a57c73dedb22d3d2f", kill_on_drop: false }`
[INFO] [stdout] 3815843e25c75c98e3120d7a147d57e805a831735183498a57c73dedb22d3d2f
