[INFO] cloning repository https://github.com/JanMaier97/nes-emulator
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JanMaier97/nes-emulator" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJanMaier97%2Fnes-emulator", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJanMaier97%2Fnes-emulator'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3f16dedf3d238cef578454aa72a8b63a6b7fab9c
[INFO] checking JanMaier97/nes-emulator against try#b152f5575a2ac7126ae0019e4e679abe9399213e for pr-157841
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJanMaier97%2Fnes-emulator" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/JanMaier97/nes-emulator
[INFO] finished tweaking git repo https://github.com/JanMaier97/nes-emulator
[INFO] tweaked toml for git repo https://github.com/JanMaier97/nes-emulator written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/JanMaier97/nes-emulator on toolchain b152f5575a2ac7126ae0019e4e679abe9399213e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/JanMaier97/nes-emulator 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" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989
[INFO] running `Command { std: "docker" "start" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989", 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" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989" "/opt/rustwide/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989", 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" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989" "/opt/rustwide/cargo-home/bin/cargo" "+b152f5575a2ac7126ae0019e4e679abe9399213e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking either v1.7.0
[INFO] [stderr]     Checking nes_emulator v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `SignedValue`
[INFO] [stdout]  --> src/cpu/bus/address.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |     values::{SignedValue, Value, Value16},
[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: `SignedValue`
[INFO] [stdout]  --> src/cpu/bus/address.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |     values::{SignedValue, Value, Value16},
[INFO] [stdout]   |              ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |             _ => panic!("Opcode {:?} is not implemented yet", instruction.opcode),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             OpGroup::ADC => self.adc(instruction.operand.unwrap()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] 231 |             OpGroup::AND => self.and(instruction.operand.unwrap()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] 232 |             OpGroup::ASL => self.asl(if instruction.operand.is_none() {
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 237 |             OpGroup::BCC => self.bcc(instruction.operand.unwrap().unwrap_right()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 310 |             _ => panic!("Opcode {:?} is not implemented yet", instruction.opcode),
[INFO] [stdout]     |             ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/cpu.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |             _ => panic!("Opcode {:?} is not implemented yet", instruction.opcode),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/cpu.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |             OpGroup::ADC => self.adc(instruction.operand.unwrap()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] 231 |             OpGroup::AND => self.and(instruction.operand.unwrap()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] 232 |             OpGroup::ASL => self.asl(if instruction.operand.is_none() {
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 237 |             OpGroup::BCC => self.bcc(instruction.operand.unwrap().unwrap_right()),
[INFO] [stdout]     |             ------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 310 |             _ => panic!("Opcode {:?} is not implemented yet", instruction.opcode),
[INFO] [stdout]     |             ^ ...and 60 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Instruction` is more private than the item `CPU::read_instruction`
[INFO] [stdout]   --> src/cpu.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn read_instruction(&self) -> Instruction {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `CPU::read_instruction` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Instruction` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/cpu.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Instruction {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_BASE_ADDR` is never used
[INFO] [stdout]   --> src/cpu.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const STACK_BASE_ADDR: Address = Address::from_const(0xFF00);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_MSB` is never used
[INFO] [stdout]   --> src/cpu.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const STACK_MSB: Value = Value::from_const(0x01);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instruction` is never constructed
[INFO] [stdout]   --> src/cpu.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Instruction {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CPU` is never constructed
[INFO] [stdout]   --> src/cpu.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct CPU {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/cpu.rs:41:8
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl CPU {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  41 |     fn from_rom(rom: &Rom) -> Self {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn execute_with_callback<F>(&mut self, mut callback: F)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn execute(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn read_instruction(&self) -> Instruction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     fn get_raw_operand(&self, opcode: OpCode) -> Option<Either<Value, Value16>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn get_operand(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     fn push_stack(&mut self, data: Value) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     fn pop_stack(&mut self) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn read_opcode(&self) -> OpCode {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     fn handle_opcode(&mut self, instruction: &Instruction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     fn fetch_value(&self, operand: Either<Value, Address>) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     fn handle_comparision(&mut self, lhs: Value, rhs: Value) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     fn asl(&mut self, operand: Option<Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     fn and(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn adc(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 358 |     fn adc_value(&mut self, value: Value) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     fn bcc(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     fn bcs(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     fn beq(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     fn bit(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 407 |     fn bmi(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 415 |     fn bne(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     fn bpl(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     fn brk(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 443 |     fn bvc(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn bvs(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 459 |     fn clc(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     fn cld(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     fn cli(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     fn clv(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 475 |     fn cmp(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 480 |     fn cpx(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 485 |     fn cpy(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 490 |     fn dcp(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 495 |     fn dec(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     fn dex(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     fn dey(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     fn eor(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 524 |     fn isb(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 529 |     fn inc(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 537 |     fn inx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 544 |     fn iny(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 551 |     fn jmp(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 555 |     fn jsr(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     fn lda(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 569 |     fn lax(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 574 |     fn ldx(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 579 |     fn ldy(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     fn lsr(&mut self, operand: Option<Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     fn nop(&mut self) {}
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 602 |
[INFO] [stdout] 603 |     fn ora(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 610 |     fn pha(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 614 |     fn php(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     fn pla(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     fn plp(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     fn rla(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 635 |     fn rol(&mut self, operand: Option<Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 657 |     fn ror(&mut self, operand: Option<Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 679 |     fn rra(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 684 |     fn rti(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 691 |     fn rts(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 698 |     fn sax(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 703 |     fn sbc(&mut self, operand: Either<Value, Address>) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 709 |     fn sec(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 713 |     fn sed(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 717 |     fn sei(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     fn sre(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 726 |     fn slo(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 731 |     fn sta(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 735 |     fn stx(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 739 |     fn sty(&mut self, operand: Address) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 743 |     fn tax(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 748 |     fn tay(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 753 |     fn tsx(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 758 |     fn txa(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 763 |     fn txs(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 767 |     fn tya(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 772 |     fn handle_zero_and_negative_flags(&mut self, value: Value) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace` is never used
[INFO] [stdout]    --> src/cpu.rs:778:4
[INFO] [stdout]     |
[INFO] [stdout] 778 | fn trace(cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_raw_instruction` is never used
[INFO] [stdout]    --> src/cpu.rs:800:4
[INFO] [stdout]     |
[INFO] [stdout] 800 | fn format_raw_instruction(instruction: &Instruction) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_interpreted_instruction` is never used
[INFO] [stdout]    --> src/cpu.rs:815:4
[INFO] [stdout]     |
[INFO] [stdout] 815 | fn format_interpreted_instruction(instruction: &Instruction, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_address_operand` is never used
[INFO] [stdout]    --> src/cpu.rs:832:4
[INFO] [stdout]     |
[INFO] [stdout] 832 | fn format_address_operand(addr: Address, instruction: &Instruction, cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_registers` is never used
[INFO] [stdout]    --> src/cpu.rs:906:4
[INFO] [stdout]     |
[INFO] [stdout] 906 | fn format_registers(cpu: &CPU) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RAM` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const RAM: u16 = 0x0000;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RAM_MIRRORS_END` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const RAM_MIRRORS_END: u16 = 0x1FFF;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const PPU_REGISTERS: u16 = 0x2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_REGISTERS_MIRRORS_END` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const PPU_REGISTERS_MIRRORS_END: u16 = 0x3FFF;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROM_START` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const ROM_START: u16 = 0x8000;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROM_END` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const ROM_END: u16 = 0xFFFF;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const VRAM_SIZE: i32 = 2048;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RAM_ADDRESS_MASK` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const RAM_ADDRESS_MASK: u16 = 0b00000111_11111111;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPU_ADDRESS_MASK` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const PPU_ADDRESS_MASK: u16 = 0b00100000_00000111;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAUKT_STACK_POINTER` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const DEFAUKT_STACK_POINTER: u16 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Mem` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait Mem {
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Bus` is never constructed
[INFO] [stdout]   --> src/cpu/bus.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Bus {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `read_prg_rom` are never used
[INFO] [stdout]   --> src/cpu/bus.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl Bus {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 50 |     pub fn new(rom: &Rom) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn read_prg_rom(&self, addr: Address) -> Value {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignedValue` is never constructed
[INFO] [stdout]   --> src/cpu/bus/values.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SignedValue(i8);
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OpGroup` is never used
[INFO] [stdout]    --> src/cpu/opcodes.rs:924:10
[INFO] [stdout]     |
[INFO] [stdout] 924 | pub enum OpGroup {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OpCode` is never constructed
[INFO] [stdout]    --> src/cpu/opcodes.rs:998:12
[INFO] [stdout]     |
[INFO] [stdout] 998 | pub struct OpCode {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `offical` and `unoffical` are never used
[INFO] [stdout]     --> src/cpu/opcodes.rs:1007:14
[INFO] [stdout]      |
[INFO] [stdout] 1006 | impl OpCode {
[INFO] [stdout]      | ----------- associated functions in this implementation
[INFO] [stdout] 1007 |     const fn offical(group: OpGroup, bytes: u8, cycles: u8, mode: AddressingMode) -> OpCode {
[INFO] [stdout]      |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1017 |     const fn unoffical(group: OpGroup, bytes: u8, cycles: u8, mode: AddressingMode) -> OpCode {
[INFO] [stdout]      |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddressingMode` is never used
[INFO] [stdout]     --> src/cpu/opcodes.rs:1029:10
[INFO] [stdout]      |
[INFO] [stdout] 1029 | pub enum AddressingMode {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_opcode` is never used
[INFO] [stdout]     --> src/cpu/opcodes.rs:1045:8
[INFO] [stdout]      |
[INFO] [stdout] 1045 | pub fn get_opcode(raw_opcode: Value) -> OpCode {
[INFO] [stdout]      |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NES_TAG` is never used
[INFO] [stdout]  --> src/rom.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const NES_TAG: [u8; 4] = [0x4E, 0x45, 0x53, 0x1A];
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PRG_ROM_PAGE_SIZE` is never used
[INFO] [stdout]  --> src/rom.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const PRG_ROM_PAGE_SIZE: usize = 16384;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHR_ROM_PAGE_SIZE` is never used
[INFO] [stdout]  --> src/rom.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const CHR_ROM_PAGE_SIZE: usize = 8192;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mirroring` is never used
[INFO] [stdout]  --> src/rom.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum Mirroring {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Rom` is never constructed
[INFO] [stdout]   --> src/rom.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Rom {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `from_file` and `new` are never used
[INFO] [stdout]   --> src/rom.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Rom {
[INFO] [stdout]    | -------- associated functions in this implementation
[INFO] [stdout] 23 |     pub fn from_file(file_path: &str) -> Result<Rom, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn new(raw: &Vec<u8>) -> Result<Rom, String> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Instruction` is more private than the item `cpu::CPU::read_instruction`
[INFO] [stdout]   --> src/cpu.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn read_instruction(&self) -> Instruction {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `cpu::CPU::read_instruction` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Instruction` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/cpu.rs:23:1
[INFO] [stdout]    |
[INFO] [stdout] 23 | struct Instruction {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STACK_BASE_ADDR` is never used
[INFO] [stdout]   --> src/cpu.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const STACK_BASE_ADDR: Address = Address::from_const(0xFF00);
[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 `read_opcode` is never used
[INFO] [stdout]    --> src/cpu.rs:221:8
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl CPU {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn read_opcode(&self) -> OpCode {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRAM_SIZE` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const VRAM_SIZE: i32 = 2048;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAUKT_STACK_POINTER` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const DEFAUKT_STACK_POINTER: u16 = 0;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mem_write_u16` is never used
[INFO] [stdout]   --> src/cpu/bus.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub trait Mem {
[INFO] [stdout]    |           --- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn mem_write_u16(&mut self, addr: Address, data: Value16);
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SignedValue` is never constructed
[INFO] [stdout]   --> src/cpu/bus/values.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SignedValue(i8);
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `cycles` is never read
[INFO] [stdout]     --> src/cpu/opcodes.rs:1001:9
[INFO] [stdout]      |
[INFO] [stdout]  998 | pub struct OpCode {
[INFO] [stdout]      |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1001 |     pub cycles: u8,
[INFO] [stdout]      |         ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `OpCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `chr_rom`, `mapper`, and `screen_mirroring` are never read
[INFO] [stdout]   --> src/rom.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Rom {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 16 |     pub prg_rom: Vec<u8>,
[INFO] [stdout] 17 |     pub chr_rom: Vec<u8>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 18 |     pub mapper: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 19 |     pub screen_mirroring: Mirroring,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Rom` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.29s
[INFO] running `Command { std: "docker" "inspect" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989", kill_on_drop: false }`
[INFO] [stdout] 3ce63c079f8b74516dd74cb8104239ee0daffa42bfb84de5a0312051c53a6989
