[INFO] cloning repository https://github.com/exfargo/VirtualMachine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/exfargo/VirtualMachine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fexfargo%2FVirtualMachine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fexfargo%2FVirtualMachine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c1f77c793af669e11237fc6e1ba191d4d9579a7a
[INFO] checking exfargo/VirtualMachine against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fexfargo%2FVirtualMachine" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/exfargo/VirtualMachine
[INFO] finished tweaking git repo https://github.com/exfargo/VirtualMachine
[INFO] tweaked toml for git repo https://github.com/exfargo/VirtualMachine written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/exfargo/VirtualMachine on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/exfargo/VirtualMachine 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4f96a4a932234f40854968b63191302a9df8637690a126d881d0978ca5892e9c
[INFO] running `Command { std: "docker" "start" "-a" "4f96a4a932234f40854968b63191302a9df8637690a126d881d0978ca5892e9c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f96a4a932234f40854968b63191302a9df8637690a126d881d0978ca5892e9c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f96a4a932234f40854968b63191302a9df8637690a126d881d0978ca5892e9c", kill_on_drop: false }`
[INFO] [stdout] 4f96a4a932234f40854968b63191302a9df8637690a126d881d0978ca5892e9c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cd8505459fe807e1d0d2f1d5fabc250a6c8e76d60984d4f6aec553954541c5ad
[INFO] running `Command { std: "docker" "start" "-a" "cd8505459fe807e1d0d2f1d5fabc250a6c8e76d60984d4f6aec553954541c5ad", kill_on_drop: false }`
[INFO] [stderr]     Checking sdl2-sys v0.35.2
[INFO] [stderr]     Checking queues v1.1.0
[INFO] [stderr]     Checking sdl2 v0.35.2
[INFO] [stderr]     Checking VirtualMachine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: found module declaration for lib.rs
[INFO] [stdout]   --> src/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod lib;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: lib.rs is the root of this crate's library target
[INFO] [stdout]    = help: to refer to it from other targets, use the library's name as the path
[INFO] [stdout]    = note: `#[warn(special_module_name)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Display`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Display;
[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: `sdl2::keyboard::Keycode::Mute`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::keyboard::Keycode::Mute;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::FpCategory::Zero`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::num::FpCategory::Zero;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::addr_of`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ptr::addr_of;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `combine_to_double_word` and `combine_to_word`
[INFO] [stdout]  --> src/lib/mem/ram.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lib::chip_util::{combine_to_double_word, combine_to_word};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DoubleWord`, `W`, and `Word`
[INFO] [stdout]  --> src/lib/mem/ram.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::lib::mem::{Byte, DoubleWord, W, Word};
[INFO] [stdout]   |                             ^^^^^^^^^^  ^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/lib/bus/bus.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{BTreeMap, HashMap};
[INFO] [stdout]   |                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::hash_map::Entry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_to_string` and `read`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{read, read_to_string};
[INFO] [stdout]   |               ^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DerefMut` and `Deref`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::{Deref, DerefMut};
[INFO] [stdout]   |                ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LockResult`
[INFO] [stdout]  --> src/lib/chip_util/mod.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{LockResult, Mutex, MutexGuard};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: found module declaration for lib.rs
[INFO] [stdout]   --> src/main.rs:13:1
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub mod lib;
[INFO] [stdout]    | ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: lib.rs is the root of this crate's library target
[INFO] [stdout]    = help: to refer to it from other targets, use the library's name as the path
[INFO] [stdout]    = note: `#[warn(special_module_name)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Display`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::Display;
[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: `sdl2::keyboard::Keycode::Mute`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::keyboard::Keycode::Mute;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::num::FpCategory::Zero`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::num::FpCategory::Zero;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ptr::addr_of`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ptr::addr_of;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/lib/cpu/cpu.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `combine_to_double_word` and `combine_to_word`
[INFO] [stdout]  --> src/lib/mem/ram.rs:1:29
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::lib::chip_util::{combine_to_double_word, combine_to_word};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DoubleWord`, `W`, and `Word`
[INFO] [stdout]  --> src/lib/mem/ram.rs:2:29
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::lib::mem::{Byte, DoubleWord, W, Word};
[INFO] [stdout]   |                             ^^^^^^^^^^  ^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> src/lib/bus/bus.rs:2:34
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::{BTreeMap, HashMap};
[INFO] [stdout]   |                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::borrow::Borrow`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::hash_map::Entry`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::collections::hash_map::Entry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_to_string` and `read`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs::{read, read_to_string};
[INFO] [stdout]   |               ^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DerefMut` and `Deref`
[INFO] [stdout]  --> src/lib/gpu/gpu.rs:5:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::ops::{Deref, DerefMut};
[INFO] [stdout]   |                ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LockResult`
[INFO] [stdout]  --> src/lib/chip_util/mod.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::{LockResult, Mutex, MutexGuard};
[INFO] [stdout]   |                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib/bus/bus.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let mut x = self.buffer.get_mut(address.borrow());
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/lib/bus/bus.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let mut x = self.buffer.get_mut(address.borrow());
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `finished_instruction` is assigned to, but never used
[INFO] [stdout]   --> src/lib/gpu/gpu.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut finished_instruction: bool = true;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_finished_instruction` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `finished_instruction` is never read
[INFO] [stdout]   --> src/lib/gpu/gpu.rs:97:30
[INFO] [stdout]    |
[INFO] [stdout] 97 |             if res.is_ok() { finished_instruction = res.unwrap() } else { self.raise_exception(res.err().unwrap()) }
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/lib/bus/bus.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |         let mut x = self.buffer.get_mut(address.borrow());
[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: unused variable: `data`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:24
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:44
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:51
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                                                   ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/lib/bus/bus.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let mut x = self.buffer.get_mut(address.borrow());
[INFO] [stdout]    |             ----^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:211:25
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     let mut m = &mut displays[monitor as usize];
[INFO] [stdout]     |                         ----^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `finished_instruction` is assigned to, but never used
[INFO] [stdout]   --> src/lib/gpu/gpu.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |         let mut finished_instruction: bool = true;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_finished_instruction` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `finished_instruction` is never read
[INFO] [stdout]   --> src/lib/gpu/gpu.rs:97:30
[INFO] [stdout]    |
[INFO] [stdout] 97 |             if res.is_ok() { finished_instruction = res.unwrap() } else { self.raise_exception(res.err().unwrap()) }
[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: `x`
[INFO] [stdout]   --> src/lib/gpu/monitor.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let x = self.data.get_mut(x as usize).unwrap().insert(y as usize, color);
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:24
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:44
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                                            ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:150:51
[INFO] [stdout]     |
[INFO] [stdout] 150 |     fn coincide(&self, data: &Vec<Vector>, x: u8, y: u8) -> Option<Color> {
[INFO] [stdout]     |                                                   ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut bus = Arc::new(Mutex::new(Bus::new()));
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut bref1 = Arc::clone(&bus);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut bref2 = Arc::clone(&bus);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut m0 = Arc::new(Mutex::new(Monitor::new(20, 20)));
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut m2 = Arc::clone(&m0);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:211:25
[INFO] [stdout]     |
[INFO] [stdout] 211 |                     let mut m = &mut displays[monitor as usize];
[INFO] [stdout]     |                         ----^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `CARRY`, `INTERRUPT`, `DECIMAL`, and `BREAK` are never used
[INFO] [stdout]   --> src/lib/cpu/cpu.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl CPU {
[INFO] [stdout]    | -------- associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     const CARRY: usize = 0;
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 53 |     const ZERO: usize = 1;
[INFO] [stdout] 54 |     const INTERRUPT: usize = 2;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 55 |     const DECIMAL: usize = 3;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 56 |     const BREAK: usize = 4;
[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 `fetch_instruction_double_word` is never used
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl GPU {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn fetch_instruction_double_word(&mut self) -> Result<DoubleWord, Byte> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:456:20
[INFO] [stdout]     |
[INFO] [stdout] 456 |                 if self.a_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:462:20
[INFO] [stdout]     |
[INFO] [stdout] 462 |                 if self.x_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:468:20
[INFO] [stdout]     |
[INFO] [stdout] 468 |                 if self.y_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:475:20
[INFO] [stdout]     |
[INFO] [stdout] 475 |                 if self.a_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/lib/gpu/monitor.rs:26:13
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let x = self.data.get_mut(x as usize).unwrap().insert(y as usize, color);
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:481:20
[INFO] [stdout]     |
[INFO] [stdout] 481 |                 if self.x_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:487:20
[INFO] [stdout]     |
[INFO] [stdout] 487 |                 if self.y_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut bus = Arc::new(Mutex::new(Bus::new()));
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut bref1 = Arc::clone(&bus);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut bref2 = Arc::clone(&bus);
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let mut m0 = Arc::new(Mutex::new(Monitor::new(20, 20)));
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut m2 = Arc::clone(&m0);
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `CARRY`, `INTERRUPT`, `DECIMAL`, and `BREAK` are never used
[INFO] [stdout]   --> src/lib/cpu/cpu.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl CPU {
[INFO] [stdout]    | -------- associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     const CARRY: usize = 0;
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 53 |     const ZERO: usize = 1;
[INFO] [stdout] 54 |     const INTERRUPT: usize = 2;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 55 |     const DECIMAL: usize = 3;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 56 |     const BREAK: usize = 4;
[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 `fetch_instruction_double_word` is never used
[INFO] [stdout]    --> src/lib/gpu/gpu.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout]  76 | impl GPU {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 126 |     fn fetch_instruction_double_word(&mut self) -> Result<DoubleWord, Byte> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:456:20
[INFO] [stdout]     |
[INFO] [stdout] 456 |                 if self.a_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:462:20
[INFO] [stdout]     |
[INFO] [stdout] 462 |                 if self.x_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:468:20
[INFO] [stdout]     |
[INFO] [stdout] 468 |                 if self.y_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:475:20
[INFO] [stdout]     |
[INFO] [stdout] 475 |                 if self.a_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:481:20
[INFO] [stdout]     |
[INFO] [stdout] 481 |                 if self.x_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/lib/cpu/cpu.rs:487:20
[INFO] [stdout]     |
[INFO] [stdout] 487 |                 if self.y_register < 0 { self.flag_register.set_bit(CPU::NEGATIVE); }
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib/gpu/monitor.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                     canvas.draw_point(Point::new(x as i32, y as i32));
[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] 52 |                     let _ = canvas.draw_point(Point::new(x as i32, y as i32));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/lib/gpu/monitor.rs:52:21
[INFO] [stdout]    |
[INFO] [stdout] 52 |                     canvas.draw_point(Point::new(x as i32, y as i32));
[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] 52 |                     let _ = canvas.draw_point(Point::new(x as i32, y as i32));
[INFO] [stdout]    |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.20s
[INFO] running `Command { std: "docker" "inspect" "cd8505459fe807e1d0d2f1d5fabc250a6c8e76d60984d4f6aec553954541c5ad", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cd8505459fe807e1d0d2f1d5fabc250a6c8e76d60984d4f6aec553954541c5ad", kill_on_drop: false }`
[INFO] [stdout] cd8505459fe807e1d0d2f1d5fabc250a6c8e76d60984d4f6aec553954541c5ad
