[INFO] cloning repository https://github.com/starlite-project/craneboy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/starlite-project/craneboy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstarlite-project%2Fcraneboy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstarlite-project%2Fcraneboy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7c10bde4c6117c640328dcb9c7c7bd8285ad0a5a
[INFO] testing starlite-project/craneboy/7c10bde4c6117c640328dcb9c7c7bd8285ad0a5a against 1.97.0-beta.6 for beta-1.98-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstarlite-project%2Fcraneboy" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc1/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-2-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/starlite-project/craneboy
[INFO] finished tweaking git repo https://github.com/starlite-project/craneboy
[INFO] tweaked toml for git repo https://github.com/starlite-project/craneboy written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/starlite-project/craneboy on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/starlite-project/craneboy 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.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded windows-targets v0.53.3
[INFO] [stderr]   Downloaded libloading v0.8.8
[INFO] [stderr]   Downloaded proc-macro2 v1.0.96
[INFO] [stderr]   Downloaded web-time v0.2.4
[INFO] [stderr]   Downloaded glutin_wgl_sys v0.5.0
[INFO] [stderr]   Downloaded wayland-cursor v0.31.11
[INFO] [stderr]   Downloaded wayland-sys v0.31.7
[INFO] [stderr]   Downloaded libredox v0.1.9
[INFO] [stderr]   Downloaded block2 v0.3.0
[INFO] [stderr]   Downloaded glutin_egl_sys v0.6.0
[INFO] [stderr]   Downloaded glutin_glx_sys v0.5.0
[INFO] [stderr]   Downloaded block-sys v0.2.1
[INFO] [stderr]   Downloaded serde_arrays v0.2.0
[INFO] [stderr]   Downloaded typetag-impl v0.2.20
[INFO] [stderr]   Downloaded glutin-winit v0.4.2
[INFO] [stderr]   Downloaded calloop-wayland-source v0.2.0
[INFO] [stderr]   Downloaded ab_glyph_rasterizer v0.1.9
[INFO] [stderr]   Downloaded wayland-protocols-wlr v0.2.0
[INFO] [stderr]   Downloaded ab_glyph v0.2.31
[INFO] [stderr]   Downloaded objc2-encode v3.0.0
[INFO] [stderr]   Downloaded typetag v0.2.20
[INFO] [stderr]   Downloaded memmap2 v0.9.7
[INFO] [stderr]   Downloaded wayland-scanner v0.31.7
[INFO] [stderr]   Downloaded blip_buf v0.1.5
[INFO] [stderr]   Downloaded xml-rs v0.8.27
[INFO] [stderr]   Downloaded wayland-client v0.31.11
[INFO] [stderr]   Downloaded polling v3.10.0
[INFO] [stderr]   Downloaded clap v4.5.43
[INFO] [stderr]   Downloaded calloop v0.12.4
[INFO] [stderr]   Downloaded sctk-adwaita v0.8.3
[INFO] [stderr]   Downloaded wayland-backend v0.3.11
[INFO] [stderr]   Downloaded wayland-protocols-plasma v0.2.0
[INFO] [stderr]   Downloaded glutin v0.31.3
[INFO] [stderr]   Downloaded wayland-protocols v0.31.2
[INFO] [stderr]   Downloaded smithay-client-toolkit v0.18.1
[INFO] [stderr]   Downloaded objc2 v0.4.1
[INFO] [stderr]   Downloaded clap_builder v4.5.43
[INFO] [stderr]   Downloaded x11rb v0.13.1
[INFO] [stderr]   Downloaded bindgen v0.72.0
[INFO] [stderr]   Downloaded android-activity v0.5.2
[INFO] [stderr]   Downloaded rustix v1.0.8
[INFO] [stderr]   Downloaded winit v0.29.15
[INFO] [stderr]   Downloaded x11rb-protocol v0.13.1
[INFO] [stderr]   Downloaded glium v0.34.0
[INFO] [stderr]   Downloaded icrate v0.0.4
[INFO] [stderr]   Downloaded orbclient v0.3.48
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7
[INFO] running `Command { std: "docker" "start" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", 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" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.96
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling craneboy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling blip_buf v0.1.5
[INFO] [stderr]    Compiling half v2.6.0
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling typetag-impl v0.2.20
[INFO] [stderr]    Compiling erased-serde v0.4.6
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling serde_arrays v0.2.0
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling typetag v0.2.20
[INFO] [stdout] warning: unused import: `CpuFlags`
[INFO] [stdout]  --> src/cpu.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |     registers::{CpuFlags, Registers},
[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: `SerialCallback`, `StrResult`, `gb_mode::GbMode`, `keypad::KeypadKey`, `mbc`, `printer::GbPrinter`, `self`, and `sound`
[INFO] [stdout]   --> src/device.rs:4:2
[INFO] [stdout]    |
[INFO] [stdout]  4 |     StrResult,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]  5 |     cpu::CPU,
[INFO] [stdout]  6 |     gb_mode::GbMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  7 |     keypad::KeypadKey,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     mbc,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     printer::GbPrinter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     serial::{self, SerialCallback},
[INFO] [stdout]    |              ^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     sound,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CPU` is never constructed
[INFO] [stdout]   --> src/cpu.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cpu.rs:21:9
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl CPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn do_cycle(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     fn get_ticks(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     fn handle_interrupt(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn push_stack(&mut self, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn update_ime(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn call(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Device` is never constructed
[INFO] [stdout]   --> src/device.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Device {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GbMode` is never used
[INFO] [stdout]  --> src/gb_mode.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum GbMode {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GbSpeed` is never used
[INFO] [stdout]   --> src/gb_mode.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum GbSpeed {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const VRAM_SIZE: usize = 0x4000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VOAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const VOAM_SIZE: usize = 0xA0;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GPU` is never constructed
[INFO] [stdout]   --> src/gpu.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct GPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/gpu.rs:64:9
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl GPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn classic() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn cgb() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     const fn check_interrupt_lyc(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn change_mode(&mut self, mode: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn rbvram0(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn rbvram1(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     fn clear_screen(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     fn update_pal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     const fn get_monochrome_pal_val(value: u8, index: usize) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn render_scan(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     fn set_color(&mut self, x: usize, color: u8) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn set_rgb(&mut self, x: usize, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn draw_bg(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn draw_sprites(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |     pub const fn may_hdma(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PrioType` is never used
[INFO] [stdout]    --> src/gpu.rs:670:6
[INFO] [stdout]     |
[INFO] [stdout] 670 | enum PrioType {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dmg_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:677:4
[INFO] [stdout]     |
[INFO] [stdout] 677 | fn dmg_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cgb_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:686:4
[INFO] [stdout]     |
[INFO] [stdout] 686 | fn cgb_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Keypad` is never constructed
[INFO] [stdout]  --> src/keypad.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Keypad {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, `update`, `keydown`, and `keyup` are never used
[INFO] [stdout]   --> src/keypad.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Keypad {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub const fn rb(&self) -> u8 {
[INFO] [stdout]    |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub const fn wb(&mut self, value: u8) {
[INFO] [stdout]    |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     const fn update(&mut self) {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub const fn keydown(&mut self, key: KeypadKey) {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub const fn keyup(&mut self, key: KeypadKey) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FileBackedMBC {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(rom_path: PathBuf, skip_checksum: bool) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mbc` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn get_mbc(data: Vec<u8>, skip_checksum: bool) -> StrResult<Box<dyn MBC + 'static>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ram_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:158:10
[INFO] [stdout]     |
[INFO] [stdout] 158 | const fn ram_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rom_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:168:10
[INFO] [stdout]     |
[INFO] [stdout] 168 | const fn rom_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_checksum` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn check_checksum(data: &[u8]) -> StrResult<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc0.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl MBC0 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 12 |     pub const fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc1.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MBC1 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc2.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MBC2 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc3.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl MBC3 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc5.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl MBC5 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WRAM_SIZE: usize = 0x8000;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ZRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const ZRAM_SIZE: usize = 0x7F;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MMU` is never constructed
[INFO] [stdout]   --> src/mmu.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct MMU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mmu.rs:47:9
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl MMU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  47 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn determine_mode(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn set_initial(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn rb(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn rw(&mut self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn wb(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn do_cycle(&mut self, ticks: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn ww(&mut self, address: u16, value: u16) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub const fn switch_speed(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn oamdma(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn hdma_read(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     fn hdma_write(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn perform_vramdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     fn perform_hdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     fn perform_gdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     fn perform_vramdma_row(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DMAType` is never used
[INFO] [stdout]    --> src/mmu.rs:405:6
[INFO] [stdout]     |
[INFO] [stdout] 405 | enum DMAType {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fill_random` is never used
[INFO] [stdout]    --> src/mmu.rs:411:4
[INFO] [stdout]     |
[INFO] [stdout] 411 | fn fill_random(slice: &mut [u8], start: u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GbPrinter` is never constructed
[INFO] [stdout]  --> src/printer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct GbPrinter {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/printer.rs:23:15
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl GbPrinter {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  23 |     pub const fn new() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn check_crc(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     const fn reset(&mut self) {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn show(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn show_inner(&mut self) -> ::std::io::Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn receive(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn command(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn send(&mut self, v: u8) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Registers` is never constructed
[INFO] [stdout]  --> src/registers.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Registers {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/registers.rs:21:9
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Registers {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(mode: GbMode) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub const fn af(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub const fn bc(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub const fn de(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub const fn hl(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub const fn hld(&mut self) -> u16 {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub const fn hli(&mut self) -> u16 {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub const fn set_af(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub const fn set_bc(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub const fn set_de(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub const fn set_hl(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn flag(&mut self, flags: CpuFlags, set: bool) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub const fn get_flag(self, flag: CpuFlags) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Serial` is never constructed
[INFO] [stdout]  --> src/serial.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Serial {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_callback`, `wb`, `rb`, `set_callback`, and `clear_callback` are never used
[INFO] [stdout]   --> src/serial.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Serial {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn with_callback(cb: Box<dyn SerialCallback>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn set_callback(&mut self, cb: Box<dyn SerialCallback>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn clear_callback(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_PATTERN` is never used
[INFO] [stdout]  --> src/sound.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const WAVE_PATTERN: [[i32; 8]; 4] = [
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_SECOND` is never used
[INFO] [stdout]   --> src/sound.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOCKS_PER_SECOND: u32 = 1 << 22;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_FRAME` is never used
[INFO] [stdout]   --> src/sound.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const CLOCKS_PER_FRAME: u32 = CLOCKS_PER_SECOND / 512;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OUTPUT_SAMPLE_COUNT` is never used
[INFO] [stdout]   --> src/sound.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const OUTPUT_SAMPLE_COUNT: usize = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SWEEP_DELAY_ZERO_PERIOD` is never used
[INFO] [stdout]   --> src/sound.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const SWEEP_DELAY_ZERO_PERIOD: u8 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_INITIAL_DELAY` is never used
[INFO] [stdout]   --> src/sound.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WAVE_INITIAL_DELAY: u32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sound` is never constructed
[INFO] [stdout]   --> src/sound.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Sound {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:39:9
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl Sound {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  39 |     pub fn dmg(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn cgb(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn create(player: Box<dyn AudioPlayer>, dmg_mode: bool) -> Self {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn rb(&mut self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn do_cycle(&mut self, cycles: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub const fn sync(&mut self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn do_output(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn run(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn mix_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn clear_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeEnvelope` is never constructed
[INFO] [stdout]    --> src/sound.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct VolumeEnvelope {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `step` are never used
[INFO] [stdout]    --> src/sound.rs:308:11
[INFO] [stdout]     |
[INFO] [stdout] 307 | impl VolumeEnvelope {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 308 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     const fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LengthCounter` is never constructed
[INFO] [stdout]    --> src/sound.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | struct LengthCounter {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:366:11
[INFO] [stdout]     |
[INFO] [stdout] 365 | impl LengthCounter {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 366 |     const fn new(max: u16) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     const fn is_active(&self) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     const fn extra_step(frame_step: u8) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     const fn enable(&mut self, enable: bool, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     const fn set(&mut self, minus_value: u8) {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     const fn trigger(&mut self, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SquareChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | struct SquareChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:432:11
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl SquareChannel {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 432 |     const fn new(blip: BlipBuf, with_sweep: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     const fn step_sweep(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 593 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     const fn sweep_calculate_frequency(&mut self) -> u16 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaveChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:617:8
[INFO] [stdout]     |
[INFO] [stdout] 617 | struct WaveChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:634:11
[INFO] [stdout]     |
[INFO] [stdout] 633 | impl WaveChannel {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 634 |     const fn new(blip: BlipBuf, dmg_mode: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 722 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     const fn dmg_maybe_corrupt_waveram(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 749 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:796:8
[INFO] [stdout]     |
[INFO] [stdout] 796 | struct NoiseChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, `on`, `run`, and `step_length` are never used
[INFO] [stdout]    --> src/sound.rs:811:11
[INFO] [stdout]     |
[INFO] [stdout] 810 | impl NoiseChannel {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 811 |     const fn new(blip: BlipBuf) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 827 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 837 |     fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 879 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 909 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_blipbuf` is never used
[INFO] [stdout]    --> src/sound.rs:923:4
[INFO] [stdout]     |
[INFO] [stdout] 923 | fn create_blipbuf(samples_rate: u32) -> BlipBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]  --> src/timer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Timer {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `do_cycle` are never used
[INFO] [stdout]   --> src/timer.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Timer {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub const fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.62s
[INFO] running `Command { std: "docker" "inspect" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `CpuFlags`
[INFO] [stdout]  --> src/cpu.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |     registers::{CpuFlags, Registers},
[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: `SerialCallback`, `StrResult`, `gb_mode::GbMode`, `keypad::KeypadKey`, `mbc`, `printer::GbPrinter`, `self`, and `sound`
[INFO] [stdout]   --> src/device.rs:4:2
[INFO] [stdout]    |
[INFO] [stdout]  4 |     StrResult,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]  5 |     cpu::CPU,
[INFO] [stdout]  6 |     gb_mode::GbMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  7 |     keypad::KeypadKey,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     mbc,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     printer::GbPrinter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     serial::{self, SerialCallback},
[INFO] [stdout]    |              ^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     sound,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CPU` is never constructed
[INFO] [stdout]   --> src/cpu.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cpu.rs:21:9
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl CPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn do_cycle(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     fn get_ticks(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     fn handle_interrupt(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn push_stack(&mut self, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn update_ime(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn call(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Device` is never constructed
[INFO] [stdout]   --> src/device.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Device {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GbMode` is never used
[INFO] [stdout]  --> src/gb_mode.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum GbMode {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GbSpeed` is never used
[INFO] [stdout]   --> src/gb_mode.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum GbSpeed {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const VRAM_SIZE: usize = 0x4000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VOAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const VOAM_SIZE: usize = 0xA0;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GPU` is never constructed
[INFO] [stdout]   --> src/gpu.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct GPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/gpu.rs:64:9
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl GPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn classic() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn cgb() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     const fn check_interrupt_lyc(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn change_mode(&mut self, mode: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn rbvram0(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn rbvram1(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     fn clear_screen(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     fn update_pal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     const fn get_monochrome_pal_val(value: u8, index: usize) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn render_scan(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     fn set_color(&mut self, x: usize, color: u8) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn set_rgb(&mut self, x: usize, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn draw_bg(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn draw_sprites(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |     pub const fn may_hdma(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PrioType` is never used
[INFO] [stdout]    --> src/gpu.rs:670:6
[INFO] [stdout]     |
[INFO] [stdout] 670 | enum PrioType {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dmg_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:677:4
[INFO] [stdout]     |
[INFO] [stdout] 677 | fn dmg_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cgb_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:686:4
[INFO] [stdout]     |
[INFO] [stdout] 686 | fn cgb_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Keypad` is never constructed
[INFO] [stdout]  --> src/keypad.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Keypad {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, `update`, `keydown`, and `keyup` are never used
[INFO] [stdout]   --> src/keypad.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Keypad {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub const fn rb(&self) -> u8 {
[INFO] [stdout]    |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub const fn wb(&mut self, value: u8) {
[INFO] [stdout]    |                  ^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     const fn update(&mut self) {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub const fn keydown(&mut self, key: KeypadKey) {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub const fn keyup(&mut self, key: KeypadKey) {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FileBackedMBC {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(rom_path: PathBuf, skip_checksum: bool) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mbc` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn get_mbc(data: Vec<u8>, skip_checksum: bool) -> StrResult<Box<dyn MBC + 'static>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ram_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:158:10
[INFO] [stdout]     |
[INFO] [stdout] 158 | const fn ram_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rom_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:168:10
[INFO] [stdout]     |
[INFO] [stdout] 168 | const fn rom_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_checksum` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn check_checksum(data: &[u8]) -> StrResult<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc0.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl MBC0 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 12 |     pub const fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc1.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MBC1 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc2.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MBC2 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc3.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl MBC3 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc5.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl MBC5 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WRAM_SIZE: usize = 0x8000;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ZRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const ZRAM_SIZE: usize = 0x7F;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MMU` is never constructed
[INFO] [stdout]   --> src/mmu.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct MMU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mmu.rs:47:9
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl MMU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  47 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn determine_mode(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn set_initial(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn rb(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn rw(&mut self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn wb(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn do_cycle(&mut self, ticks: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn ww(&mut self, address: u16, value: u16) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub const fn switch_speed(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn oamdma(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn hdma_read(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     fn hdma_write(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn perform_vramdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     fn perform_hdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     fn perform_gdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     fn perform_vramdma_row(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DMAType` is never used
[INFO] [stdout]    --> src/mmu.rs:405:6
[INFO] [stdout]     |
[INFO] [stdout] 405 | enum DMAType {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fill_random` is never used
[INFO] [stdout]    --> src/mmu.rs:411:4
[INFO] [stdout]     |
[INFO] [stdout] 411 | fn fill_random(slice: &mut [u8], start: u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GbPrinter` is never constructed
[INFO] [stdout]  --> src/printer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct GbPrinter {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/printer.rs:23:15
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl GbPrinter {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  23 |     pub const fn new() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn check_crc(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     const fn reset(&mut self) {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn show(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn show_inner(&mut self) -> ::std::io::Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn receive(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn command(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn send(&mut self, v: u8) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Registers` is never constructed
[INFO] [stdout]  --> src/registers.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Registers {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/registers.rs:21:9
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl Registers {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn new(mode: GbMode) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub const fn af(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub const fn bc(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub const fn de(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub const fn hl(self) -> u16 {
[INFO] [stdout]     |                  ^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub const fn hld(&mut self) -> u16 {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub const fn hli(&mut self) -> u16 {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub const fn set_af(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub const fn set_bc(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub const fn set_de(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub const fn set_hl(&mut self, value: u16) {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn flag(&mut self, flags: CpuFlags, set: bool) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub const fn get_flag(self, flag: CpuFlags) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Serial` is never constructed
[INFO] [stdout]  --> src/serial.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Serial {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_callback`, `wb`, `rb`, `set_callback`, and `clear_callback` are never used
[INFO] [stdout]   --> src/serial.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Serial {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn with_callback(cb: Box<dyn SerialCallback>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn set_callback(&mut self, cb: Box<dyn SerialCallback>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn clear_callback(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_PATTERN` is never used
[INFO] [stdout]  --> src/sound.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const WAVE_PATTERN: [[i32; 8]; 4] = [
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_SECOND` is never used
[INFO] [stdout]   --> src/sound.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOCKS_PER_SECOND: u32 = 1 << 22;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_FRAME` is never used
[INFO] [stdout]   --> src/sound.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const CLOCKS_PER_FRAME: u32 = CLOCKS_PER_SECOND / 512;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OUTPUT_SAMPLE_COUNT` is never used
[INFO] [stdout]   --> src/sound.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const OUTPUT_SAMPLE_COUNT: usize = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SWEEP_DELAY_ZERO_PERIOD` is never used
[INFO] [stdout]   --> src/sound.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const SWEEP_DELAY_ZERO_PERIOD: u8 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_INITIAL_DELAY` is never used
[INFO] [stdout]   --> src/sound.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WAVE_INITIAL_DELAY: u32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sound` is never constructed
[INFO] [stdout]   --> src/sound.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Sound {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:39:9
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl Sound {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  39 |     pub fn dmg(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn cgb(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn create(player: Box<dyn AudioPlayer>, dmg_mode: bool) -> Self {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn rb(&mut self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn do_cycle(&mut self, cycles: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub const fn sync(&mut self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn do_output(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn run(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn mix_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn clear_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeEnvelope` is never constructed
[INFO] [stdout]    --> src/sound.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct VolumeEnvelope {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `step` are never used
[INFO] [stdout]    --> src/sound.rs:308:11
[INFO] [stdout]     |
[INFO] [stdout] 307 | impl VolumeEnvelope {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 308 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     const fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LengthCounter` is never constructed
[INFO] [stdout]    --> src/sound.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | struct LengthCounter {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:366:11
[INFO] [stdout]     |
[INFO] [stdout] 365 | impl LengthCounter {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 366 |     const fn new(max: u16) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     const fn is_active(&self) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     const fn extra_step(frame_step: u8) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     const fn enable(&mut self, enable: bool, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     const fn set(&mut self, minus_value: u8) {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     const fn trigger(&mut self, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SquareChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | struct SquareChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling craneboy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:432:11
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl SquareChannel {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 432 |     const fn new(blip: BlipBuf, with_sweep: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     const fn step_sweep(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 593 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     const fn sweep_calculate_frequency(&mut self) -> u16 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaveChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:617:8
[INFO] [stdout]     |
[INFO] [stdout] 617 | struct WaveChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:634:11
[INFO] [stdout]     |
[INFO] [stdout] 633 | impl WaveChannel {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 634 |     const fn new(blip: BlipBuf, dmg_mode: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 722 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     const fn dmg_maybe_corrupt_waveram(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 749 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:796:8
[INFO] [stdout]     |
[INFO] [stdout] 796 | struct NoiseChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, `on`, `run`, and `step_length` are never used
[INFO] [stdout]    --> src/sound.rs:811:11
[INFO] [stdout]     |
[INFO] [stdout] 810 | impl NoiseChannel {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 811 |     const fn new(blip: BlipBuf) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 827 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 837 |     fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 879 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 909 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_blipbuf` is never used
[INFO] [stdout]    --> src/sound.rs:923:4
[INFO] [stdout]     |
[INFO] [stdout] 923 | fn create_blipbuf(samples_rate: u32) -> BlipBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]  --> src/timer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Timer {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `do_cycle` are never used
[INFO] [stdout]   --> src/timer.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Timer {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub const fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CpuFlags`
[INFO] [stdout]  --> src/cpu.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |     registers::{CpuFlags, Registers},
[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: `SerialCallback`, `StrResult`, `gb_mode::GbMode`, `keypad::KeypadKey`, `mbc`, `printer::GbPrinter`, `self`, and `sound`
[INFO] [stdout]   --> src/device.rs:4:2
[INFO] [stdout]    |
[INFO] [stdout]  4 |     StrResult,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]  5 |     cpu::CPU,
[INFO] [stdout]  6 |     gb_mode::GbMode,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  7 |     keypad::KeypadKey,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     mbc,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]  9 |     printer::GbPrinter,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     serial::{self, SerialCallback},
[INFO] [stdout]    |              ^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     sound,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CPU` is never constructed
[INFO] [stdout]   --> src/cpu.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct CPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cpu.rs:21:9
[INFO] [stdout]     |
[INFO] [stdout]  20 | impl CPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  21 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn do_cycle(&mut self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     fn get_ticks(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     fn handle_interrupt(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn push_stack(&mut self, value: u16) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn update_ime(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn call(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Device` is never constructed
[INFO] [stdout]   --> src/device.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Device {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GbSpeed` is never used
[INFO] [stdout]   --> src/gb_mode.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum GbSpeed {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const VRAM_SIZE: usize = 0x4000;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VOAM_SIZE` is never used
[INFO] [stdout]  --> src/gpu.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const VOAM_SIZE: usize = 0xA0;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GPU` is never constructed
[INFO] [stdout]   --> src/gpu.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct GPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/gpu.rs:64:9
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl GPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn classic() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn cgb() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     const fn check_interrupt_lyc(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     fn change_mode(&mut self, mode: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn rbvram0(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     fn rbvram1(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     fn clear_screen(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     fn update_pal(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 410 |     const fn get_monochrome_pal_val(value: u8, index: usize) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 419 |     fn render_scan(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     fn set_color(&mut self, x: usize, color: u8) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     fn set_rgb(&mut self, x: usize, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn draw_bg(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 554 |     fn draw_sprites(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 664 |     pub const fn may_hdma(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PrioType` is never used
[INFO] [stdout]    --> src/gpu.rs:670:6
[INFO] [stdout]     |
[INFO] [stdout] 670 | enum PrioType {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dmg_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:677:4
[INFO] [stdout]     |
[INFO] [stdout] 677 | fn dmg_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cgb_sprite_order` is never used
[INFO] [stdout]    --> src/gpu.rs:686:4
[INFO] [stdout]     |
[INFO] [stdout] 686 | fn cgb_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl FileBackedMBC {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(rom_path: PathBuf, skip_checksum: bool) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_mbc` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn get_mbc(data: Vec<u8>, skip_checksum: bool) -> StrResult<Box<dyn MBC + 'static>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ram_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:158:10
[INFO] [stdout]     |
[INFO] [stdout] 158 | const fn ram_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rom_banks` is never used
[INFO] [stdout]    --> src/mbc/mod.rs:168:10
[INFO] [stdout]     |
[INFO] [stdout] 168 | const fn rom_banks(v: u8) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc0.rs:12:15
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl MBC0 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 12 |     pub const fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc1.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MBC1 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 22 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc2.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MBC2 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc3.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl MBC3 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 24 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/mbc/mbc5.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl MBC5 {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 21 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WRAM_SIZE: usize = 0x8000;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ZRAM_SIZE` is never used
[INFO] [stdout]   --> src/mmu.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const ZRAM_SIZE: usize = 0x7F;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MMU` is never constructed
[INFO] [stdout]   --> src/mmu.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct MMU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/mmu.rs:47:9
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl MMU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  47 |     pub fn classic(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn cgb(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn determine_mode(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn set_initial(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn rb(&mut self, address: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn rw(&mut self, address: u16) -> u16 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn wb(&mut self, address: u16, value: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub fn do_cycle(&mut self, ticks: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     pub fn ww(&mut self, address: u16, value: u16) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub const fn switch_speed(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 297 |     fn oamdma(&mut self, value: u8) {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     fn hdma_read(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     fn hdma_write(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn perform_vramdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     fn perform_hdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 377 |     fn perform_gdma(&mut self) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |     fn perform_vramdma_row(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DMAType` is never used
[INFO] [stdout]    --> src/mmu.rs:405:6
[INFO] [stdout]     |
[INFO] [stdout] 405 | enum DMAType {
[INFO] [stdout]     |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fill_random` is never used
[INFO] [stdout]    --> src/mmu.rs:411:4
[INFO] [stdout]     |
[INFO] [stdout] 411 | fn fill_random(slice: &mut [u8], start: u32) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GbPrinter` is never constructed
[INFO] [stdout]  --> src/printer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct GbPrinter {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/printer.rs:23:15
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl GbPrinter {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  23 |     pub const fn new() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     fn check_crc(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     const fn reset(&mut self) {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn show(&mut self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn show_inner(&mut self) -> ::std::io::Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn receive(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn command(&mut self) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn send(&mut self, v: u8) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Serial` is never constructed
[INFO] [stdout]  --> src/serial.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Serial {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_callback`, `wb`, `rb`, `set_callback`, and `clear_callback` are never used
[INFO] [stdout]   --> src/serial.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Serial {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn with_callback(cb: Box<dyn SerialCallback>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn set_callback(&mut self, cb: Box<dyn SerialCallback>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn clear_callback(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_PATTERN` is never used
[INFO] [stdout]  --> src/sound.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const WAVE_PATTERN: [[i32; 8]; 4] = [
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_SECOND` is never used
[INFO] [stdout]   --> src/sound.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const CLOCKS_PER_SECOND: u32 = 1 << 22;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CLOCKS_PER_FRAME` is never used
[INFO] [stdout]   --> src/sound.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const CLOCKS_PER_FRAME: u32 = CLOCKS_PER_SECOND / 512;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OUTPUT_SAMPLE_COUNT` is never used
[INFO] [stdout]   --> src/sound.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const OUTPUT_SAMPLE_COUNT: usize = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SWEEP_DELAY_ZERO_PERIOD` is never used
[INFO] [stdout]   --> src/sound.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const SWEEP_DELAY_ZERO_PERIOD: u8 = 8;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WAVE_INITIAL_DELAY` is never used
[INFO] [stdout]   --> src/sound.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const WAVE_INITIAL_DELAY: u32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sound` is never constructed
[INFO] [stdout]   --> src/sound.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Sound {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:39:9
[INFO] [stdout]     |
[INFO] [stdout]  38 | impl Sound {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  39 |     pub fn dmg(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn cgb(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn create(player: Box<dyn AudioPlayer>, dmg_mode: bool) -> Self {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn rb(&mut self, a: u16) -> u8 {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn do_cycle(&mut self, cycles: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub const fn sync(&mut self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn do_output(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     fn run(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn mix_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn clear_buffers(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VolumeEnvelope` is never constructed
[INFO] [stdout]    --> src/sound.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | struct VolumeEnvelope {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `step` are never used
[INFO] [stdout]    --> src/sound.rs:308:11
[INFO] [stdout]     |
[INFO] [stdout] 307 | impl VolumeEnvelope {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 308 |     const fn new() -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     const fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LengthCounter` is never constructed
[INFO] [stdout]    --> src/sound.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | struct LengthCounter {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:366:11
[INFO] [stdout]     |
[INFO] [stdout] 365 | impl LengthCounter {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 366 |     const fn new(max: u16) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     const fn is_active(&self) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     const fn extra_step(frame_step: u8) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     const fn enable(&mut self, enable: bool, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     const fn set(&mut self, minus_value: u8) {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 393 |     const fn trigger(&mut self, frame_step: u8) {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     const fn step(&mut self) {
[INFO] [stdout]     |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SquareChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | struct SquareChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:432:11
[INFO] [stdout]     |
[INFO] [stdout] 431 | impl SquareChannel {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 432 |     const fn new(blip: BlipBuf, with_sweep: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 460 |     fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 561 |     const fn step_sweep(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 585 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 593 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     const fn sweep_calculate_frequency(&mut self) -> u16 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaveChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:617:8
[INFO] [stdout]     |
[INFO] [stdout] 617 | struct WaveChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sound.rs:634:11
[INFO] [stdout]     |
[INFO] [stdout] 633 | impl WaveChannel {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 634 |     const fn new(blip: BlipBuf, dmg_mode: bool) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 671 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 714 |     const fn calculate_period(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 722 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     const fn dmg_maybe_corrupt_waveram(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 749 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseChannel` is never constructed
[INFO] [stdout]    --> src/sound.rs:796:8
[INFO] [stdout]     |
[INFO] [stdout] 796 | struct NoiseChannel {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, `on`, `run`, and `step_length` are never used
[INFO] [stdout]    --> src/sound.rs:811:11
[INFO] [stdout]     |
[INFO] [stdout] 810 | impl NoiseChannel {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 811 |     const fn new(blip: BlipBuf) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 827 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 837 |     fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stdout]     |        ^^
[INFO] [stdout] ...
[INFO] [stdout] 875 |     const fn on(&self) -> bool {
[INFO] [stdout]     |              ^^
[INFO] [stdout] ...
[INFO] [stdout] 879 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 909 |     const fn step_length(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_blipbuf` is never used
[INFO] [stdout]    --> src/sound.rs:923:4
[INFO] [stdout]     |
[INFO] [stdout] 923 | fn create_blipbuf(samples_rate: u32) -> BlipBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Timer` is never constructed
[INFO] [stdout]  --> src/timer.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Timer {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `rb`, `wb`, and `do_cycle` are never used
[INFO] [stdout]   --> src/timer.rs:16:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Timer {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 16 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub const fn do_cycle(&mut self, ticks: u32) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.96s
[INFO] running `Command { std: "docker" "inspect" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", 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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `CpuFlags`
[INFO] [stderr]  --> src/cpu.rs:6:14
[INFO] [stderr]   |
[INFO] [stderr] 6 |     registers::{CpuFlags, Registers},
[INFO] [stderr]   |                 ^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `SerialCallback`, `StrResult`, `gb_mode::GbMode`, `keypad::KeypadKey`, `mbc`, `printer::GbPrinter`, `self`, and `sound`
[INFO] [stderr]   --> src/device.rs:4:2
[INFO] [stderr]    |
[INFO] [stderr]  4 |     StrResult,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]  5 |     cpu::CPU,
[INFO] [stderr]  6 |     gb_mode::GbMode,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr]  7 |     keypad::KeypadKey,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr]  8 |     mbc,
[INFO] [stderr]    |     ^^^
[INFO] [stderr]  9 |     printer::GbPrinter,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 10 |     serial::{self, SerialCallback},
[INFO] [stderr]    |              ^^^^  ^^^^^^^^^^^^^^
[INFO] [stderr] 11 |     sound,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CPU` is never constructed
[INFO] [stderr]   --> src/cpu.rs:10:12
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct CPU {
[INFO] [stderr]    |            ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/cpu.rs:21:9
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl CPU {
[INFO] [stderr]     | -------- associated items in this implementation
[INFO] [stderr]  21 |     pub fn classic(
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  39 |     pub fn cgb(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  56 |     pub fn do_cycle(&mut self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  61 |     fn get_ticks(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  72 |     fn handle_interrupt(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 102 |     fn push_stack(&mut self, value: u16) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     fn update_ime(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     fn call(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Device` is never constructed
[INFO] [stderr]   --> src/device.rs:15:12
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub struct Device {
[INFO] [stderr]    |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `GbMode` is never used
[INFO] [stderr]  --> src/gb_mode.rs:4:10
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum GbMode {
[INFO] [stderr]   |          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `GbSpeed` is never used
[INFO] [stderr]   --> src/gb_mode.rs:11:10
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub enum GbSpeed {
[INFO] [stderr]    |          ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VRAM_SIZE` is never used
[INFO] [stderr]  --> src/gpu.rs:7:7
[INFO] [stderr]   |
[INFO] [stderr] 7 | const VRAM_SIZE: usize = 0x4000;
[INFO] [stderr]   |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VOAM_SIZE` is never used
[INFO] [stderr]  --> src/gpu.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const VOAM_SIZE: usize = 0xA0;
[INFO] [stderr]   |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GPU` is never constructed
[INFO] [stderr]   --> src/gpu.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct GPU {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/gpu.rs:64:9
[INFO] [stderr]     |
[INFO] [stderr]  63 | impl GPU {
[INFO] [stderr]     | -------- associated items in this implementation
[INFO] [stderr]  64 |     pub fn classic() -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     pub fn cgb() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 117 |     pub fn do_cycle(&mut self, ticks: u32) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     const fn check_interrupt_lyc(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 163 |     fn change_mode(&mut self, mode: u8) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 194 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 266 |     fn rbvram0(&self, a: u16) -> u8 {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 272 |     fn rbvram1(&self, a: u16) -> u8 {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 278 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 394 |     fn clear_screen(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 402 |     fn update_pal(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 410 |     const fn get_monochrome_pal_val(value: u8, index: usize) -> u8 {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 419 |     fn render_scan(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 433 |     fn set_color(&mut self, x: usize, color: u8) {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 439 |     fn set_rgb(&mut self, x: usize, r: u8, g: u8, b: u8) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 451 |     fn draw_bg(&mut self) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 554 |     fn draw_sprites(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 664 |     pub const fn may_hdma(&self) -> bool {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `PrioType` is never used
[INFO] [stderr]    --> src/gpu.rs:670:6
[INFO] [stderr]     |
[INFO] [stderr] 670 | enum PrioType {
[INFO] [stderr]     |      ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `dmg_sprite_order` is never used
[INFO] [stderr]    --> src/gpu.rs:677:4
[INFO] [stderr]     |
[INFO] [stderr] 677 | fn dmg_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `cgb_sprite_order` is never used
[INFO] [stderr]    --> src/gpu.rs:686:4
[INFO] [stderr]     |
[INFO] [stderr] 686 | fn cgb_sprite_order(a: &(i32, i32, u8), b: &(i32, i32, u8)) -> Ordering {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Keypad` is never constructed
[INFO] [stderr]  --> src/keypad.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct Keypad {
[INFO] [stderr]   |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `rb`, `wb`, `update`, `keydown`, and `keyup` are never used
[INFO] [stderr]   --> src/keypad.rs:12:15
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl Keypad {
[INFO] [stderr]    | ----------- associated items in this implementation
[INFO] [stderr] 12 |     pub const fn new() -> Self {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 21 |     pub const fn rb(&self) -> u8 {
[INFO] [stderr]    |                  ^^
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub const fn wb(&mut self, value: u8) {
[INFO] [stderr]    |                  ^^
[INFO] [stderr] ...
[INFO] [stderr] 30 |     const fn update(&mut self) {
[INFO] [stderr]    |              ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub const fn keydown(&mut self, key: KeypadKey) {
[INFO] [stderr]    |                  ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 64 |     pub const fn keyup(&mut self, key: KeypadKey) {
[INFO] [stderr]    |                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mod.rs:24:9
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl FileBackedMBC {
[INFO] [stderr]    | ------------------ associated function in this implementation
[INFO] [stderr] 24 |     pub fn new(rom_path: PathBuf, skip_checksum: bool) -> StrResult<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_mbc` is never used
[INFO] [stderr]    --> src/mbc/mod.rs:139:8
[INFO] [stderr]     |
[INFO] [stderr] 139 | pub fn get_mbc(data: Vec<u8>, skip_checksum: bool) -> StrResult<Box<dyn MBC + 'static>> {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ram_banks` is never used
[INFO] [stderr]    --> src/mbc/mod.rs:158:10
[INFO] [stderr]     |
[INFO] [stderr] 158 | const fn ram_banks(v: u8) -> usize {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rom_banks` is never used
[INFO] [stderr]    --> src/mbc/mod.rs:168:10
[INFO] [stderr]     |
[INFO] [stderr] 168 | const fn rom_banks(v: u8) -> usize {
[INFO] [stderr]     |          ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_checksum` is never used
[INFO] [stderr]    --> src/mbc/mod.rs:172:4
[INFO] [stderr]     |
[INFO] [stderr] 172 | fn check_checksum(data: &[u8]) -> StrResult<()> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mbc0.rs:12:15
[INFO] [stderr]    |
[INFO] [stderr] 11 | impl MBC0 {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 12 |     pub const fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mbc1.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 21 | impl MBC1 {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 22 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mbc2.rs:19:9
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl MBC2 {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 19 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mbc3.rs:24:9
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl MBC3 {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 24 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]   --> src/mbc/mbc5.rs:21:9
[INFO] [stderr]    |
[INFO] [stderr] 20 | impl MBC5 {
[INFO] [stderr]    | --------- associated function in this implementation
[INFO] [stderr] 21 |     pub fn new(data: Vec<u8>) -> StrResult<Self> {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WRAM_SIZE` is never used
[INFO] [stderr]   --> src/mmu.rs:16:7
[INFO] [stderr]    |
[INFO] [stderr] 16 | const WRAM_SIZE: usize = 0x8000;
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ZRAM_SIZE` is never used
[INFO] [stderr]   --> src/mmu.rs:17:7
[INFO] [stderr]    |
[INFO] [stderr] 17 | const ZRAM_SIZE: usize = 0x7F;
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MMU` is never constructed
[INFO] [stderr]   --> src/mmu.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct MMU {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/mmu.rs:47:9
[INFO] [stderr]     |
[INFO] [stderr]  46 | impl MMU {
[INFO] [stderr]     | -------- associated items in this implementation
[INFO] [stderr]  47 |     pub fn classic(
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  89 |     pub fn cgb(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 128 |     fn determine_mode(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     fn set_initial(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn rb(&mut self, address: u16) -> u8 {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 214 |     pub fn rw(&mut self, address: u16) -> u16 {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 219 |     pub fn wb(&mut self, address: u16, value: u8) {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 259 |     pub fn do_cycle(&mut self, ticks: u32) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 280 |     pub fn ww(&mut self, address: u16, value: u16) {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 285 |     pub const fn switch_speed(&mut self) {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 297 |     fn oamdma(&mut self, value: u8) {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 305 |     fn hdma_read(&self, a: u16) -> u8 {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 320 |     fn hdma_write(&mut self, a: u16, v: u8) {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 355 |     fn perform_vramdma(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 363 |     fn perform_hdma(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 377 |     fn perform_gdma(&mut self) -> u32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 387 |     fn perform_vramdma_row(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DMAType` is never used
[INFO] [stderr]    --> src/mmu.rs:405:6
[INFO] [stderr]     |
[INFO] [stderr] 405 | enum DMAType {
[INFO] [stderr]     |      ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `fill_random` is never used
[INFO] [stderr]    --> src/mmu.rs:411:4
[INFO] [stderr]     |
[INFO] [stderr] 411 | fn fill_random(slice: &mut [u8], start: u32) {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `GbPrinter` is never constructed
[INFO] [stderr]  --> src/printer.rs:8:12
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub struct GbPrinter {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/printer.rs:23:15
[INFO] [stderr]     |
[INFO] [stderr]  22 | impl GbPrinter {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr]  23 |     pub const fn new() -> Self {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  37 |     fn check_crc(&self) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  49 |     const fn reset(&mut self) {
[INFO] [stderr]     |              ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  58 |     fn show(&mut self) {
[INFO] [stderr]     |        ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  65 |     fn show_inner(&mut self) -> ::std::io::Result<PathBuf> {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     fn receive(&mut self) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 151 |     fn command(&mut self) {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 163 |     pub fn send(&mut self, v: u8) -> u8 {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Registers` is never constructed
[INFO] [stderr]  --> src/registers.rs:7:12
[INFO] [stderr]   |
[INFO] [stderr] 7 | pub struct Registers {
[INFO] [stderr]   |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/registers.rs:21:9
[INFO] [stderr]     |
[INFO] [stderr]  20 | impl Registers {
[INFO] [stderr]     | -------------- associated items in this implementation
[INFO] [stderr]  21 |     pub fn new(mode: GbMode) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  62 |     pub const fn af(self) -> u16 {
[INFO] [stderr]     |                  ^^
[INFO] [stderr] ...
[INFO] [stderr]  66 |     pub const fn bc(self) -> u16 {
[INFO] [stderr]     |                  ^^
[INFO] [stderr] ...
[INFO] [stderr]  70 |     pub const fn de(self) -> u16 {
[INFO] [stderr]     |                  ^^
[INFO] [stderr] ...
[INFO] [stderr]  74 |     pub const fn hl(self) -> u16 {
[INFO] [stderr]     |                  ^^
[INFO] [stderr] ...
[INFO] [stderr]  78 |     pub const fn hld(&mut self) -> u16 {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  84 |     pub const fn hli(&mut self) -> u16 {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  90 |     pub const fn set_af(&mut self, value: u16) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  95 |     pub const fn set_bc(&mut self, value: u16) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub const fn set_de(&mut self, value: u16) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 105 |     pub const fn set_hl(&mut self, value: u16) {
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     pub fn flag(&mut self, flags: CpuFlags, set: bool) {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 120 |     pub const fn get_flag(self, flag: CpuFlags) -> bool {
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Serial` is never constructed
[INFO] [stderr]  --> src/serial.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct Serial {
[INFO] [stderr]   |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `with_callback`, `wb`, `rb`, `set_callback`, and `clear_callback` are never used
[INFO] [stderr]   --> src/serial.rs:13:15
[INFO] [stderr]    |
[INFO] [stderr] 12 | impl Serial {
[INFO] [stderr]    | ----------- associated items in this implementation
[INFO] [stderr] 13 |     pub const fn new() -> Self {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 22 |     pub fn with_callback(cb: Box<dyn SerialCallback>) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 31 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 48 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub fn set_callback(&mut self, cb: Box<dyn SerialCallback>) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 60 |     pub fn clear_callback(&mut self) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WAVE_PATTERN` is never used
[INFO] [stderr]  --> src/sound.rs:5:7
[INFO] [stderr]   |
[INFO] [stderr] 5 | const WAVE_PATTERN: [[i32; 8]; 4] = [
[INFO] [stderr]   |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CLOCKS_PER_SECOND` is never used
[INFO] [stderr]   --> src/sound.rs:11:7
[INFO] [stderr]    |
[INFO] [stderr] 11 | const CLOCKS_PER_SECOND: u32 = 1 << 22;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `CLOCKS_PER_FRAME` is never used
[INFO] [stderr]   --> src/sound.rs:12:7
[INFO] [stderr]    |
[INFO] [stderr] 12 | const CLOCKS_PER_FRAME: u32 = CLOCKS_PER_SECOND / 512;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `OUTPUT_SAMPLE_COUNT` is never used
[INFO] [stderr]   --> src/sound.rs:13:7
[INFO] [stderr]    |
[INFO] [stderr] 13 | const OUTPUT_SAMPLE_COUNT: usize = 2000;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SWEEP_DELAY_ZERO_PERIOD` is never used
[INFO] [stderr]   --> src/sound.rs:14:7
[INFO] [stderr]    |
[INFO] [stderr] 14 | const SWEEP_DELAY_ZERO_PERIOD: u8 = 8;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WAVE_INITIAL_DELAY` is never used
[INFO] [stderr]   --> src/sound.rs:16:7
[INFO] [stderr]    |
[INFO] [stderr] 16 | const WAVE_INITIAL_DELAY: u32 = 4;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Sound` is never constructed
[INFO] [stderr]   --> src/sound.rs:18:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub struct Sound {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/sound.rs:39:9
[INFO] [stderr]     |
[INFO] [stderr]  38 | impl Sound {
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr]  39 |     pub fn dmg(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  43 |     pub fn cgb(player: Box<dyn AudioPlayer>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  47 |     fn create(player: Box<dyn AudioPlayer>, dmg_mode: bool) -> Self {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  77 |     pub fn rb(&mut self, a: u16) -> u8 {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 145 |     pub fn do_cycle(&mut self, cycles: u32) {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 157 |     pub const fn sync(&mut self) {
[INFO] [stderr]     |                  ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 161 |     fn do_output(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 181 |     fn run(&mut self) {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 221 |     fn mix_buffers(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 291 |     fn clear_buffers(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VolumeEnvelope` is never constructed
[INFO] [stderr]    --> src/sound.rs:299:8
[INFO] [stderr]     |
[INFO] [stderr] 299 | struct VolumeEnvelope {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `rb`, `wb`, and `step` are never used
[INFO] [stderr]    --> src/sound.rs:308:11
[INFO] [stderr]     |
[INFO] [stderr] 307 | impl VolumeEnvelope {
[INFO] [stderr]     | ------------------- associated items in this implementation
[INFO] [stderr] 308 |     const fn new() -> Self {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 318 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 329 |     const fn wb(&mut self, a: u16, v: u8) {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 345 |     const fn step(&mut self) {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `LengthCounter` is never constructed
[INFO] [stderr]    --> src/sound.rs:359:8
[INFO] [stderr]     |
[INFO] [stderr] 359 | struct LengthCounter {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/sound.rs:366:11
[INFO] [stderr]     |
[INFO] [stderr] 365 | impl LengthCounter {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 366 |     const fn new(max: u16) -> Self {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 374 |     const fn is_active(&self) -> bool {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 378 |     const fn extra_step(frame_step: u8) -> bool {
[INFO] [stderr]     |              ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 382 |     const fn enable(&mut self, enable: bool, frame_step: u8) {
[INFO] [stderr]     |              ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 389 |     const fn set(&mut self, minus_value: u8) {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 393 |     const fn trigger(&mut self, frame_step: u8) {
[INFO] [stderr]     |              ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 402 |     const fn step(&mut self) {
[INFO] [stderr]     |              ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SquareChannel` is never constructed
[INFO] [stderr]    --> src/sound.rs:409:8
[INFO] [stderr]     |
[INFO] [stderr] 409 | struct SquareChannel {
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/sound.rs:432:11
[INFO] [stderr]     |
[INFO] [stderr] 431 | impl SquareChannel {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 432 |     const fn new(blip: BlipBuf, with_sweep: bool) -> Self {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 456 |     const fn on(&self) -> bool {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 460 |     fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]     |        ^^
[INFO] [stderr] ...
[INFO] [stderr] 475 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 534 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 561 |     const fn step_sweep(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 585 |     const fn calculate_period(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 593 |     const fn step_length(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 599 |     const fn sweep_calculate_frequency(&mut self) -> u16 {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `WaveChannel` is never constructed
[INFO] [stderr]    --> src/sound.rs:617:8
[INFO] [stderr]     |
[INFO] [stderr] 617 | struct WaveChannel {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/sound.rs:634:11
[INFO] [stderr]     |
[INFO] [stderr] 633 | impl WaveChannel {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 634 |     const fn new(blip: BlipBuf, dmg_mode: bool) -> Self {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 652 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 671 |     const fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 714 |     const fn calculate_period(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 722 |     const fn on(&self) -> bool {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 726 |     const fn step_length(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 731 |     const fn dmg_maybe_corrupt_waveram(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 749 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NoiseChannel` is never constructed
[INFO] [stderr]    --> src/sound.rs:796:8
[INFO] [stderr]     |
[INFO] [stderr] 796 | struct NoiseChannel {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `rb`, `wb`, `on`, `run`, and `step_length` are never used
[INFO] [stderr]    --> src/sound.rs:811:11
[INFO] [stderr]     |
[INFO] [stderr] 810 | impl NoiseChannel {
[INFO] [stderr]     | ----------------- associated items in this implementation
[INFO] [stderr] 811 |     const fn new(blip: BlipBuf) -> Self {
[INFO] [stderr]     |              ^^^
[INFO] [stderr] ...
[INFO] [stderr] 827 |     const fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 837 |     fn wb(&mut self, a: u16, v: u8, frame_step: u8) {
[INFO] [stderr]     |        ^^
[INFO] [stderr] ...
[INFO] [stderr] 875 |     const fn on(&self) -> bool {
[INFO] [stderr]     |              ^^
[INFO] [stderr] ...
[INFO] [stderr] 879 |     fn run(&mut self, start_time: u32, end_time: u32) {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] ...
[INFO] [stderr] 909 |     const fn step_length(&mut self) {
[INFO] [stderr]     |              ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `create_blipbuf` is never used
[INFO] [stderr]    --> src/sound.rs:923:4
[INFO] [stderr]     |
[INFO] [stderr] 923 | fn create_blipbuf(samples_rate: u32) -> BlipBuf {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Timer` is never constructed
[INFO] [stderr]  --> src/timer.rs:4:12
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub struct Timer {
[INFO] [stderr]   |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `rb`, `wb`, and `do_cycle` are never used
[INFO] [stderr]   --> src/timer.rs:16:15
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl Timer {
[INFO] [stderr]    | ---------- associated items in this implementation
[INFO] [stderr] 16 |     pub const fn new() -> Self {
[INFO] [stderr]    |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub fn rb(&self, a: u16) -> u8 {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn wb(&mut self, a: u16, v: u8) {
[INFO] [stderr]    |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 65 |     pub const fn do_cycle(&mut self, ticks: u32) {
[INFO] [stderr]    |                  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `craneboy` (lib) generated 59 warnings (run `cargo fix --lib -p craneboy` to apply 2 suggestions)
[INFO] [stderr] warning: `craneboy` (lib test) generated 53 warnings (53 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/craneboy-06115c318dcb09c0)
[INFO] [stdout] 
[INFO] [stdout] running 7 tests
[INFO] [stdout] test keypad::tests::key_buttons ... ok
[INFO] [stdout] test keypad::tests::keys_direction ... ok
[INFO] [stdout] test mbc::tests::checksum_ones ... ok
[INFO] [stdout] test registers::tests::wide_registers ... ok
[INFO] [stdout] test mbc::tests::checksum_zero ... ok
[INFO] [stdout] test registers::tests::flags ... ok
[INFO] [stdout] test registers::tests::hl_special ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/craneboy-c48739414cf58b82)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests craneboy
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7", kill_on_drop: false }`
[INFO] [stdout] 4adecaa72593327a1027a75a5732ab9227e0bc9c82c11f0afce1da555981e1f7
