[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] checking starlite-project/craneboy against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstarlite-project%2Fcraneboy" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-5-tc2/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-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/starlite-project/craneboy on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "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" "+011c518242557d21690f7936b5812318dc2fec47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking starlite-project/craneboy against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fstarlite-project%2Fcraneboy" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-5-tc2/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-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/starlite-project/craneboy on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "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" "+011c518242557d21690f7936b5812318dc2fec47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded memmap2 v0.9.7
[INFO] [stderr]   Downloaded proc-macro2 v1.0.96
[INFO] [stderr]   Downloaded serde_arrays v0.2.0
[INFO] [stderr]   Downloaded typetag-impl v0.2.20
[INFO] [stderr]   Downloaded typetag v0.2.20
[INFO] [stderr]   Downloaded blip_buf v0.1.5
[INFO] [stderr]   Downloaded clap v4.5.43
[INFO] [stderr]   Downloaded clap_builder v4.5.43
[INFO] [stderr]   Downloaded glium v0.34.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac
[INFO] running `Command { std: "docker" "start" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac", 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" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.96
[INFO] [stderr]    Compiling craneboy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking inventory v0.3.20
[INFO] [stderr]     Checking blip_buf v0.1.5
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]     Checking 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]     Checking serde v1.0.219
[INFO] [stderr]     Checking erased-serde v0.4.6
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking serde_arrays v0.2.0
[INFO] [stderr]     Checking 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: 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] [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 `dev` profile [unoptimized + debuginfo] target(s) in 13.34s
[INFO] running `Command { std: "docker" "inspect" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac", kill_on_drop: false }`
[INFO] [stdout] e9478f8156e29066579e24a42393b0a1952bb9089ffe5a4e2739d6be501322ac
