[INFO] cloning repository https://github.com/jtharris/nes_play
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jtharris/nes_play" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtharris%2Fnes_play", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtharris%2Fnes_play'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c8da5eef9b4cf0d61de57a2c374a2ed64ac9724b
[INFO] testing jtharris/nes_play against 1.98.0-beta.1 for beta-1.98-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjtharris%2Fnes_play" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jtharris/nes_play
[INFO] finished tweaking git repo https://github.com/jtharris/nes_play
[INFO] tweaked toml for git repo https://github.com/jtharris/nes_play written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jtharris/nes_play on toolchain 1.98.0-beta.1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jtharris/nes_play already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.98.0-beta.1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad
[INFO] running `Command { std: "docker" "start" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", 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" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.104
[INFO] [stderr]    Compiling unicode-width v0.1.9
[INFO] [stderr]    Compiling vec_map v0.8.2
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling clap v2.33.3
[INFO] [stderr]    Compiling nes_play v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/cpu.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Formatter, write};
[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: `format`
[INFO] [stdout]  --> src/instructions/bcs.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, format, Formatter};
[INFO] [stdout]   |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display` and `Formatter`
[INFO] [stdout]  --> src/instructions/factory.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Formatter};
[INFO] [stdout]   |                ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]  --> src/commands.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::convert::TryInto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `INes2Header`
[INFO] [stdout]  --> src/commands.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rom::{INes2Header, INesRom};
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instructions::factory::generate_instruction`
[INFO] [stdout]  --> src/commands.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::instructions::factory::generate_instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/cpu.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |             &AddressingMode::AbsoluteX(base) => 4,
[INFO] [stdout]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/cpu.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |             &AddressingMode::AbsoluteY(base) => 4,
[INFO] [stdout]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/cpu.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |             &AddressingMode::IndirectY(address) => 5,
[INFO] [stdout]     |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cycle` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut cycle: usize = 4;  // TODO:  Make this configurable?
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_cycle` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cycle` is never read
[INFO] [stdout]    --> src/cpu.rs:213:21
[INFO] [stdout]     |
[INFO] [stdout] 213 |                     cycle += new_cycles as usize;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/cpu.rs:336:28
[INFO] [stdout]     |
[INFO] [stdout] 336 |     fn debug_string(&self, cpu: &CPU) -> String {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/commands.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let mut log = File::create(&self.log_filename);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `empty` and `write_mem16` are never used
[INFO] [stdout]    --> src/cpu.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl CPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  19 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn write_mem16(&mut self, addr: u16, data: u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mirroring` is never used
[INFO] [stdout]   --> src/rom.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | enum Mirroring {
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mirroring` is never used
[INFO] [stdout]   --> src/rom.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl INes2Header {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn mirroring(&self) -> Mirroring {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ppu_register_address` is never used
[INFO] [stdout]   --> src/bus.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn ppu_register_address(addr: u16) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `empty` and `write_mem16` are never used
[INFO] [stdout]   --> src/bus.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Bus {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn write_mem16(&mut self, addr: u16, data: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             write!(log, "{:04X}  ", pc);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let _ = write!(log, "{:04X}  ", pc);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 | /             match &instruction {
[INFO] [stdout] 191 | |                 Some(inst) => write!(log, "{:<8} ", inst.bytes_string()),
[INFO] [stdout] 192 | |                 None => write!(log, "       ")
[INFO] [stdout] 193 | |             };
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |             let _ = match &instruction {
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 | /             match &instruction {
[INFO] [stdout] 196 | |                 Some(inst) => {
[INFO] [stdout] 197 | |                     if inst.illegal() {
[INFO] [stdout] 198 | |                         write!(log, "*{:<32}", inst.debug_string(&self))
[INFO] [stdout] ...   |
[INFO] [stdout] 203 | |                 None => write!(log, "{:<25}", "No Instruction")
[INFO] [stdout] 204 | |             };
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |             let _ = match &instruction {
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 | /             write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stdout] 206 | |                    self.accumulator, self.index_register_x, self.index_register_y,
[INFO] [stdout] 207 | |                    self.processor_status, self.stack_pointer);
[INFO] [stdout]     | |_____________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let _ = write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             writeln!(log);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 219 |             let _ = writeln!(log);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.28s
[INFO] running `Command { std: "docker" "inspect" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling nes_play v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `write`
[INFO] [stdout]  --> src/cpu.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Formatter, write};
[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::StatusFlag`
[INFO] [stdout]    --> src/cpu.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 350 |     use crate::cpu::StatusFlag;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format`
[INFO] [stdout]  --> src/instructions/bcs.rs:1:25
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, format, Formatter};
[INFO] [stdout]   |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/instructions/cmp.rs:107:43
[INFO] [stdout]     |
[INFO] [stdout] 107 |         CMP::new(Immediate(0xFF)).execute((&mut cpu));
[INFO] [stdout]     |                                           ^        ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 107 -         CMP::new(Immediate(0xFF)).execute((&mut cpu));
[INFO] [stdout] 107 +         CMP::new(Immediate(0xFF)).execute(&mut cpu);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]    --> src/instructions/cmp.rs:121:43
[INFO] [stdout]     |
[INFO] [stdout] 121 |         CMP::new(Immediate(0x41)).execute((&mut cpu));
[INFO] [stdout]     |                                           ^        ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 121 -         CMP::new(Immediate(0x41)).execute((&mut cpu));
[INFO] [stdout] 121 +         CMP::new(Immediate(0x41)).execute(&mut cpu);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Display` and `Formatter`
[INFO] [stdout]  --> src/instructions/factory.rs:1:16
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::{Display, Formatter};
[INFO] [stdout]   |                ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instructions::jmp::JumpAddressMode::Absolute`
[INFO] [stdout]   --> src/instructions/lax.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     use crate::instructions::jmp::JumpAddressMode::Absolute;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cpu::AddressingMode::IndirectX`
[INFO] [stdout]   --> src/instructions/sre.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     use crate::cpu::AddressingMode::IndirectX;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]  --> src/commands.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::convert::TryInto;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `INes2Header`
[INFO] [stdout]  --> src/commands.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rom::{INes2Header, INesRom};
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::instructions::factory::generate_instruction`
[INFO] [stdout]  --> src/commands.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::instructions::factory::generate_instruction;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/cpu.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |             &AddressingMode::AbsoluteX(base) => 4,
[INFO] [stdout]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `base`
[INFO] [stdout]    --> src/cpu.rs:104:40
[INFO] [stdout]     |
[INFO] [stdout] 104 |             &AddressingMode::AbsoluteY(base) => 4,
[INFO] [stdout]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]    --> src/cpu.rs:106:40
[INFO] [stdout]     |
[INFO] [stdout] 106 |             &AddressingMode::IndirectY(address) => 5,
[INFO] [stdout]     |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `cycle` is assigned to, but never used
[INFO] [stdout]    --> src/cpu.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let mut cycle: usize = 4;  // TODO:  Make this configurable?
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_cycle` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cycle` is never read
[INFO] [stdout]    --> src/cpu.rs:213:21
[INFO] [stdout]     |
[INFO] [stdout] 213 |                     cycle += new_cycles as usize;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cpu`
[INFO] [stdout]    --> src/cpu.rs:336:28
[INFO] [stdout]     |
[INFO] [stdout] 336 |     fn debug_string(&self, cpu: &CPU) -> String {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/commands.rs:52:13
[INFO] [stdout]    |
[INFO] [stdout] 52 |         let mut log = File::create(&self.log_filename);
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mirroring` is never used
[INFO] [stdout]   --> src/rom.rs:15:6
[INFO] [stdout]    |
[INFO] [stdout] 15 | enum Mirroring {
[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 `mirroring` is never used
[INFO] [stdout]   --> src/rom.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl INes2Header {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     fn mirroring(&self) -> Mirroring {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ppu_register_address` is never used
[INFO] [stdout]   --> src/bus.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn ppu_register_address(addr: u16) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:189:13
[INFO] [stdout]     |
[INFO] [stdout] 189 |             write!(log, "{:04X}  ", pc);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 189 |             let _ = write!(log, "{:04X}  ", pc);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 | /             match &instruction {
[INFO] [stdout] 191 | |                 Some(inst) => write!(log, "{:<8} ", inst.bytes_string()),
[INFO] [stdout] 192 | |                 None => write!(log, "       ")
[INFO] [stdout] 193 | |             };
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 190 |             let _ = match &instruction {
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:195:13
[INFO] [stdout]     |
[INFO] [stdout] 195 | /             match &instruction {
[INFO] [stdout] 196 | |                 Some(inst) => {
[INFO] [stdout] 197 | |                     if inst.illegal() {
[INFO] [stdout] 198 | |                         write!(log, "*{:<32}", inst.debug_string(&self))
[INFO] [stdout] ...   |
[INFO] [stdout] 203 | |                 None => write!(log, "{:<25}", "No Instruction")
[INFO] [stdout] 204 | |             };
[INFO] [stdout]     | |_____________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 195 |             let _ = match &instruction {
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 | /             write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stdout] 206 | |                    self.accumulator, self.index_register_x, self.index_register_y,
[INFO] [stdout] 207 | |                    self.processor_status, self.stack_pointer);
[INFO] [stdout]     | |_____________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 205 |             let _ = write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/cpu.rs:219:13
[INFO] [stdout]     |
[INFO] [stdout] 219 |             writeln!(log);
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 219 |             let _ = writeln!(log);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 2.40s
[INFO] running `Command { std: "docker" "inspect" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad" "/opt/rustwide/cargo-home/bin/cargo" "+1.98.0-beta.1" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `write`
[INFO] [stderr]  --> src/cpu.rs:2:27
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::fmt::{Formatter, write};
[INFO] [stderr]   |                           ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::cpu::StatusFlag`
[INFO] [stderr]    --> src/cpu.rs:350:9
[INFO] [stderr]     |
[INFO] [stderr] 350 |     use crate::cpu::StatusFlag;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `format`
[INFO] [stderr]  --> src/instructions/bcs.rs:1:25
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::{Display, format, Formatter};
[INFO] [stderr]   |                         ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around method argument
[INFO] [stderr]    --> src/instructions/cmp.rs:107:43
[INFO] [stderr]     |
[INFO] [stderr] 107 |         CMP::new(Immediate(0xFF)).execute((&mut cpu));
[INFO] [stderr]     |                                           ^        ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 107 -         CMP::new(Immediate(0xFF)).execute((&mut cpu));
[INFO] [stderr] 107 +         CMP::new(Immediate(0xFF)).execute(&mut cpu);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around method argument
[INFO] [stderr]    --> src/instructions/cmp.rs:121:43
[INFO] [stderr]     |
[INFO] [stderr] 121 |         CMP::new(Immediate(0x41)).execute((&mut cpu));
[INFO] [stderr]     |                                           ^        ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 121 -         CMP::new(Immediate(0x41)).execute((&mut cpu));
[INFO] [stderr] 121 +         CMP::new(Immediate(0x41)).execute(&mut cpu);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Display` and `Formatter`
[INFO] [stderr]  --> src/instructions/factory.rs:1:16
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::fmt::{Display, Formatter};
[INFO] [stderr]   |                ^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::instructions::jmp::JumpAddressMode::Absolute`
[INFO] [stderr]   --> src/instructions/lax.rs:60:9
[INFO] [stderr]    |
[INFO] [stderr] 60 |     use crate::instructions::jmp::JumpAddressMode::Absolute;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::cpu::AddressingMode::IndirectX`
[INFO] [stderr]   --> src/instructions/sre.rs:63:9
[INFO] [stderr]    |
[INFO] [stderr] 63 |     use crate::cpu::AddressingMode::IndirectX;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::convert::TryInto`
[INFO] [stderr]  --> src/commands.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::convert::TryInto;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `INes2Header`
[INFO] [stderr]  --> src/commands.rs:4:18
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::rom::{INes2Header, INesRom};
[INFO] [stderr]   |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::instructions::factory::generate_instruction`
[INFO] [stderr]  --> src/commands.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::instructions::factory::generate_instruction;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `base`
[INFO] [stderr]    --> src/cpu.rs:103:40
[INFO] [stderr]     |
[INFO] [stderr] 103 |             &AddressingMode::AbsoluteX(base) => 4,
[INFO] [stderr]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `base`
[INFO] [stderr]    --> src/cpu.rs:104:40
[INFO] [stderr]     |
[INFO] [stderr] 104 |             &AddressingMode::AbsoluteY(base) => 4,
[INFO] [stderr]     |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_base`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]    --> src/cpu.rs:106:40
[INFO] [stderr]     |
[INFO] [stderr] 106 |             &AddressingMode::IndirectY(address) => 5,
[INFO] [stderr]     |                                        ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `cycle` is assigned to, but never used
[INFO] [stderr]    --> src/cpu.rs:183:13
[INFO] [stderr]     |
[INFO] [stderr] 183 |         let mut cycle: usize = 4;  // TODO:  Make this configurable?
[INFO] [stderr]     |             ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_cycle` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `cycle` is never read
[INFO] [stderr]    --> src/cpu.rs:213:21
[INFO] [stderr]     |
[INFO] [stderr] 213 |                     cycle += new_cycles as usize;
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cpu`
[INFO] [stderr]    --> src/cpu.rs:336:28
[INFO] [stderr]     |
[INFO] [stderr] 336 |     fn debug_string(&self, cpu: &CPU) -> String {
[INFO] [stderr]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_cpu`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/commands.rs:52:13
[INFO] [stderr]    |
[INFO] [stderr] 52 |         let mut log = File::create(&self.log_filename);
[INFO] [stderr]    |             ----^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Mirroring` is never used
[INFO] [stderr]   --> src/rom.rs:15:6
[INFO] [stderr]    |
[INFO] [stderr] 15 | enum Mirroring {
[INFO] [stderr]    |      ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `mirroring` is never used
[INFO] [stderr]   --> src/rom.rs:63:8
[INFO] [stderr]    |
[INFO] [stderr] 29 | impl INes2Header {
[INFO] [stderr]    | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     fn mirroring(&self) -> Mirroring {
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `ppu_register_address` is never used
[INFO] [stderr]   --> src/bus.rs:14:4
[INFO] [stderr]    |
[INFO] [stderr] 14 | fn ppu_register_address(addr: u16) -> usize {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/cpu.rs:189:13
[INFO] [stderr]     |
[INFO] [stderr] 189 |             write!(log, "{:04X}  ", pc);
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 189 |             let _ = write!(log, "{:04X}  ", pc);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/cpu.rs:190:13
[INFO] [stderr]     |
[INFO] [stderr] 190 | /             match &instruction {
[INFO] [stderr] 191 | |                 Some(inst) => write!(log, "{:<8} ", inst.bytes_string()),
[INFO] [stderr] 192 | |                 None => write!(log, "       ")
[INFO] [stderr] 193 | |             };
[INFO] [stderr]     | |_____________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 190 |             let _ = match &instruction {
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/cpu.rs:195:13
[INFO] [stderr]     |
[INFO] [stderr] 195 | /             match &instruction {
[INFO] [stderr] 196 | |                 Some(inst) => {
[INFO] [stderr] 197 | |                     if inst.illegal() {
[INFO] [stderr] 198 | |                         write!(log, "*{:<32}", inst.debug_string(&self))
[INFO] [stderr] ...   |
[INFO] [stderr] 203 | |                 None => write!(log, "{:<25}", "No Instruction")
[INFO] [stderr] 204 | |             };
[INFO] [stderr]     | |_____________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 195 |             let _ = match &instruction {
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/cpu.rs:205:13
[INFO] [stderr]     |
[INFO] [stderr] 205 | /             write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stderr] 206 | |                    self.accumulator, self.index_register_x, self.index_register_y,
[INFO] [stderr] 207 | |                    self.processor_status, self.stack_pointer);
[INFO] [stderr]     | |_____________________________________________________________^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 205 |             let _ = write!(log, "A:{:02X} X:{:02X} Y:{:02X} P:{:02X} SP:{:02X} ",
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: unused `Result` that must be used
[INFO] [stderr]    --> src/cpu.rs:219:13
[INFO] [stderr]     |
[INFO] [stderr] 219 |             writeln!(log);
[INFO] [stderr]     |             ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stderr] help: use `let _ = ...` to ignore the resulting value
[INFO] [stderr]     |
[INFO] [stderr] 219 |             let _ = writeln!(log);
[INFO] [stderr]     |             +++++++
[INFO] [stderr] 
[INFO] [stderr] warning: `nes_play` (bin "nes_play" test) generated 26 warnings (run `cargo fix --bin "nes_play" -p nes_play --tests` to apply 16 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nes_play-e10678eb904cee56)
[INFO] [stdout] 
[INFO] [stdout] running 290 tests
[INFO] [stdout] test bus::test::read_16bit_ram_little_endian ... ok
[INFO] [stdout] test bus::test::read_write_16bit_ram ... ok
[INFO] [stdout] test bus::test::write_16bit_ram_little_endian ... ok
[INFO] [stdout] test bus::test::read_write_8bit_ram ... ok
[INFO] [stdout] test cpu::test::absolute_read ... ok
[INFO] [stdout] test cpu::test::absolute_write ... ok
[INFO] [stdout] test cpu::test::absolute_x_read ... ok
[INFO] [stdout] test cpu::test::absolute_x_no_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::absolute_x_write ... ok
[INFO] [stdout] test cpu::test::absolute_x_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::absolute_y_no_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::absolute_x_wrap_around_write ... ok
[INFO] [stdout] test cpu::test::absolute_y_read ... ok
[INFO] [stdout] test cpu::test::absolute_y_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::accumulator_read ... ok
[INFO] [stdout] test cpu::test::absolute_y_write ... ok
[INFO] [stdout] test cpu::test::absolute_y_no_wrap_around_write ... ok
[INFO] [stdout] test cpu::test::absolute_x_no_wrap_around_write ... ok
[INFO] [stdout] test cpu::test::immediate_read ... ok
[INFO] [stdout] test cpu::test::accumulator_write ... ok
[INFO] [stdout] test cpu::test::indirect_x_boundary_read ... ok
[INFO] [stdout] test cpu::test::indirect_x_read ... ok
[INFO] [stdout] test cpu::test::indirect_x_write ... ok
[INFO] [stdout] test cpu::test::indirect_y_read_with_carry ... ok
[INFO] [stdout] test cpu::test::indirect_y_read ... ok
[INFO] [stdout] test cpu::test::indirect_y_write ... ok
[INFO] [stdout] test cpu::test::read_write_16bit_memory ... ok
[INFO] [stdout] test cpu::test::zero_page_write ... ok
[INFO] [stdout] test cpu::test::push_and_pop_stack ... ok
[INFO] [stdout] test cpu::test::push_values_to_stack ... ok
[INFO] [stdout] test cpu::test::zero_page_x_read ... ok
[INFO] [stdout] test cpu::test::zero_page_read ... ok
[INFO] [stdout] test cpu::test::zero_page_x_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::zero_page_x_wrap_around_write ... ok
[INFO] [stdout] test cpu::test::zero_page_x_write ... ok
[INFO] [stdout] test cpu::test::zero_page_y_read ... ok
[INFO] [stdout] test cpu::test::zero_page_y_wrap_around_read ... ok
[INFO] [stdout] test cpu::test::zero_page_y_write ... ok
[INFO] [stdout] test cpu::test::zero_page_y_wrap_around_write ... ok
[INFO] [stdout] test instructions::adc::test::addition_with_carry ... ok
[INFO] [stdout] test instructions::adc::test::addition_with_negative ... ok
[INFO] [stdout] test instructions::adc::test::addition_using_carry ... ok
[INFO] [stdout] test instructions::adc::test::addition_with_zero_and_carry ... ok
[INFO] [stdout] test instructions::adc::test::string_representation ... ok
[INFO] [stdout] test instructions::adc::test::basic_addition ... ok
[INFO] [stdout] test instructions::adc::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::adc::test::nestest_scenario2 ... ok
[INFO] [stdout] test instructions::adc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::and::test::bytes_representation ... ok
[INFO] [stdout] test cpu::test::absolute_y_wrap_around_write ... ok
[INFO] [stdout] test instructions::and::test::negative_flag_and ... ok
[INFO] [stdout] test instructions::and::test::zero_flag_and ... ok
[INFO] [stdout] test instructions::and::test::basic_and ... ok
[INFO] [stdout] test instructions::and::test::string_representation ... ok
[INFO] [stdout] test instructions::asl::test::basic_acc_asl ... ok
[INFO] [stdout] test instructions::asl::test::string_representation ... ok
[INFO] [stdout] test instructions::bcc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::asl::test::mem_asl_with_zero_and_carry ... ok
[INFO] [stdout] test instructions::asl::test::mem_asl_with_negative ... ok
[INFO] [stdout] test instructions::asl::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bcc::test::jump_back ... ok
[INFO] [stdout] test instructions::bcc::test::jump_forward ... ok
[INFO] [stdout] test instructions::bcc::test::no_effect ... ok
[INFO] [stdout] test instructions::bcc::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::bcs::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bcs::test::jump_forward ... ok
[INFO] [stdout] test instructions::bcs::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bcs::test::no_effect ... ok
[INFO] [stdout] test instructions::bcs::test::jump_back ... ok
[INFO] [stdout] test instructions::bcc::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bcs::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::beq::test::bytes_representation ... ok
[INFO] [stdout] test instructions::beq::test::jump_back ... ok
[INFO] [stdout] test instructions::beq::test::jump_forward ... ok
[INFO] [stdout] test instructions::beq::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::beq::test::no_effect ... ok
[INFO] [stdout] test instructions::beq::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bit::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bit::test::string_representation ... ok
[INFO] [stdout] test instructions::bit::test::set_top_bits ... ok
[INFO] [stdout] test instructions::bit::test::clear_top_bits ... ok
[INFO] [stdout] test instructions::bmi::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bmi::test::jump_back ... ok
[INFO] [stdout] test instructions::bmi::test::jump_forward ... ok
[INFO] [stdout] test instructions::bmi::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::bmi::test::no_effect ... ok
[INFO] [stdout] test instructions::bmi::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bne::test::jump_back ... ok
[INFO] [stdout] test instructions::bne::test::no_effect ... ok
[INFO] [stdout] test instructions::bne::test::jump_forward ... ok
[INFO] [stdout] test instructions::bne::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bpl::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bne::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bpl::test::no_effect ... ok
[INFO] [stdout] test instructions::bpl::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::bpl::test::jump_back ... ok
[INFO] [stdout] test instructions::bpl::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bvc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bvc::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::bpl::test::jump_forward ... ok
[INFO] [stdout] test instructions::bvc::test::jump_back ... ok
[INFO] [stdout] test instructions::bvc::test::string_representation_positive ... ok
[INFO] [stdout] test instructions::bvc::test::no_effect ... ok
[INFO] [stdout] test instructions::bvs::test::bytes_representation ... ok
[INFO] [stdout] test instructions::bne::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::bvs::test::jump_back ... ok
[INFO] [stdout] test instructions::bvs::test::jump_forward ... ok
[INFO] [stdout] test instructions::bvc::test::jump_forward ... ok
[INFO] [stdout] test instructions::bvs::test::string_representation_negative ... ok
[INFO] [stdout] test instructions::clc::test::clears_set_c ... ok
[INFO] [stdout] test instructions::bvs::test::no_effect ... ok
[INFO] [stdout] test instructions::bvs::test::string_representation_zero ... ok
[INFO] [stdout] test instructions::clc::test::zeroed_c_is_unchanged ... ok
[INFO] [stdout] test instructions::cld::test::clears_set_d ... ok
[INFO] [stdout] test instructions::clv::test::clears_set_id ... ok
[INFO] [stdout] test instructions::cld::test::zeroed_d_is_unchanged ... ok
[INFO] [stdout] test instructions::cmp::test::bytes_representation ... ok
[INFO] [stdout] test instructions::cmp::test::acc_greater_and_negative ... ok
[INFO] [stdout] test instructions::cmp::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::clv::test::zeroed_id_is_unchanged ... ok
[INFO] [stdout] test instructions::cli::test::clears_set_id ... ok
[INFO] [stdout] test instructions::cli::test::zeroed_id_is_unchanged ... ok
[INFO] [stdout] test instructions::cmp::test::values_are_equal_positive ... ok
[INFO] [stdout] test instructions::cpx::test::acc_greater_and_negative ... ok
[INFO] [stdout] test instructions::cpx::test::bytes_representation ... ok
[INFO] [stdout] test instructions::cmp::test::acc_less_and_positive ... ok
[INFO] [stdout] test instructions::cmp::test::string_representation ... ok
[INFO] [stdout] test instructions::cpx::test::acc_less_and_positive ... ok
[INFO] [stdout] test instructions::cpx::test::string_representation ... ok
[INFO] [stdout] test instructions::cpx::test::bytes_representation_absolute ... ok
[INFO] [stdout] test instructions::cpx::test::values_are_equal_positive ... ok
[INFO] [stdout] test instructions::cpy::test::acc_less_and_positive ... ok
[INFO] [stdout] test instructions::cpy::test::bytes_representation ... ok
[INFO] [stdout] test instructions::cpx::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::cmp::test::nestest_scenario2 ... ok
[INFO] [stdout] test instructions::cpy::test::acc_greater_and_negative ... ok
[INFO] [stdout] test instructions::cpy::test::string_representation ... ok
[INFO] [stdout] test instructions::cpy::test::values_are_equal_positive ... ok
[INFO] [stdout] test instructions::dcp::test::string_representation ... ok
[INFO] [stdout] test instructions::dec::test::bytes_representation ... ok
[INFO] [stdout] test instructions::dec::test::basic_decrement ... ok
[INFO] [stdout] test instructions::dec::test::string_representation ... ok
[INFO] [stdout] test instructions::cpy::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::dec::test::negative_result ... ok
[INFO] [stdout] test instructions::dex::test::negative_wrap ... ok
[INFO] [stdout] test instructions::dex::test::basic_decrement ... ok
[INFO] [stdout] test instructions::dec::test::zero_result ... ok
[INFO] [stdout] test instructions::dcp::test::zero_flag_set ... ok
[INFO] [stdout] test instructions::dex::test::zero_result ... ok
[INFO] [stdout] test instructions::dcp::test::bytes_representation ... ok
[INFO] [stdout] test instructions::dex::test::negative_result ... ok
[INFO] [stdout] test instructions::dey::test::basic_decrement ... ok
[INFO] [stdout] test instructions::dec::test::negative_wrap ... ok
[INFO] [stdout] test instructions::dey::test::negative_wrap ... ok
[INFO] [stdout] test instructions::eor::test::basic_eor ... ok
[INFO] [stdout] test instructions::dey::test::zero_result ... ok
[INFO] [stdout] test instructions::eor::test::bytes_representation ... ok
[INFO] [stdout] test instructions::dey::test::negative_result ... ok
[INFO] [stdout] test instructions::inc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::eor::test::zero_flag_eor ... ok
[INFO] [stdout] test instructions::inc::test::basic_increment ... ok
[INFO] [stdout] test instructions::inc::test::negative_result ... ok
[INFO] [stdout] test instructions::inc::test::zero_wrap ... ok
[INFO] [stdout] test instructions::inc::test::string_representation ... ok
[INFO] [stdout] test instructions::inx::test::basic_increment ... ok
[INFO] [stdout] test instructions::eor::test::string_representation ... ok
[INFO] [stdout] test instructions::iny::test::negative_result ... ok
[INFO] [stdout] test instructions::iny::test::zero_wrap ... ok
[INFO] [stdout] test instructions::inx::test::negative_result ... ok
[INFO] [stdout] test instructions::eor::test::negative_flag_eor ... ok
[INFO] [stdout] test instructions::inx::test::zero_wrap ... ok
[INFO] [stdout] test instructions::iny::test::basic_decrement ... ok
[INFO] [stdout] test instructions::isc::test::string_representation ... ok
[INFO] [stdout] test instructions::jmp::test::bytes_representation ... ok
[INFO] [stdout] test instructions::jmp::test::absolute_jump ... ok
[INFO] [stdout] test instructions::isc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::isc::test::both_instructions_executed ... ok
[INFO] [stdout] test instructions::jmp::test::string_representation_indirect ... ok
[INFO] [stdout] test instructions::jmp::test::indirect_jump ... ok
[INFO] [stdout] test instructions::jsr::test::bytes_representation ... ok
[INFO] [stdout] test instructions::jmp::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::jmp::test::string_representation_absolute ... ok
[INFO] [stdout] test instructions::jsr::test::string_representation ... ok
[INFO] [stdout] test instructions::jsr::test::jump_to_sub ... ok
[INFO] [stdout] test instructions::lax::test::both_registers_are_loaded ... ok
[INFO] [stdout] test instructions::lax::test::string_representation ... ok
[INFO] [stdout] test instructions::lda::test::accumulator_is_loaded_neg ... ok
[INFO] [stdout] test instructions::lda::test::accumulator_is_loaded_no_flags ... ok
[INFO] [stdout] test instructions::lda::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::lda::test::accumulator_is_loaded_zero ... ok
[INFO] [stdout] test instructions::lax::test::bytes_representation ... ok
[INFO] [stdout] test instructions::lda::test::bytes_representation ... ok
[INFO] [stdout] test instructions::ldx::test::bytes_representation ... ok
[INFO] [stdout] test instructions::ldx::test::register_is_loaded_no_flags ... ok
[INFO] [stdout] test instructions::ldx::test::register_is_loaded_zero ... ok
[INFO] [stdout] test instructions::ldx::test::register_is_loaded_neg ... ok
[INFO] [stdout] test instructions::lda::test::string_representation ... ok
[INFO] [stdout] test instructions::ldy::test::register_is_loaded_zero ... ok
[INFO] [stdout] test instructions::ldy::test::register_is_loaded_no_flags ... ok
[INFO] [stdout] test instructions::ldx::test::string_representation ... ok
[INFO] [stdout] test instructions::ldy::test::bytes_representation ... ok
[INFO] [stdout] test instructions::ldy::test::string_representation ... ok
[INFO] [stdout] test instructions::ldy::test::register_is_loaded_neg ... ok
[INFO] [stdout] test instructions::lsr::test::bytes_representation ... ok
[INFO] [stdout] test instructions::lsr::test::shift_with_no_flags_acc ... ok
[INFO] [stdout] test instructions::ora::test::basic_or ... ok
[INFO] [stdout] test instructions::lsr::test::negative_flag_always_cleared ... ok
[INFO] [stdout] test instructions::ora::test::bytes_representation ... ok
[INFO] [stdout] test instructions::lsr::test::string_representation ... ok
[INFO] [stdout] test instructions::ora::test::string_representation ... ok
[INFO] [stdout] test instructions::ora::test::negative_flag_or ... ok
[INFO] [stdout] test instructions::ora::test::zero_flag_or ... ok
[INFO] [stdout] test instructions::lsr::test::shift_with_zero_and_carry_set ... ok
[INFO] [stdout] test instructions::pha::test::acc_is_pushed ... ok
[INFO] [stdout] test instructions::php::test::s_is_pushed_no_change ... ok
[INFO] [stdout] test instructions::php::test::s_is_pushed_with_b_flag ... ok
[INFO] [stdout] test instructions::rol::test::bytes_representation ... ok
[INFO] [stdout] test instructions::pla::test::acc_is_pulled ... ok
[INFO] [stdout] test instructions::rol::test::rotate_acc_carry_0_to_1 ... ok
[INFO] [stdout] test instructions::plp::test::s_is_pulled ... ok
[INFO] [stdout] test instructions::plp::test::s_is_pulled_ignoring_bits ... ok
[INFO] [stdout] test instructions::rol::test::rotate_acc_carry_1_to_0 ... ok
[INFO] [stdout] test instructions::rla::test::basic_behavior ... ok
[INFO] [stdout] test instructions::rla::test::bytes_representation ... ok
[INFO] [stdout] test instructions::rol::test::string_representation ... ok
[INFO] [stdout] test instructions::pla::test::acc_is_pulled_zero_flag ... ok
[INFO] [stdout] test instructions::ror::test::rotate_acc_carry_0_to_1 ... ok
[INFO] [stdout] test instructions::ror::test::rotate_acc_carry_1_to_0 ... ok
[INFO] [stdout] test instructions::ror::test::rotate_mem_with_zero ... ok
[INFO] [stdout] test instructions::rla::test::string_representation ... ok
[INFO] [stdout] test instructions::ror::test::bytes_representation ... ok
[INFO] [stdout] test instructions::rra::test::bytes_representation ... ok
[INFO] [stdout] test instructions::ror::test::string_representation ... ok
[INFO] [stdout] test instructions::rra::test::string_representation ... ok
[INFO] [stdout] test instructions::rol::test::rotate_mem_with_zero ... ok
[INFO] [stdout] test instructions::rra::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::rti::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::rts::test::values_all_pulled ... ok
[INFO] [stdout] test instructions::rti::test::nestest_scenario2 ... ok
[INFO] [stdout] test instructions::sax::test::string_representation ... ok
[INFO] [stdout] test instructions::sax::test::bytes_representation ... ok
[INFO] [stdout] test instructions::rti::test::values_all_pulled ... ok
[INFO] [stdout] test instructions::sbc::test::bytes_representation ... ok
[INFO] [stdout] test instructions::sbc::test::basic_sub_without_existing_carry ... ok
[INFO] [stdout] test instructions::sax::test::basic_write ... ok
[INFO] [stdout] test instructions::sbc::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::sbc::test::basic_sub_with_carry_set ... ok
[INFO] [stdout] test instructions::sbc::test::nestest_scenario2 ... ok
[INFO] [stdout] test instructions::sec::test::confirm_carry_set ... ok
[INFO] [stdout] test instructions::sbc::test::sub_setting_negative ... ok
[INFO] [stdout] test instructions::sed::test::existing_decimal_set ... ok
[INFO] [stdout] test instructions::sec::test::existing_carry_set ... ok
[INFO] [stdout] test instructions::sed::test::confirm_decimal_set ... ok
[INFO] [stdout] test instructions::sbc::test::sub_with_overflow_cleared ... ok
[INFO] [stdout] test instructions::sbc::test::string_representation ... ok
[INFO] [stdout] test instructions::sei::test::existing_interrupt_set ... ok
[INFO] [stdout] test instructions::slo::test::bytes_representation ... ok
[INFO] [stdout] test instructions::slo::test::basic_operation ... ok
[INFO] [stdout] test instructions::slo::test::nestest_scenario1 ... ok
[INFO] [stdout] test instructions::slo::test::string_representation ... ok
[INFO] [stdout] test instructions::sei::test::confirm_interrupt_set ... ok
[INFO] [stdout] test instructions::sre::test::combined_behavior ... ok
[INFO] [stdout] test instructions::sre::test::bytes_representation ... ok
[INFO] [stdout] test instructions::sre::test::string_representation ... ok
[INFO] [stdout] test instructions::sta::test::absolute_address_mode ... ok
[INFO] [stdout] test instructions::sta::test::acc_is_stored ... ok
[INFO] [stdout] test instructions::stx::test::string_representation ... ok
[INFO] [stdout] test instructions::sty::test::bytes_representation ... ok
[INFO] [stdout] test instructions::stx::test::bytes_representation ... ok
[INFO] [stdout] test instructions::sta::test::string_representation ... ok
[INFO] [stdout] test instructions::sty::test::string_representation ... ok
[INFO] [stdout] test instructions::stx::test::x_is_stored ... ok
[INFO] [stdout] test instructions::sta::test::bytes_representation ... ok
[INFO] [stdout] test instructions::tax::test::copies_to_x_no_flags ... ok
[INFO] [stdout] test instructions::sty::test::y_is_stored ... ok
[INFO] [stdout] test instructions::tax::test::copies_to_x_negative_flag ... ok
[INFO] [stdout] test instructions::tay::test::copies_to_y_negative_flag ... ok
[INFO] [stdout] test instructions::tay::test::copies_to_y_zero_flag ... ok
[INFO] [stdout] test instructions::tax::test::copies_to_x_zero_flag ... ok
[INFO] [stdout] test instructions::tay::test::copies_to_y_no_flags ... ok
[INFO] [stdout] test instructions::txa::test::copies_to_acc_negative_flag ... ok
[INFO] [stdout] test instructions::txa::test::copies_to_acc_no_flags ... ok
[INFO] [stdout] test instructions::tsx::test::copies_to_x_no_flags ... ok
[INFO] [stdout] test instructions::tya::test::copies_to_acc_negative_flag ... ok
[INFO] [stdout] test instructions::tya::test::copies_to_acc_no_flags ... ok
[INFO] [stdout] test instructions::txa::test::copies_to_acc_zero_flag ... ok
[INFO] [stdout] test instructions::tsx::test::copies_to_x_negative_flag ... ok
[INFO] [stdout] test instructions::txs::test::copies_to_stack ... ok
[INFO] [stdout] test instructions::tsx::test::copies_to_x_zero_flag ... ok
[INFO] [stdout] test instructions::tya::test::copies_to_acc_zero_flag ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 290 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad", kill_on_drop: false }`
[INFO] [stdout] 90536e286a0f21b4e2a19f5aaa993be18f8e205b444c826c28612a726dd5a4ad
