[INFO] cloning repository https://github.com/sidhantas/GameboyAdvance [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sidhantas/GameboyAdvance" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 08da2c27eb2665917f391c45e2f1d964e9466f43 [INFO] checking sidhantas/GameboyAdvance against master#03eb45452305f2d52348279d0caa5fc1f12c438d for pr-138176 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidhantas%2FGameboyAdvance" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/sidhantas/GameboyAdvance on toolchain 03eb45452305f2d52348279d0caa5fc1f12c438d [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03eb45452305f2d52348279d0caa5fc1f12c438d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/sidhantas/GameboyAdvance [INFO] finished tweaking git repo https://github.com/sidhantas/GameboyAdvance [INFO] tweaked toml for git repo https://github.com/sidhantas/GameboyAdvance written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/sidhantas/GameboyAdvance 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" "+03eb45452305f2d52348279d0caa5fc1f12c438d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1680c8fbd8dfb46fcd6d22e546df16ab0e007457dc29fcd9e987cdd5077fd1af" "/opt/rustwide/cargo-home/bin/cargo" "+03eb45452305f2d52348279d0caa5fc1f12c438d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] bfc09e1a9fa3c774f69a7f1a59793220d86c3ef15cf64536ec92a892ae4d9a0f [INFO] running `Command { std: "docker" "start" "-a" "bfc09e1a9fa3c774f69a7f1a59793220d86c3ef15cf64536ec92a892ae4d9a0f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "bfc09e1a9fa3c774f69a7f1a59793220d86c3ef15cf64536ec92a892ae4d9a0f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bfc09e1a9fa3c774f69a7f1a59793220d86c3ef15cf64536ec92a892ae4d9a0f", kill_on_drop: false }` [INFO] [stdout] bfc09e1a9fa3c774f69a7f1a59793220d86c3ef15cf64536ec92a892ae4d9a0f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1680c8fbd8dfb46fcd6d22e546df16ab0e007457dc29fcd9e987cdd5077fd1af" "/opt/rustwide/cargo-home/bin/cargo" "+03eb45452305f2d52348279d0caa5fc1f12c438d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 7dd1179353b00391ee9e8877bd5e7426fd20f250bb524cb056ea8e43c09cda96 [INFO] running `Command { std: "docker" "start" "-a" "7dd1179353b00391ee9e8877bd5e7426fd20f250bb524cb056ea8e43c09cda96", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.155 [INFO] [stderr] Compiling autocfg v1.3.0 [INFO] [stderr] Compiling proc-macro2 v1.0.89 [INFO] [stderr] Compiling unicode-ident v1.0.13 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Compiling parking_lot_core v0.9.10 [INFO] [stderr] Compiling cfg-if v1.0.0 [INFO] [stderr] Compiling semver v1.0.23 [INFO] [stderr] Compiling version-compare v0.1.1 [INFO] [stderr] Compiling equivalent v1.0.1 [INFO] [stderr] Compiling memchr v2.7.4 [INFO] [stderr] Compiling hashbrown v0.15.1 [INFO] [stderr] Compiling cfg_aliases v0.1.1 [INFO] [stderr] Compiling nix v0.28.0 [INFO] [stderr] Compiling sdl2-sys v0.37.0 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Compiling lock_api v0.4.12 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling indexmap v2.6.0 [INFO] [stderr] Compiling toml_datetime v0.6.8 [INFO] [stderr] Compiling syn v2.0.87 [INFO] [stderr] Compiling winnow v0.6.20 [INFO] [stderr] Compiling regex-syntax v0.8.5 [INFO] [stderr] Compiling rstest_macros v0.23.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Compiling glob v0.3.1 [INFO] [stderr] Compiling relative-path v1.9.3 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Compiling sdl2 v0.37.0 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking pin-project-lite v0.2.15 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking signal-hook-mio v0.2.3 [INFO] [stderr] Compiling regex-automata v0.4.8 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Compiling toml_edit v0.22.22 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Checking unicode-width v0.1.13 [INFO] [stderr] Checking crossterm v0.25.0 [INFO] [stderr] Checking unicode-segmentation v1.11.0 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking futures-timer v3.0.3 [INFO] [stderr] Checking ctrlc v3.4.4 [INFO] [stderr] Checking getopts v0.2.21 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking tui v0.19.0 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling proc-macro-crate v3.2.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking rstest v0.23.0 [INFO] [stderr] Checking gameboy_advance v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `Unsigned` [INFO] [stdout] --> src/memory/memory.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `graphics::oam::OAM` [INFO] [stdout] --> src/memory/memory.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | graphics::oam::OAM, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/memory/memory.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | collections::HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DISPSTAT` and `IF` [INFO] [stdout] --> src/memory/memory.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | use super::io_handlers::{DISPSTAT, IF, KEYINPUT}; [INFO] [stdout] | ^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BreakType` [INFO] [stdout] --> src/debugger/debugger.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use super::breakpoints::{BreakType, Breakpoint, TriggeredWatchpoints}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MutexGuard` [INFO] [stdout] --> src/graphics/display.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | sync::{Arc, Mutex, MutexGuard}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rect::Rect` [INFO] [stdout] --> src/graphics/display.rs:7:51 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::{event::Event, pixels::PixelFormatEnum, rect::Rect, render::Texture, surface::Surface}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/graphics/ppu.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, sync::MutexGuard}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::pow` [INFO] [stdout] --> src/graphics/ppu.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::pow; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BitOr` and `process::Output` [INFO] [stdout] --> src/utils/bits.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | ops::{BitAnd, BitOr, BitOrAssign, Shr}, process::Output, [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Unsigned` [INFO] [stdout] --> src/memory/memory.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `graphics::oam::OAM` [INFO] [stdout] --> src/memory/memory.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | graphics::oam::OAM, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/memory/memory.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | collections::HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DISPSTAT` and `IF` [INFO] [stdout] --> src/memory/memory.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | use super::io_handlers::{DISPSTAT, IF, KEYINPUT}; [INFO] [stdout] | ^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BreakType` [INFO] [stdout] --> src/debugger/debugger.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use super::breakpoints::{BreakType, Breakpoint, TriggeredWatchpoints}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MutexGuard` [INFO] [stdout] --> src/graphics/display.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | sync::{Arc, Mutex, MutexGuard}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rect::Rect` [INFO] [stdout] --> src/graphics/display.rs:7:51 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::{event::Event, pixels::PixelFormatEnum, rect::Rect, render::Texture, surface::Surface}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/graphics/ppu.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, sync::MutexGuard}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::pow` [INFO] [stdout] --> src/graphics/ppu.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::pow; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BitOr` and `process::Output` [INFO] [stdout] --> src/utils/bits.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | ops::{BitAnd, BitOr, BitOrAssign, Shr}, process::Output, [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 145 | panic!("NOT IMPLEMENTED: {:#X}", instruction); [INFO] [stdout] | --------------------------------------------- any code following this expression is unreachable [INFO] [stdout] 146 | return 0; [INFO] [stdout] | ^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 145 | panic!("NOT IMPLEMENTED: {:#X}", instruction); [INFO] [stdout] | --------------------------------------------- any code following this expression is unreachable [INFO] [stdout] 146 | return 0; [INFO] [stdout] | ^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToBytes` [INFO] [stdout] --> src/memory/memory.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:431:9 [INFO] [stdout] | [INFO] [stdout] 431 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:449:64 [INFO] [stdout] | [INFO] [stdout] 449 | pub fn thumb_add_offset_to_sp(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:474:57 [INFO] [stdout] | [INFO] [stdout] 474 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:676:57 [INFO] [stdout] | [INFO] [stdout] 676 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:815:57 [INFO] [stdout] | [INFO] [stdout] 815 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:900:57 [INFO] [stdout] | [INFO] [stdout] 900 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:974:57 [INFO] [stdout] | [INFO] [stdout] 974 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:1032:42 [INFO] [stdout] | [INFO] [stdout] 1032 | arm7tdmi::cpu::{InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:1068:42 [INFO] [stdout] | [INFO] [stdout] 1068 | arm7tdmi::cpu::{InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CPU` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:99:57 [INFO] [stdout] | [INFO] [stdout] 99 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU, LINK_REGISTER}, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `arm7tdmi::cpu::CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/arm/data_transfer_instructions.rs:466:9 [INFO] [stdout] | [INFO] [stdout] 466 | arm7tdmi::cpu::CPU, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:377:27 [INFO] [stdout] | [INFO] [stdout] 377 | use crate::{gba::GBA, memory::memory::GBAMemory}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:495:49 [INFO] [stdout] | [INFO] [stdout] 495 | use crate::{arm7tdmi::decoder::*, gba::GBA, memory::memory::GBAMemory}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:897:9 [INFO] [stdout] | [INFO] [stdout] 897 | memory::memory::GBAMemory, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:66:65 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn thumb_set_link_register(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Unsigned` [INFO] [stdout] --> src/memory/memory.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `graphics::oam::OAM` [INFO] [stdout] --> src/memory/memory.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | graphics::oam::OAM, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/memory/memory.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | collections::HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DISPSTAT` and `IF` [INFO] [stdout] --> src/memory/memory.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | use super::io_handlers::{DISPSTAT, IF, KEYINPUT}; [INFO] [stdout] | ^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BreakType` [INFO] [stdout] --> src/debugger/debugger.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use super::breakpoints::{BreakType, Breakpoint, TriggeredWatchpoints}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MutexGuard` [INFO] [stdout] --> src/graphics/display.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | sync::{Arc, Mutex, MutexGuard}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rect::Rect` [INFO] [stdout] --> src/graphics/display.rs:7:51 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::{event::Event, pixels::PixelFormatEnum, rect::Rect, render::Texture, surface::Surface}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/graphics/ppu.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, sync::MutexGuard}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:53:58 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn arm_nop(&mut self, _instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:58:62 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn arm_multiply(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::pow` [INFO] [stdout] --> src/graphics/ppu.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::pow; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BitOr` and `process::Output` [INFO] [stdout] --> src/utils/bits.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | ops::{BitAnd, BitOr, BitOrAssign, Shr}, process::Output, [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operand1` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:200:45 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:286:57 [INFO] [stdout] | [INFO] [stdout] 286 | pub fn arm_mrs(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:310:57 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn arm_msr(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToBytes` [INFO] [stdout] --> src/memory/memory.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:431:9 [INFO] [stdout] | [INFO] [stdout] 431 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:449:64 [INFO] [stdout] | [INFO] [stdout] 449 | pub fn thumb_add_offset_to_sp(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:66:65 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn thumb_set_link_register(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:53:58 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn arm_nop(&mut self, _instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:58:62 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn arm_multiply(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operand1` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:200:45 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:286:57 [INFO] [stdout] | [INFO] [stdout] 286 | pub fn arm_mrs(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:310:57 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn arm_msr(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `address1` [INFO] [stdout] --> src/debugger/breakpoints.rs:39:46 [INFO] [stdout] | [INFO] [stdout] 39 | BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address), [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `oam_num` [INFO] [stdout] --> src/graphics/ppu.rs:104:56 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oam_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/graphics/ppu.rs:117:25 [INFO] [stdout] | [INFO] [stdout] 117 | for i in 0..NUM_OAM_ENTRIES { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:108:41 [INFO] [stdout] | [INFO] [stdout] 108 | fn hblank(&mut self, mut dots: u32, memory: &mut GBAMemory, disp_stat: &mut u16) -> u32 { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `address1` [INFO] [stdout] --> src/debugger/breakpoints.rs:39:46 [INFO] [stdout] | [INFO] [stdout] 39 | BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address), [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `oam_num` [INFO] [stdout] --> src/graphics/ppu.rs:104:56 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oam_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/graphics/ppu.rs:117:25 [INFO] [stdout] | [INFO] [stdout] 117 | for i in 0..NUM_OAM_ENTRIES { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:108:41 [INFO] [stdout] | [INFO] [stdout] 108 | fn hblank(&mut self, mut dots: u32, memory: &mut GBAMemory, disp_stat: &mut u16) -> u32 { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_undefined` is never used [INFO] [stdout] --> src/arm7tdmi/decoder.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 247 | pub fn is_undefined(instruction: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `memory_store2` is never used [INFO] [stdout] --> src/memory/memory.rs:107:4 [INFO] [stdout] | [INFO] [stdout] 107 | fn memory_store2(region: &mut Vec, address: usize, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `iwram`, `ioram`, `bgram`, `vram`, `rom`, and `sram` are never read [INFO] [stdout] --> src/memory/memory.rs:476:5 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct GBAMemory2 { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 476 | iwram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 477 | pub(super) ioram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 478 | bgram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 479 | vram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 480 | pub oam: Vec, [INFO] [stdout] 481 | rom: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] 482 | sram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const HBLANK_FLAG: u16 = 1 << 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VCOUNTER_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const VCOUNTER_FLAG: u16 = 1 << 2; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const VBLANK_ENABLE: u16 = 1 << 3; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const HBLANK_ENABLE: u16 = 1 << 4; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_line_objects` is never read [INFO] [stdout] --> src/graphics/ppu.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct PPU<'a> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | current_line_objects: Vec<&'a OAM<'a>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/graphics/oam.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> OAM<'a> { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 49 | fn y(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 53 | fn rotation_and_scaling_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn double_sized(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn obj_disabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn obj_mode(&self) -> OBJMode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | fn obj_mosaic(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | fn color_pallete(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn obj_shape(&self) -> OBJShape { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn x(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn height(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | fn rotation_scaling_parameter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn horizontal_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn vertical_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn obj_size(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn tile_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn priority(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn pallete_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Bits2` is never used [INFO] [stdout] --> src/utils/bits.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait Bits2 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_undefined` is never used [INFO] [stdout] --> src/arm7tdmi/decoder.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 247 | pub fn is_undefined(instruction: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `memory_store2` is never used [INFO] [stdout] --> src/memory/memory.rs:107:4 [INFO] [stdout] | [INFO] [stdout] 107 | fn memory_store2(region: &mut Vec, address: usize, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `iwram`, `ioram`, `bgram`, `vram`, `rom`, and `sram` are never read [INFO] [stdout] --> src/memory/memory.rs:476:5 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct GBAMemory2 { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 476 | iwram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 477 | pub(super) ioram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 478 | bgram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 479 | vram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 480 | pub oam: Vec, [INFO] [stdout] 481 | rom: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] 482 | sram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const HBLANK_FLAG: u16 = 1 << 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VCOUNTER_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const VCOUNTER_FLAG: u16 = 1 << 2; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const VBLANK_ENABLE: u16 = 1 << 3; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const HBLANK_ENABLE: u16 = 1 << 4; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_line_objects` is never read [INFO] [stdout] --> src/graphics/ppu.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct PPU<'a> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | current_line_objects: Vec<&'a OAM<'a>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/graphics/oam.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> OAM<'a> { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 49 | fn y(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 53 | fn rotation_and_scaling_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn double_sized(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn obj_disabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn obj_mode(&self) -> OBJMode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | fn obj_mosaic(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | fn color_pallete(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn obj_shape(&self) -> OBJShape { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn x(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn height(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | fn rotation_scaling_parameter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn horizontal_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn vertical_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn obj_size(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn tile_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn priority(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn pallete_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Bits2` is never used [INFO] [stdout] --> src/utils/bits.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait Bits2 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 145 | panic!("NOT IMPLEMENTED: {:#X}", instruction); [INFO] [stdout] | --------------------------------------------- any code following this expression is unreachable [INFO] [stdout] 146 | return 0; [INFO] [stdout] | ^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BreakType` [INFO] [stdout] --> src/debugger/debugger.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use super::breakpoints::{BreakType, Breakpoint, TriggeredWatchpoints}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MutexGuard` [INFO] [stdout] --> src/graphics/display.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | sync::{Arc, Mutex, MutexGuard}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rect::Rect` [INFO] [stdout] --> src/graphics/display.rs:7:51 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::{event::Event, pixels::PixelFormatEnum, rect::Rect, render::Texture, surface::Surface}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/graphics/ppu.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, sync::MutexGuard}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::pow` [INFO] [stdout] --> src/graphics/ppu.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::pow; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Unsigned` [INFO] [stdout] --> src/memory/memory.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `graphics::oam::OAM` [INFO] [stdout] --> src/memory/memory.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | graphics::oam::OAM, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/memory/memory.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | collections::HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DISPSTAT` and `IF` [INFO] [stdout] --> src/memory/memory.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | use super::io_handlers::{DISPSTAT, IF, KEYINPUT}; [INFO] [stdout] | ^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BitOr` and `process::Output` [INFO] [stdout] --> src/utils/bits.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | ops::{BitAnd, BitOr, BitOrAssign, Shr}, process::Output, [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 145 | panic!("NOT IMPLEMENTED: {:#X}", instruction); [INFO] [stdout] | --------------------------------------------- any code following this expression is unreachable [INFO] [stdout] 146 | return 0; [INFO] [stdout] | ^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToBytes` [INFO] [stdout] --> src/memory/memory.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:474:57 [INFO] [stdout] | [INFO] [stdout] 474 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:676:57 [INFO] [stdout] | [INFO] [stdout] 676 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:815:57 [INFO] [stdout] | [INFO] [stdout] 815 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:900:57 [INFO] [stdout] | [INFO] [stdout] 900 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:974:57 [INFO] [stdout] | [INFO] [stdout] 974 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:1032:42 [INFO] [stdout] | [INFO] [stdout] 1032 | arm7tdmi::cpu::{InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:1068:42 [INFO] [stdout] | [INFO] [stdout] 1068 | arm7tdmi::cpu::{InstructionMode, CPU}, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CPU` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:99:57 [INFO] [stdout] | [INFO] [stdout] 99 | arm7tdmi::cpu::{FlagsRegister, InstructionMode, CPU, LINK_REGISTER}, [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `arm7tdmi::cpu::CPU` and `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/arm/data_transfer_instructions.rs:466:9 [INFO] [stdout] | [INFO] [stdout] 466 | arm7tdmi::cpu::CPU, gba::GBA, memory::memory::GBAMemory [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:377:27 [INFO] [stdout] | [INFO] [stdout] 377 | use crate::{gba::GBA, memory::memory::GBAMemory}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:495:49 [INFO] [stdout] | [INFO] [stdout] 495 | use crate::{arm7tdmi::decoder::*, gba::GBA, memory::memory::GBAMemory}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `memory::memory::GBAMemory` [INFO] [stdout] --> src/arm7tdmi/decoder.rs:897:9 [INFO] [stdout] | [INFO] [stdout] 897 | memory::memory::GBAMemory, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `BreakType` [INFO] [stdout] --> src/debugger/debugger.rs:1:26 [INFO] [stdout] | [INFO] [stdout] 1 | use super::breakpoints::{BreakType, Breakpoint, TriggeredWatchpoints}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `MutexGuard` [INFO] [stdout] --> src/graphics/display.rs:3:24 [INFO] [stdout] | [INFO] [stdout] 3 | sync::{Arc, Mutex, MutexGuard}, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rect::Rect` [INFO] [stdout] --> src/graphics/display.rs:7:51 [INFO] [stdout] | [INFO] [stdout] 7 | use sdl2::{event::Event, pixels::PixelFormatEnum, rect::Rect, render::Texture, surface::Surface}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `default` [INFO] [stdout] --> src/graphics/ppu.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{default, sync::MutexGuard}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `num_traits::pow` [INFO] [stdout] --> src/graphics/ppu.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use num_traits::pow; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Unsigned` [INFO] [stdout] --> src/memory/memory.rs:1:27 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `graphics::oam::OAM` [INFO] [stdout] --> src/memory/memory.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | graphics::oam::OAM, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `collections::HashMap` [INFO] [stdout] --> src/memory/memory.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | collections::HashMap, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DISPSTAT` and `IF` [INFO] [stdout] --> src/memory/memory.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | use super::io_handlers::{DISPSTAT, IF, KEYINPUT}; [INFO] [stdout] | ^^^^^^^^ ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BitOr` and `process::Output` [INFO] [stdout] --> src/utils/bits.rs:3:19 [INFO] [stdout] | [INFO] [stdout] 3 | ops::{BitAnd, BitOr, BitOrAssign, Shr}, process::Output, [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:431:9 [INFO] [stdout] | [INFO] [stdout] 431 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:449:64 [INFO] [stdout] | [INFO] [stdout] 449 | pub fn thumb_add_offset_to_sp(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:66:65 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn thumb_set_link_register(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let memory = GBAMemory::new(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:53:58 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn arm_nop(&mut self, _instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:58:62 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn arm_multiply(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operand1` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:200:45 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:286:57 [INFO] [stdout] | [INFO] [stdout] 286 | pub fn arm_mrs(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:310:57 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn arm_msr(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToBytes` [INFO] [stdout] --> src/memory/memory.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:431:9 [INFO] [stdout] | [INFO] [stdout] 431 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:449:64 [INFO] [stdout] | [INFO] [stdout] 449 | pub fn thumb_add_offset_to_sp(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:66:65 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn thumb_set_link_register(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:53:58 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn arm_nop(&mut self, _instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:58:62 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn arm_multiply(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cycles` [INFO] [stdout] --> src/memory/memory.rs:935:13 [INFO] [stdout] | [INFO] [stdout] 935 | let cycles = memory.writeu16(address, 0x1255); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_cycles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operand1` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:200:45 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:286:57 [INFO] [stdout] | [INFO] [stdout] 286 | pub fn arm_mrs(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:310:57 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn arm_msr(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `address1` [INFO] [stdout] --> src/debugger/breakpoints.rs:39:46 [INFO] [stdout] | [INFO] [stdout] 39 | BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address), [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `oam_num` [INFO] [stdout] --> src/graphics/ppu.rs:104:56 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oam_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/graphics/ppu.rs:117:25 [INFO] [stdout] | [INFO] [stdout] 117 | for i in 0..NUM_OAM_ENTRIES { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:108:41 [INFO] [stdout] | [INFO] [stdout] 108 | fn hblank(&mut self, mut dots: u32, memory: &mut GBAMemory, disp_stat: &mut u16) -> u32 { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `address1` [INFO] [stdout] --> src/debugger/breakpoints.rs:39:46 [INFO] [stdout] | [INFO] [stdout] 39 | BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address), [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `oam_num` [INFO] [stdout] --> src/graphics/ppu.rs:104:56 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oam_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/graphics/ppu.rs:117:25 [INFO] [stdout] | [INFO] [stdout] 117 | for i in 0..NUM_OAM_ENTRIES { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:108:41 [INFO] [stdout] | [INFO] [stdout] 108 | fn hblank(&mut self, mut dots: u32, memory: &mut GBAMemory, disp_stat: &mut u16) -> u32 { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `memory_store2` is never used [INFO] [stdout] --> src/memory/memory.rs:107:4 [INFO] [stdout] | [INFO] [stdout] 107 | fn memory_store2(region: &mut Vec, address: usize, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `iwram`, `ioram`, `bgram`, `vram`, `rom`, and `sram` are never read [INFO] [stdout] --> src/memory/memory.rs:476:5 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct GBAMemory2 { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 476 | iwram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 477 | pub(super) ioram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 478 | bgram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 479 | vram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 480 | pub oam: Vec, [INFO] [stdout] 481 | rom: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] 482 | sram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const HBLANK_FLAG: u16 = 1 << 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VCOUNTER_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const VCOUNTER_FLAG: u16 = 1 << 2; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const HBLANK_ENABLE: u16 = 1 << 4; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_line_objects` is never read [INFO] [stdout] --> src/graphics/ppu.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct PPU<'a> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | current_line_objects: Vec<&'a OAM<'a>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/graphics/oam.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> OAM<'a> { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | fn color_pallete(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn obj_shape(&self) -> OBJShape { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn height(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | fn rotation_scaling_parameter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn horizontal_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn vertical_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn obj_size(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn tile_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn priority(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn pallete_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Bits2` is never used [INFO] [stdout] --> src/utils/bits.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait Bits2 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_undefined` is never used [INFO] [stdout] --> src/arm7tdmi/decoder.rs:247:12 [INFO] [stdout] | [INFO] [stdout] 247 | pub fn is_undefined(instruction: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:463:17 [INFO] [stdout] | [INFO] [stdout] 463 | assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 463 - assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap) [INFO] [stdout] 463 + assert!(std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::single_data_swap as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:470:17 [INFO] [stdout] | [INFO] [stdout] 470 | assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 470 - assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution) [INFO] [stdout] 470 + assert!(std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::block_dt_execution as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:477:13 [INFO] [stdout] | [INFO] [stdout] 477 | gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 477 - gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange [INFO] [stdout] 477 + std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::arm_branch_and_exchange as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:487:13 [INFO] [stdout] | [INFO] [stdout] 487 | gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 487 - gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt [INFO] [stdout] 487 + std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::arm_software_interrupt as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:503:17 [INFO] [stdout] | [INFO] [stdout] 503 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 503 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 503 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:504:17 [INFO] [stdout] | [INFO] [stdout] 504 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 504 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 504 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `relative_cycles` is never read [INFO] [stdout] --> src/arm7tdmi/cpu.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct CPU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 62 | pub relative_cycles: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Reset` and `Undefined` are never constructed [INFO] [stdout] --> src/arm7tdmi/interrupts.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Exceptions { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 7 | Reset, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 8 | Undefined, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Exceptions` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Address` and `Error` are never constructed [INFO] [stdout] --> src/debugger/breakpoints.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum TriggeredWatchpoints { [INFO] [stdout] | -------------------- variants in this enum [INFO] [stdout] 15 | Address(usize), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 16 | Error(MemoryError) [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const HBLANK_FLAG: u16 = 1 << 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:513:17 [INFO] [stdout] | [INFO] [stdout] 513 | assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 513 - assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] 513 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:514:17 [INFO] [stdout] | [INFO] [stdout] 514 | assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 514 - assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] 514 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:523:17 [INFO] [stdout] | [INFO] [stdout] 523 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 523 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 523 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:524:17 [INFO] [stdout] | [INFO] [stdout] 524 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 524 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 524 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:533:17 [INFO] [stdout] | [INFO] [stdout] 533 | assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 533 - assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] 533 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:534:17 [INFO] [stdout] | [INFO] [stdout] 534 | assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 534 - assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] 534 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 543 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 543 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:544:17 [INFO] [stdout] | [INFO] [stdout] 544 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 544 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 544 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VCOUNTER_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const VCOUNTER_FLAG: u16 = 1 << 2; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const VBLANK_ENABLE: u16 = 1 << 3; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const HBLANK_ENABLE: u16 = 1 << 4; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_line_objects` is never read [INFO] [stdout] --> src/graphics/ppu.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct PPU<'a> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | current_line_objects: Vec<&'a OAM<'a>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `oam_read` is never used [INFO] [stdout] --> src/graphics/ppu.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl PPU<'_> { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_START` is never used [INFO] [stdout] --> src/graphics/oam.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub const OAM_START: usize = 0x7000000; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/graphics/oam.rs:7:20 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct OAM<'a>(pub &'a [u16; 3]); [INFO] [stdout] | --- ^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this struct [INFO] [stdout] | [INFO] [stdout] = help: consider removing this field [INFO] [stdout] = note: `OAM` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/graphics/oam.rs:49:8 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> OAM<'a> { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] 49 | fn y(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 53 | fn rotation_and_scaling_enabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn double_sized(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn obj_disabled(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 65 | fn obj_mode(&self) -> OBJMode { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | fn obj_mosaic(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | fn color_pallete(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn obj_shape(&self) -> OBJShape { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn x(&self) -> u16 { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn height(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | fn rotation_scaling_parameter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn horizontal_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn vertical_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn obj_size(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn tile_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn priority(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn pallete_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `memory_store2` is never used [INFO] [stdout] --> src/memory/memory.rs:107:4 [INFO] [stdout] | [INFO] [stdout] 107 | fn memory_store2(region: &mut Vec, address: usize, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GBAMemory2` is never constructed [INFO] [stdout] --> src/memory/memory.rs:473:12 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct GBAMemory2 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/memory/memory.rs:489:12 [INFO] [stdout] | [INFO] [stdout] 488 | impl GBAMemory2 { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 489 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | const fn get_slice_alignment(size: usize) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 549 | fn get_memory_slice_mut( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 574 | fn get_memory_slice( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 598 | pub fn writeu8(&mut self, address: usize, value: u8) -> CYCLES { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 608 | pub fn writeu16(&mut self, address: usize, value: u16) -> CYCLES { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub fn writeu32(&mut self, address: usize, value: u32) -> CYCLES { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 628 | pub fn readu8(&self, address: usize) -> MemoryFetch { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 640 | pub fn readu16(&self, address: usize) -> MemoryFetch { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 652 | pub fn readu32(&self, address: usize) -> MemoryFetch { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Bits2` is never used [INFO] [stdout] --> src/utils/bits.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait Bits2 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:552:17 [INFO] [stdout] | [INFO] [stdout] 552 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 552 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 552 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:553:17 [INFO] [stdout] | [INFO] [stdout] 553 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 553 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 553 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:561:17 [INFO] [stdout] | [INFO] [stdout] 561 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 561 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 561 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:562:17 [INFO] [stdout] | [INFO] [stdout] 562 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 562 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 562 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:570:17 [INFO] [stdout] | [INFO] [stdout] 570 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 570 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 570 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:571:17 [INFO] [stdout] | [INFO] [stdout] 571 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 571 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 571 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:579:17 [INFO] [stdout] | [INFO] [stdout] 579 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 579 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 579 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:580:17 [INFO] [stdout] | [INFO] [stdout] 580 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 580 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 580 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 588 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 588 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:589:17 [INFO] [stdout] | [INFO] [stdout] 589 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 589 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 589 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:598:17 [INFO] [stdout] | [INFO] [stdout] 598 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 598 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 598 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:599:17 [INFO] [stdout] | [INFO] [stdout] 599 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 599 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 599 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:608:17 [INFO] [stdout] | [INFO] [stdout] 608 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 608 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 608 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:609:17 [INFO] [stdout] | [INFO] [stdout] 609 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 609 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 609 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:614:17 [INFO] [stdout] | [INFO] [stdout] 614 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 614 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 614 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:615:17 [INFO] [stdout] | [INFO] [stdout] 615 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 615 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 615 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:620:17 [INFO] [stdout] | [INFO] [stdout] 620 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 620 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 620 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:621:17 [INFO] [stdout] | [INFO] [stdout] 621 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 621 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 621 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:631:17 [INFO] [stdout] | [INFO] [stdout] 631 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 631 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 631 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:632:17 [INFO] [stdout] | [INFO] [stdout] 632 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 632 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 632 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:637:17 [INFO] [stdout] | [INFO] [stdout] 637 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 637 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 637 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:638:17 [INFO] [stdout] | [INFO] [stdout] 638 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 638 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 638 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:647:17 [INFO] [stdout] | [INFO] [stdout] 647 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 647 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 647 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:648:17 [INFO] [stdout] | [INFO] [stdout] 648 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 648 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 648 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:653:17 [INFO] [stdout] | [INFO] [stdout] 653 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 653 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 653 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:654:17 [INFO] [stdout] | [INFO] [stdout] 654 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 654 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 654 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:665:17 [INFO] [stdout] | [INFO] [stdout] 665 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 665 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 665 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:666:17 [INFO] [stdout] | [INFO] [stdout] 666 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 666 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 666 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:672:17 [INFO] [stdout] | [INFO] [stdout] 672 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 672 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 672 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:673:17 [INFO] [stdout] | [INFO] [stdout] 673 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 673 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 673 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:685:17 [INFO] [stdout] | [INFO] [stdout] 685 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 685 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 685 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:686:17 [INFO] [stdout] | [INFO] [stdout] 686 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 686 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 686 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:692:17 [INFO] [stdout] | [INFO] [stdout] 692 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 692 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 692 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:693:17 [INFO] [stdout] | [INFO] [stdout] 693 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 693 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 693 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:699:17 [INFO] [stdout] | [INFO] [stdout] 699 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 699 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 699 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:700:17 [INFO] [stdout] | [INFO] [stdout] 700 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 700 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 700 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:707:17 [INFO] [stdout] | [INFO] [stdout] 707 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 707 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 707 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:708:17 [INFO] [stdout] | [INFO] [stdout] 708 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 708 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 708 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:908:17 [INFO] [stdout] | [INFO] [stdout] 908 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 908 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 908 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:909:17 [INFO] [stdout] | [INFO] [stdout] 909 | assert!(decoded_instruction.executable == CPU::sdt_imm_offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 909 - assert!(decoded_instruction.executable == CPU::sdt_imm_offset); [INFO] [stdout] 909 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::sdt_imm_offset as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:920:17 [INFO] [stdout] | [INFO] [stdout] 920 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 920 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 920 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:921:17 [INFO] [stdout] | [INFO] [stdout] 921 | assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 921 - assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm); [INFO] [stdout] 921 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_sdt_sp_imm as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:932:17 [INFO] [stdout] | [INFO] [stdout] 932 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 932 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 932 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:933:17 [INFO] [stdout] | [INFO] [stdout] 933 | assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 933 - assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp); [INFO] [stdout] 933 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_add_offset_to_sp as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:944:17 [INFO] [stdout] | [INFO] [stdout] 944 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 944 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 944 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:945:17 [INFO] [stdout] | [INFO] [stdout] 945 | assert!(decoded_instruction.executable == CPU::thumb_push_pop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 945 - assert!(decoded_instruction.executable == CPU::thumb_push_pop); [INFO] [stdout] 945 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_push_pop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:956:17 [INFO] [stdout] | [INFO] [stdout] 956 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 956 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 956 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:957:17 [INFO] [stdout] | [INFO] [stdout] 957 | assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 957 - assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store); [INFO] [stdout] 957 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_multiple_load_or_store as for<'a, 'b> fn(&'a mut cpu::CPU, u32, &'b mut GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable statement [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 145 | panic!("NOT IMPLEMENTED: {:#X}", instruction); [INFO] [stdout] | --------------------------------------------- any code following this expression is unreachable [INFO] [stdout] 146 | return 0; [INFO] [stdout] | ^^^^^^^^^ unreachable statement [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ToBytes` [INFO] [stdout] --> src/memory/memory.rs:1:18 [INFO] [stdout] | [INFO] [stdout] 1 | use num_traits::{ToBytes, Unsigned}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:431:9 [INFO] [stdout] | [INFO] [stdout] 431 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/alu.rs:449:64 [INFO] [stdout] | [INFO] [stdout] 449 | pub fn thumb_add_offset_to_sp(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:66:65 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn thumb_set_link_register(&mut self, instruction: u32, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/thumb/jumps_and_calls.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | let memory = GBAMemory::new(); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:53:58 [INFO] [stdout] | [INFO] [stdout] 53 | pub fn arm_nop(&mut self, _instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:58:62 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn arm_multiply(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:93:9 [INFO] [stdout] | [INFO] [stdout] 93 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `instruction` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | instruction: ARMByteCode, [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/instructions.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | memory: &mut GBAMemory, [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `operand1` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:200:45 [INFO] [stdout] | [INFO] [stdout] 200 | pub fn arm_rsc(&mut self, rd: REGISTER, operand1: u32, operand2: u32, set_flags: bool) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_operand1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:286:57 [INFO] [stdout] | [INFO] [stdout] 286 | pub fn arm_mrs(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/arm7tdmi/arm/alu.rs:310:57 [INFO] [stdout] | [INFO] [stdout] 310 | pub fn arm_msr(&mut self, instruction: ARMByteCode, memory: &mut GBAMemory) -> CYCLES { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `address1` [INFO] [stdout] --> src/debugger/breakpoints.rs:39:46 [INFO] [stdout] | [INFO] [stdout] 39 | BreakType::WatchAddress(address, address1) => write!(f, "address == {}", address), [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:104:32 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `oam_num` [INFO] [stdout] --> src/graphics/ppu.rs:104:56 [INFO] [stdout] | [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_oam_num` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/graphics/ppu.rs:117:25 [INFO] [stdout] | [INFO] [stdout] 117 | for i in 0..NUM_OAM_ENTRIES { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `memory` [INFO] [stdout] --> src/graphics/ppu.rs:108:41 [INFO] [stdout] | [INFO] [stdout] 108 | fn hblank(&mut self, mut dots: u32, memory: &mut GBAMemory, disp_stat: &mut u16) -> u32 { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_memory` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `cycles` [INFO] [stdout] --> src/memory/memory.rs:935:13 [INFO] [stdout] | [INFO] [stdout] 935 | let cycles = memory.writeu16(address, 0x1255); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_cycles` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `relative_cycles` is never read [INFO] [stdout] --> src/arm7tdmi/cpu.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct CPU { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 62 | pub relative_cycles: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Reset` and `Undefined` are never constructed [INFO] [stdout] --> src/arm7tdmi/interrupts.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Exceptions { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 7 | Reset, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 8 | Undefined, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Exceptions` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Address` and `Error` are never constructed [INFO] [stdout] --> src/debugger/breakpoints.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub enum TriggeredWatchpoints { [INFO] [stdout] | -------------------- variants in this enum [INFO] [stdout] 15 | Address(usize), [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 16 | Error(MemoryError) [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const HBLANK_FLAG: u16 = 1 << 1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VCOUNTER_FLAG` is never used [INFO] [stdout] --> src/graphics/ppu.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const VCOUNTER_FLAG: u16 = 1 << 2; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HBLANK_ENABLE` is never used [INFO] [stdout] --> src/graphics/ppu.rs:21:7 [INFO] [stdout] | [INFO] [stdout] 21 | const HBLANK_ENABLE: u16 = 1 << 4; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `current_line_objects` is never read [INFO] [stdout] --> src/graphics/ppu.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct PPU<'a> { [INFO] [stdout] | --- field in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | current_line_objects: Vec<&'a OAM<'a>> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PPU` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `oam_read` is never used [INFO] [stdout] --> src/graphics/ppu.rs:104:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl PPU<'_> { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 104 | pub fn oam_read(&mut self, memory: &mut GBAMemory, oam_num: usize) -> OAM { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `OAM_START` is never used [INFO] [stdout] --> src/graphics/oam.rs:3:11 [INFO] [stdout] | [INFO] [stdout] 3 | pub const OAM_START: usize = 0x7000000; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/graphics/oam.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 48 | impl<'a> OAM<'a> { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 73 | fn color_pallete(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn obj_shape(&self) -> OBJShape { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | fn height(&self) -> u16 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | fn rotation_scaling_parameter(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | fn horizontal_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | fn vertical_flip(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | fn obj_size(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | fn tile_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | fn priority(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | fn pallete_number(&self) -> u16 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `memory_store2` is never used [INFO] [stdout] --> src/memory/memory.rs:107:4 [INFO] [stdout] | [INFO] [stdout] 107 | fn memory_store2(region: &mut Vec, address: usize, value: u8) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/memory/memory.rs:476:5 [INFO] [stdout] | [INFO] [stdout] 473 | pub struct GBAMemory2 { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 476 | iwram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 477 | pub(super) ioram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 478 | bgram: Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 479 | vram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] 480 | pub oam: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] 481 | rom: Vec, [INFO] [stdout] | ^^^ [INFO] [stdout] 482 | sram: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 485 | pub cpu_commands: Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Bits2` is never used [INFO] [stdout] --> src/utils/bits.rs:10:11 [INFO] [stdout] | [INFO] [stdout] 10 | pub trait Bits2 [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:463:17 [INFO] [stdout] | [INFO] [stdout] 463 | assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 463 - assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::single_data_swap) [INFO] [stdout] 463 + assert!(std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::single_data_swap as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:470:17 [INFO] [stdout] | [INFO] [stdout] 470 | assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 470 - assert!(gba.cpu.decode_arm_instruction(instruction).executable == CPU::block_dt_execution) [INFO] [stdout] 470 + assert!(std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::block_dt_execution as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:477:13 [INFO] [stdout] | [INFO] [stdout] 477 | gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 477 - gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_branch_and_exchange [INFO] [stdout] 477 + std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::arm_branch_and_exchange as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:487:13 [INFO] [stdout] | [INFO] [stdout] 487 | gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 487 - gba.cpu.decode_arm_instruction(instruction).executable == CPU::arm_software_interrupt [INFO] [stdout] 487 + std::ptr::fn_addr_eq(gba.cpu.decode_arm_instruction(instruction).executable, CPU::arm_software_interrupt as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:503:17 [INFO] [stdout] | [INFO] [stdout] 503 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 503 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 503 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:504:17 [INFO] [stdout] | [INFO] [stdout] 504 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 504 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 504 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:513:17 [INFO] [stdout] | [INFO] [stdout] 513 | assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 513 - assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] 513 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:514:17 [INFO] [stdout] | [INFO] [stdout] 514 | assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 514 - assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] 514 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:523:17 [INFO] [stdout] | [INFO] [stdout] 523 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 523 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 523 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:524:17 [INFO] [stdout] | [INFO] [stdout] 524 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 524 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 524 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:533:17 [INFO] [stdout] | [INFO] [stdout] 533 | assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 533 - assert!(decoded_instruction.executable == CPU::arm_nop); [INFO] [stdout] 533 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:534:17 [INFO] [stdout] | [INFO] [stdout] 534 | assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 534 - assert!(decoded_instruction.executable != CPU::data_processing_instruction); [INFO] [stdout] 534 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 543 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 543 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:544:17 [INFO] [stdout] | [INFO] [stdout] 544 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 544 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 544 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:552:17 [INFO] [stdout] | [INFO] [stdout] 552 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 552 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 552 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:553:17 [INFO] [stdout] | [INFO] [stdout] 553 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 553 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 553 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:561:17 [INFO] [stdout] | [INFO] [stdout] 561 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 561 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 561 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:562:17 [INFO] [stdout] | [INFO] [stdout] 562 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 562 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 562 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:570:17 [INFO] [stdout] | [INFO] [stdout] 570 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 570 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 570 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:571:17 [INFO] [stdout] | [INFO] [stdout] 571 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 571 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 571 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:579:17 [INFO] [stdout] | [INFO] [stdout] 579 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 579 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 579 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:580:17 [INFO] [stdout] | [INFO] [stdout] 580 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 580 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 580 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 588 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 588 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:589:17 [INFO] [stdout] | [INFO] [stdout] 589 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 589 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 589 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:598:17 [INFO] [stdout] | [INFO] [stdout] 598 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 598 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 598 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:599:17 [INFO] [stdout] | [INFO] [stdout] 599 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 599 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 599 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:608:17 [INFO] [stdout] | [INFO] [stdout] 608 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 608 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 608 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:609:17 [INFO] [stdout] | [INFO] [stdout] 609 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 609 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 609 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:614:17 [INFO] [stdout] | [INFO] [stdout] 614 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 614 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 614 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:615:17 [INFO] [stdout] | [INFO] [stdout] 615 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 615 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 615 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:620:17 [INFO] [stdout] | [INFO] [stdout] 620 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 620 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 620 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:621:17 [INFO] [stdout] | [INFO] [stdout] 621 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 621 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 621 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:631:17 [INFO] [stdout] | [INFO] [stdout] 631 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 631 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 631 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:632:17 [INFO] [stdout] | [INFO] [stdout] 632 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 632 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 632 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:637:17 [INFO] [stdout] | [INFO] [stdout] 637 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 637 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 637 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:638:17 [INFO] [stdout] | [INFO] [stdout] 638 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 638 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 638 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:647:17 [INFO] [stdout] | [INFO] [stdout] 647 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 647 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 647 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:648:17 [INFO] [stdout] | [INFO] [stdout] 648 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 648 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 648 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:653:17 [INFO] [stdout] | [INFO] [stdout] 653 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 653 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 653 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:654:17 [INFO] [stdout] | [INFO] [stdout] 654 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 654 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 654 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:665:17 [INFO] [stdout] | [INFO] [stdout] 665 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 665 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 665 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:666:17 [INFO] [stdout] | [INFO] [stdout] 666 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 666 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 666 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:672:17 [INFO] [stdout] | [INFO] [stdout] 672 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 672 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 672 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:673:17 [INFO] [stdout] | [INFO] [stdout] 673 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 673 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 673 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:685:17 [INFO] [stdout] | [INFO] [stdout] 685 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 685 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 685 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:686:17 [INFO] [stdout] | [INFO] [stdout] 686 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 686 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 686 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:692:17 [INFO] [stdout] | [INFO] [stdout] 692 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 692 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 692 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:693:17 [INFO] [stdout] | [INFO] [stdout] 693 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 693 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 693 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:699:17 [INFO] [stdout] | [INFO] [stdout] 699 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 699 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 699 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:700:17 [INFO] [stdout] | [INFO] [stdout] 700 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 700 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 700 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:707:17 [INFO] [stdout] | [INFO] [stdout] 707 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 707 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 707 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:708:17 [INFO] [stdout] | [INFO] [stdout] 708 | assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 708 - assert!(decoded_instruction.executable == CPU::data_processing_instruction); [INFO] [stdout] 708 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::data_processing_instruction as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:908:17 [INFO] [stdout] | [INFO] [stdout] 908 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 908 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 908 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:909:17 [INFO] [stdout] | [INFO] [stdout] 909 | assert!(decoded_instruction.executable == CPU::sdt_imm_offset); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 909 - assert!(decoded_instruction.executable == CPU::sdt_imm_offset); [INFO] [stdout] 909 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::sdt_imm_offset as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:920:17 [INFO] [stdout] | [INFO] [stdout] 920 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 920 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 920 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:921:17 [INFO] [stdout] | [INFO] [stdout] 921 | assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 921 - assert!(decoded_instruction.executable == CPU::thumb_sdt_sp_imm); [INFO] [stdout] 921 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_sdt_sp_imm as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:932:17 [INFO] [stdout] | [INFO] [stdout] 932 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 932 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 932 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:933:17 [INFO] [stdout] | [INFO] [stdout] 933 | assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 933 - assert!(decoded_instruction.executable == CPU::thumb_add_offset_to_sp); [INFO] [stdout] 933 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_add_offset_to_sp as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:944:17 [INFO] [stdout] | [INFO] [stdout] 944 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 944 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 944 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:945:17 [INFO] [stdout] | [INFO] [stdout] 945 | assert!(decoded_instruction.executable == CPU::thumb_push_pop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 945 - assert!(decoded_instruction.executable == CPU::thumb_push_pop); [INFO] [stdout] 945 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_push_pop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:956:17 [INFO] [stdout] | [INFO] [stdout] 956 | assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 956 - assert!(decoded_instruction.executable != CPU::arm_nop); [INFO] [stdout] 956 + assert!(!std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::arm_nop as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique [INFO] [stdout] --> src/arm7tdmi/decoder.rs:957:17 [INFO] [stdout] | [INFO] [stdout] 957 | assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: the address of the same function can vary between different codegen units [INFO] [stdout] = note: furthermore, different functions could have the same address after being merged together [INFO] [stdout] = note: for more information visit [INFO] [stdout] help: refactor your code, or use `std::ptr::fn_addr_eq` to suppress the lint [INFO] [stdout] | [INFO] [stdout] 957 - assert!(decoded_instruction.executable == CPU::thumb_multiple_load_or_store); [INFO] [stdout] 957 + assert!(std::ptr::fn_addr_eq(decoded_instruction.executable, CPU::thumb_multiple_load_or_store as for<'a, 'b> fn(&'a mut arm7tdmi::cpu::CPU, u32, &'b mut memory::memory::GBAMemory) -> u8)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 02s [INFO] running `Command { std: "docker" "inspect" "7dd1179353b00391ee9e8877bd5e7426fd20f250bb524cb056ea8e43c09cda96", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7dd1179353b00391ee9e8877bd5e7426fd20f250bb524cb056ea8e43c09cda96", kill_on_drop: false }` [INFO] [stdout] 7dd1179353b00391ee9e8877bd5e7426fd20f250bb524cb056ea8e43c09cda96