[INFO] cloning repository https://github.com/jeffomatic/nes
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jeffomatic/nes" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjeffomatic%2Fnes", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjeffomatic%2Fnes'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0652e8f899f79dfc6b50c9891608744b2eaad136
[INFO] checking jeffomatic/nes against master#485ec3fbcc12fa14ef6596dabb125ad710499c9e for pr-157710
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjeffomatic%2Fnes" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jeffomatic/nes
[INFO] finished tweaking git repo https://github.com/jeffomatic/nes
[INFO] tweaked toml for git repo https://github.com/jeffomatic/nes written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jeffomatic/nes on toolchain 485ec3fbcc12fa14ef6596dabb125ad710499c9e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+485ec3fbcc12fa14ef6596dabb125ad710499c9e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jeffomatic/nes 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" "+485ec3fbcc12fa14ef6596dabb125ad710499c9e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded autocfg v0.1.7
[INFO] [stderr]   Downloaded cfg-if v0.1.10
[INFO] [stderr]   Downloaded sdl2 v0.32.2
[INFO] [stderr]   Downloaded thread_local v1.0.1
[INFO] [stderr]   Downloaded num-iter v0.1.39
[INFO] [stderr]   Downloaded lazy_static v1.4.0
[INFO] [stderr]   Downloaded num v0.1.42
[INFO] [stderr]   Downloaded num-integer v0.1.41
[INFO] [stderr]   Downloaded memchr v2.3.0
[INFO] [stderr]   Downloaded num-traits v0.2.10
[INFO] [stderr]   Downloaded aho-corasick v0.7.6
[INFO] [stderr]   Downloaded regex v1.3.3
[INFO] [stderr]   Downloaded sdl2-sys v0.32.6
[INFO] [stderr]   Downloaded regex-syntax v0.6.13
[INFO] [stderr]   Downloaded libc v0.2.66
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032
[INFO] running `Command { std: "docker" "start" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032" "/opt/rustwide/cargo-home/bin/cargo" "+485ec3fbcc12fa14ef6596dabb125ad710499c9e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032" "/opt/rustwide/cargo-home/bin/cargo" "+485ec3fbcc12fa14ef6596dabb125ad710499c9e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v0.1.7
[INFO] [stderr]     Checking rand_core v0.4.2
[INFO] [stderr]    Compiling libc v0.2.66
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling memchr v2.3.0
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling sdl2 v0.32.2
[INFO] [stderr]     Checking regex-syntax v0.6.13
[INFO] [stderr]    Compiling sdl2-sys v0.32.6
[INFO] [stderr]     Checking thread_local v1.0.1
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]     Checking rand_jitter v0.1.4
[INFO] [stderr]     Checking rand_hc v0.1.0
[INFO] [stderr]     Checking rand_xorshift v0.1.1
[INFO] [stderr]     Checking rand_isaac v0.1.1
[INFO] [stderr]    Compiling num-traits v0.2.10
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling rand_chacha v0.1.1
[INFO] [stderr]    Compiling rand_pcg v0.1.2
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]    Compiling rand v0.6.5
[INFO] [stderr]     Checking aho-corasick v0.7.6
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]     Checking num v0.1.42
[INFO] [stderr]     Checking regex v1.3.3
[INFO] [stderr]     Checking nes v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `super::super::status::Status`
[INFO] [stdout]  --> src/cpu/execute/incdec.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::super::status::Status;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cpu::status::Status`
[INFO] [stdout]  --> src/cpu/execute/loadstore.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::cpu::status::Status;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::super::status::Status`
[INFO] [stdout]  --> src/cpu/execute/stack.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::super::status::Status;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::super::status::Status`
[INFO] [stdout]  --> src/cpu/execute/transfer.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::super::status::Status;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::assemble`
[INFO] [stdout]  --> src/cpu/step.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::assemble;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::status`
[INFO] [stdout]  --> src/cpu/step.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::status;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/mapper/nrom128.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/mapper/nrom128.rs:23:36
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                                    ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/mapper/nrom128.rs:35:25
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/mapper/nrom128.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                                    ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressMode` is never used
[INFO] [stdout]  --> src/cpu/address_mode.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub enum AddressMode {
[INFO] [stdout]   |          ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `operand_size` is never used
[INFO] [stdout]   --> src/cpu/address_mode.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl AddressMode {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 20 |     pub fn operand_size(self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Statement` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | enum Statement<'a> {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operand` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:21:6
[INFO] [stdout]    |
[INFO] [stdout] 21 | enum Operand<'a> {
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Opval` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:33:6
[INFO] [stdout]    |
[INFO] [stdout] 33 | enum Opval<'a> {
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_numeric` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl<'a> Opval<'a> {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 39 |     pub fn to_numeric(&self, symbols: &dyn SymbolTable) -> Result<Numeric, Error> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Numeric` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:51:6
[INFO] [stdout]    |
[INFO] [stdout] 51 | enum Numeric {
[INFO] [stdout]    |      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_bytes`, `to_u16`, and `to_string` are never used
[INFO] [stdout]   --> src/cpu/assemble.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Numeric {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 57 |     fn to_bytes(self) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     fn to_u16(self) -> Option<u16> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn to_string(self) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SymbolTable` is never used
[INFO] [stdout]   --> src/cpu/assemble.rs:79:7
[INFO] [stdout]    |
[INFO] [stdout] 79 | trait SymbolTable {
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapSymbolTable` is never constructed
[INFO] [stdout]   --> src/cpu/assemble.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | struct MapSymbolTable<'a>(HashMap<&'a str, Numeric>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompositeSymbolTable` is never constructed
[INFO] [stdout]   --> src/cpu/assemble.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | struct CompositeSymbolTable<'a>(Vec<&'a dyn SymbolTable>);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Error` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:100:10
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub enum Error {
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_statement` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:190:4
[INFO] [stdout]     |
[INFO] [stdout] 190 | fn parse_statement<'a>(src: &'a str) -> Result<Statement<'a>, Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_numeric` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn parse_numeric(src: &str) -> Result<Numeric, Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_mnemonic` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn parse_mnemonic(src: &str) -> Result<opcode::Type, Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_operand` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn parse_operand<'a>(src: &'a str) -> Result<Operand<'a>, Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_opval` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:279:4
[INFO] [stdout]     |
[INFO] [stdout] 279 | fn parse_opval<'a>(src: &'a str) -> Result<Opval<'a>, Error> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `infer_address_mode` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:291:4
[INFO] [stdout]     |
[INFO] [stdout] 291 | fn infer_address_mode(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assemble` is never used
[INFO] [stdout]    --> src/cpu/assemble.rs:375:8
[INFO] [stdout]     |
[INFO] [stdout] 375 | pub fn assemble(src: &str, base_reloc_addr: u16) -> Result<Vec<u8>, Error> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute` is never used
[INFO] [stdout]   --> src/cpu/execute/mod.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn execute(opcode_type: opcode::Type, cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adc` is never used
[INFO] [stdout]  --> src/cpu/execute/arithmetic.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn adc(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sbc` is never used
[INFO] [stdout]    --> src/cpu/execute/arithmetic.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub fn sbc(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cmp` is never used
[INFO] [stdout]    --> src/cpu/execute/arithmetic.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn cmp(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpx` is never used
[INFO] [stdout]    --> src/cpu/execute/arithmetic.rs:245:8
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub fn cpx(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cpy` is never used
[INFO] [stdout]    --> src/cpu/execute/arithmetic.rs:291:8
[INFO] [stdout]     |
[INFO] [stdout] 291 | pub fn cpy(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `branch` is never used
[INFO] [stdout]  --> src/cpu/execute/branch.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn branch(cpu: &mut Cpu, operand: Operand, cond: bool) {
[INFO] [stdout]   |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bcc` is never used
[INFO] [stdout]   --> src/cpu/execute/branch.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn bcc(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bcs` is never used
[INFO] [stdout]   --> src/cpu/execute/branch.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn bcs(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `beq` is never used
[INFO] [stdout]   --> src/cpu/execute/branch.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub fn beq(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bmi` is never used
[INFO] [stdout]    --> src/cpu/execute/branch.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub fn bmi(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bne` is never used
[INFO] [stdout]    --> src/cpu/execute/branch.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn bne(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bpl` is never used
[INFO] [stdout]    --> src/cpu/execute/branch.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn bpl(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bvc` is never used
[INFO] [stdout]    --> src/cpu/execute/branch.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn bvc(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bvs` is never used
[INFO] [stdout]    --> src/cpu/execute/branch.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn bvs(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inc` is never used
[INFO] [stdout]  --> src/cpu/execute/incdec.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn inc(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `inx` is never used
[INFO] [stdout]   --> src/cpu/execute/incdec.rs:39:8
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub fn inx(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iny` is never used
[INFO] [stdout]   --> src/cpu/execute/incdec.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn iny(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dec` is never used
[INFO] [stdout]    --> src/cpu/execute/incdec.rs:105:8
[INFO] [stdout]     |
[INFO] [stdout] 105 | pub fn dec(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dex` is never used
[INFO] [stdout]    --> src/cpu/execute/incdec.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn dex(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dey` is never used
[INFO] [stdout]    --> src/cpu/execute/incdec.rs:172:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub fn dey(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jmp` is never used
[INFO] [stdout]  --> src/cpu/execute/jump.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn jmp(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `jsr` is never used
[INFO] [stdout]   --> src/cpu/execute/jump.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn jsr(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rts` is never used
[INFO] [stdout]   --> src/cpu/execute/jump.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn rts(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lda` is never used
[INFO] [stdout]  --> src/cpu/execute/loadstore.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn lda(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ldx` is never used
[INFO] [stdout]   --> src/cpu/execute/loadstore.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn ldx(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ldy` is never used
[INFO] [stdout]   --> src/cpu/execute/loadstore.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn ldy(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sta` is never used
[INFO] [stdout]   --> src/cpu/execute/loadstore.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn sta(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stx` is never used
[INFO] [stdout]    --> src/cpu/execute/loadstore.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn stx(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sty` is never used
[INFO] [stdout]    --> src/cpu/execute/loadstore.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn sty(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `and` is never used
[INFO] [stdout]  --> src/cpu/execute/logic.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn and(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `eor` is never used
[INFO] [stdout]   --> src/cpu/execute/logic.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn eor(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ora` is never used
[INFO] [stdout]   --> src/cpu/execute/logic.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn ora(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bit` is never used
[INFO] [stdout]    --> src/cpu/execute/logic.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn bit(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `asl` is never used
[INFO] [stdout]  --> src/cpu/execute/shift.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn asl(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lsr` is never used
[INFO] [stdout]   --> src/cpu/execute/shift.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn lsr(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rol` is never used
[INFO] [stdout]   --> src/cpu/execute/shift.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn rol(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ror` is never used
[INFO] [stdout]    --> src/cpu/execute/shift.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn ror(cpu: &mut Cpu, operand: Operand) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tsx` is never used
[INFO] [stdout]  --> src/cpu/execute/stack.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn tsx(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `txs` is never used
[INFO] [stdout]   --> src/cpu/execute/stack.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn txs(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pha` is never used
[INFO] [stdout]   --> src/cpu/execute/stack.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn pha(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `php` is never used
[INFO] [stdout]   --> src/cpu/execute/stack.rs:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub fn php(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pla` is never used
[INFO] [stdout]   --> src/cpu/execute/stack.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn pla(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plp` is never used
[INFO] [stdout]   --> src/cpu/execute/stack.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub fn plp(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clc` is never used
[INFO] [stdout]  --> src/cpu/execute/status.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn clc(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cld` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn cld(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cli` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn cli(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clv` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn clv(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sec` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn sec(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sed` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn sed(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sei` is never used
[INFO] [stdout]   --> src/cpu/execute/status.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn sei(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `brk` is never used
[INFO] [stdout]  --> src/cpu/execute/system.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn brk(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rti` is never used
[INFO] [stdout]   --> src/cpu/execute/system.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn rti(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nop` is never used
[INFO] [stdout]   --> src/cpu/execute/system.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn nop(_cpu: &mut Cpu, _operand: Operand) {}
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tax` is never used
[INFO] [stdout]  --> src/cpu/execute/transfer.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn tax(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tay` is never used
[INFO] [stdout]   --> src/cpu/execute/transfer.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn tay(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `txa` is never used
[INFO] [stdout]   --> src/cpu/execute/transfer.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn txa(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tya` is never used
[INFO] [stdout]   --> src/cpu/execute/transfer.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn tya(cpu: &mut Cpu, _operand: Operand) {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Type` is never used
[INFO] [stdout]  --> src/cpu/opcode.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Type {
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `writes_memory`, `compatible_with`, `is_jump`, and `from_mnemonic` are never used
[INFO] [stdout]    --> src/cpu/opcode.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl Type {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout]  66 |     pub fn writes_memory(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn compatible_with(self, addr_mode: AddressMode) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn is_jump(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn from_mnemonic(mnemonic: &str) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Opcode` is never constructed
[INFO] [stdout]    --> src/cpu/opcode.rs:172:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | struct Opcode {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPCODES` is never used
[INFO] [stdout]    --> src/cpu/opcode.rs:179:7
[INFO] [stdout]     |
[INFO] [stdout] 179 | const OPCODES: &[Opcode] = &[
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]     --> src/cpu/opcode.rs:1148:8
[INFO] [stdout]      |
[INFO] [stdout] 1148 | pub fn decode(opcode: u8) -> Option<(Type, AddressMode, u64)> {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode` is never used
[INFO] [stdout]     --> src/cpu/opcode.rs:1163:8
[INFO] [stdout]      |
[INFO] [stdout] 1163 | pub fn encode(opcode_type: Type, addr_mode: AddressMode) -> Option<u8> {
[INFO] [stdout]      |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operand` is never used
[INFO] [stdout]  --> src/cpu/operand.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Operand {
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `read`, `write`, and `address` are never used
[INFO] [stdout]   --> src/cpu/operand.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Operand {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 15 |     pub fn read(self, cpu: &Cpu) -> u8 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn write(self, cpu: &mut Cpu, val: u8) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn address(self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]   --> src/cpu/operand.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn decode(cpu: &mut Cpu, opcode_type: opcode::Type, addr_mode: AddressMode) -> (Operand, u64) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `page_crossing_cycle_adjusment` is never used
[INFO] [stdout]    --> src/cpu/operand.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn page_crossing_cycle_adjusment(opcode_type: opcode::Type, before: u16, after: u16) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_BASE` is never used
[INFO] [stdout]  --> src/cpu/state.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const STACK_BASE: u16 = 0x100;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_SIZE` is never used
[INFO] [stdout]  --> src/cpu/state.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const STACK_SIZE: usize = 0x100;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RAM_SIZE` is never used
[INFO] [stdout]  --> src/cpu/state.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const RAM_SIZE: usize = 1 << 11;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Registers` is never constructed
[INFO] [stdout]   --> src/cpu/state.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Registers {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `status_set`, `status_set_zn`, and `status_check` are never used
[INFO] [stdout]   --> src/cpu/state.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Registers {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 55 |     fn new() -> Registers {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn status_set(&mut self, s: Status, on: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn status_set_zn(&mut self, val: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn status_check(&self, s: Status) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vectors` is never constructed
[INFO] [stdout]   --> src/cpu/state.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct Vectors {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cpu` is never constructed
[INFO] [stdout]   --> src/cpu/state.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct Cpu {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cpu/state.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl Cpu {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 101 |     pub fn new(mapper_prg: Box<dyn mapper::Prg>, mapper_chr: Box<dyn mapper::Ppu>) -> Cpu {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn new_test() -> Cpu {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn cycle_add(&mut self, amt: u64) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn mem_read(&self, addr: u16) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn mem_read16(&self, addr: u16) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn mem_read_buf(&self, addr: u16, len: usize) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn mem_write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn mem_write_buf(&mut self, addr: u16, buf: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn instruction_fetch_byte(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn stack_pointer(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub fn stack_push(&mut self, v: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn stack_push16(&mut self, v: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn stack_pop(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn stack_pop16(&mut self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn stack_peek(&self, offset: u8) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn stack_peek16(&self, offset: u8) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Status` is never used
[INFO] [stdout]  --> src/cpu/status.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Status {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `bit` and `mask` are never used
[INFO] [stdout]   --> src/cpu/status.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Status {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 14 |     pub fn bit(self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn mask(self) -> u8 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `step` is never used
[INFO] [stdout]  --> src/cpu/step.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl state::Cpu {
[INFO] [stdout]   | --------------- method in this implementation
[INFO] [stdout] 9 |     pub fn step(&mut self) {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Prg` is never used
[INFO] [stdout]  --> src/mapper/common.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub trait Prg {
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `read` and `write` are never used
[INFO] [stdout]   --> src/mapper/common.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub trait Ppu {
[INFO] [stdout]    |           --- methods in this trait
[INFO] [stdout] 10 |     fn read(&self, addr: u16) -> u8;
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 11 |     fn write(&mut self, addr: u16, v: u8);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRG_SIZE` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const PRG_SIZE: usize = 1 << 13;
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHR_SIZE` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CHR_SIZE: usize = 1 << 12;
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn new(prg: &Vec<u8>, chr: &Vec<u8>) -> (Prg, Ppu) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Prg` is never constructed
[INFO] [stdout]   --> src/mapper/nrom128.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Prg(Vec<u8>);
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ppu` is never constructed
[INFO] [stdout]   --> src/mapper/nrom128.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Ppu(Vec<u8>);
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/mapper/test.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Prg(Vec<u8>);
[INFO] [stdout]    |            --- ^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/mapper/test.rs:28:16
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Ppu(Vec<u8>);
[INFO] [stdout]    |            --- ^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bytes_to_u16_le` is never used
[INFO] [stdout]  --> src/math.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn bytes_to_u16_le(bytes: [u8; 2]) -> u16 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `byte_addr_offset` is never used
[INFO] [stdout]   --> src/math.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn byte_addr_offset(src: u16, offset: u8) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `same_sign` is never used
[INFO] [stdout]   --> src/math.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn same_sign(x: u8, y: u8) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u16_to_bytes_le` is never used
[INFO] [stdout]   --> src/math.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn u16_to_bytes_le(x: u16) -> [u8; 2] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u16_hi` is never used
[INFO] [stdout]   --> src/math.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn u16_hi(x: u16) -> u8 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u16_lo` is never used
[INFO] [stdout]   --> src/math.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn u16_lo(x: u16) -> u8 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u16_set_hi` is never used
[INFO] [stdout]   --> src/math.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn u16_set_hi(x: u16, hi: u8) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u16_set_lo` is never used
[INFO] [stdout]   --> src/math.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn u16_set_lo(x: u16, lo: u8) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `page_crossing` is never used
[INFO] [stdout]   --> src/math.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn page_crossing(x: u16, y: u16) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ppu/mod.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Registers {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  8 |     pub ppuctrl: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]  9 |     pub ppumask: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 10 |     pub ppustatus: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 11 |     pub oamaddr: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 12 |     pub oamdata: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 13 |     pub ppuscroll: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 14 |     pub ppuaddr: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub ppudata: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub oamdma: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_ROWS` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const TILE_ROWS: usize = 8; // 8x8 tiles
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_BITPLANES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const TILE_BITPLANES: usize = 2; // 2 bitplanes per tile
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const TILE_BYTES: usize = TILE_ROWS * TILE_BITPLANES; // 16 bytes per tile
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATTRIBUTE_TABLE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const ATTRIBUTE_TABLE_BYTES: usize = 64;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAMETABLE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const NAMETABLE_BYTES: usize = (NAMETABLE_ROWS * NAMETABLE_COLS) + ATTRIBUTE_TABLE_BYTES; // 1024 bytes (0x400)
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `regs`, `oam`, `palette`, and `mapper` are never read
[INFO] [stdout]   --> src/ppu/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Ppu {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 45 |     regs: Registers,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 46 |     oam: [u8; OAM_BYTES],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 47 |     palette: [u8; ALL_PALETTES_BYTES],
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 48 |     mapper: Box<dyn mapper::Ppu>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PixelColor` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:53:6
[INFO] [stdout]    |
[INFO] [stdout] 53 | enum PixelColor {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `mem_read`, `mem_write`, `mem_write_buf`, and `bg_pixel_color` are never used
[INFO] [stdout]   --> src/ppu/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | impl Ppu {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn mem_read(&self, addr: u16) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn mem_write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     pub fn mem_write_buf(&mut self, addr: u16, buf: Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     fn bg_pixel_color(&self, x: usize, y: usize) -> PixelColor {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE_COLORS` is never used
[INFO] [stdout]  --> src/ppu/palette.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const PALETTE_COLORS: usize = 64;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CXA2025AS` is never used
[INFO] [stdout]  --> src/ppu/palette.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CXA2025AS: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAL` is never used
[INFO] [stdout]   --> src/ppu/palette.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const PAL: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPOSITE_DIRECT_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:140:11
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub const COMPOSITE_DIRECT_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PVM_STYLE_D93_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:207:11
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub const PVM_STYLE_D93_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NTSC_HARDWARE_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:274:11
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub const NTSC_HARDWARE_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_CLASSIC_FBX_FS` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:341:11
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub const NES_CLASSIC_FBX_FS: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/mapper/nrom128.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/mapper/nrom128.rs:23:36
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                                    ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]   --> src/mapper/nrom128.rs:35:25
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                         ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/mapper/nrom128.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn write(&mut self, addr: u16, v: u8) {
[INFO] [stdout]    |                                    ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nmi`, `reset`, and `irq_brk` are never read
[INFO] [stdout]   --> src/cpu/state.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct Vectors {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 86 |     pub nmi: u16,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 87 |     pub reset: u16,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 88 |     pub irq_brk: u16,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Vectors` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vectors` and `ppu` are never read
[INFO] [stdout]   --> src/cpu/state.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct Cpu {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub vectors: Vectors,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 96 |     pub ppu: ppu::Ppu,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/cpu/state.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl Cpu {
[INFO] [stdout]     | -------- associated function in this implementation
[INFO] [stdout] 101 |     pub fn new(mapper_prg: Box<dyn mapper::Prg>, mapper_chr: Box<dyn mapper::Ppu>) -> Cpu {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ExpansionBit` is never constructed
[INFO] [stdout]  --> src/cpu/status.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Status {
[INFO] [stdout]   |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8 |     ExpansionBit,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Status` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRG_SIZE` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const PRG_SIZE: usize = 1 << 13;
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHR_SIZE` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CHR_SIZE: usize = 1 << 12;
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new` is never used
[INFO] [stdout]  --> src/mapper/nrom128.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn new(prg: &Vec<u8>, chr: &Vec<u8>) -> (Prg, Ppu) {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Prg` is never constructed
[INFO] [stdout]   --> src/mapper/nrom128.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Prg(Vec<u8>);
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Ppu` is never constructed
[INFO] [stdout]   --> src/mapper/nrom128.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct Ppu(Vec<u8>);
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ppu/mod.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Registers {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout]  8 |     pub ppuctrl: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]  9 |     pub ppumask: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 10 |     pub ppustatus: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 11 |     pub oamaddr: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 12 |     pub oamdata: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 13 |     pub ppuscroll: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 14 |     pub ppuaddr: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 15 |     pub ppudata: u8,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub oamdma: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_ROWS` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const TILE_ROWS: usize = 8; // 8x8 tiles
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_BITPLANES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const TILE_BITPLANES: usize = 2; // 2 bitplanes per tile
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TILE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const TILE_BYTES: usize = TILE_ROWS * TILE_BITPLANES; // 16 bytes per tile
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATTRIBUTE_TABLE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const ATTRIBUTE_TABLE_BYTES: usize = 64;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NAMETABLE_BYTES` is never used
[INFO] [stdout]   --> src/ppu/mod.rs:30:7
[INFO] [stdout]    |
[INFO] [stdout] 30 | const NAMETABLE_BYTES: usize = (NAMETABLE_ROWS * NAMETABLE_COLS) + ATTRIBUTE_TABLE_BYTES; // 1024 bytes (0x400)
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `regs` and `oam` are never read
[INFO] [stdout]   --> src/ppu/mod.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Ppu {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 45 |     regs: Registers,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 46 |     oam: [u8; OAM_BYTES],
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE_COLORS` is never used
[INFO] [stdout]  --> src/ppu/palette.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const PALETTE_COLORS: usize = 64;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CXA2025AS` is never used
[INFO] [stdout]  --> src/ppu/palette.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CXA2025AS: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAL` is never used
[INFO] [stdout]   --> src/ppu/palette.rs:73:11
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub const PAL: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COMPOSITE_DIRECT_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:140:11
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub const COMPOSITE_DIRECT_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PVM_STYLE_D93_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:207:11
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub const PVM_STYLE_D93_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NTSC_HARDWARE_FBX` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:274:11
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub const NTSC_HARDWARE_FBX: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_CLASSIC_FBX_FS` is never used
[INFO] [stdout]    --> src/ppu/palette.rs:341:11
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub const NES_CLASSIC_FBX_FS: [[u8; 3]; PALETTE_COLORS] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.05s
[INFO] running `Command { std: "docker" "inspect" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032", kill_on_drop: false }`
[INFO] [stdout] 7a9af34ca6325c389ef3e2c49ae5193825c2f67a52c379e3b2bf4c5595f7d032
