[INFO] cloning repository https://github.com/endaytrer/mips-emu
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/endaytrer/mips-emu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0487ba42127b50fc32ac313cd9d37ea80ffea7bc
[INFO] testing endaytrer/mips-emu against try#b8e88e5ddf5521a9f43ee3f62a702388c713e4bb for pr-155114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu" "/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/endaytrer/mips-emu
[INFO] finished tweaking git repo https://github.com/endaytrer/mips-emu
[INFO] tweaked toml for git repo https://github.com/endaytrer/mips-emu written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/endaytrer/mips-emu on toolchain b8e88e5ddf5521a9f43ee3f62a702388c713e4bb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/endaytrer/mips-emu 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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] testing endaytrer/mips-emu against try#b8e88e5ddf5521a9f43ee3f62a702388c713e4bb for pr-155114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fendaytrer%2Fmips-emu" "/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/endaytrer/mips-emu
[INFO] finished tweaking git repo https://github.com/endaytrer/mips-emu
[INFO] tweaked toml for git repo https://github.com/endaytrer/mips-emu written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/endaytrer/mips-emu on toolchain b8e88e5ddf5521a9f43ee3f62a702388c713e4bb
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/endaytrer/mips-emu 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" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "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] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded elf v0.7.2
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 79f8553d83e2321e53b32592590555abb66783ff67a6ef06436fb6b8c6a937a7
[INFO] running `Command { std: "docker" "start" "-a" "79f8553d83e2321e53b32592590555abb66783ff67a6ef06436fb6b8c6a937a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "79f8553d83e2321e53b32592590555abb66783ff67a6ef06436fb6b8c6a937a7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "79f8553d83e2321e53b32592590555abb66783ff67a6ef06436fb6b8c6a937a7", kill_on_drop: false }`
[INFO] [stdout] 79f8553d83e2321e53b32592590555abb66783ff67a6ef06436fb6b8c6a937a7
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2459e204e5c13a27c05058bbd4150ab601b6b278eb5a1974c53d171bbdfe7d5a
[INFO] running `Command { std: "docker" "start" "-a" "2459e204e5c13a27c05058bbd4150ab601b6b278eb5a1974c53d171bbdfe7d5a", kill_on_drop: false }`
[INFO] [stderr]    Compiling elf v0.7.2
[INFO] [stderr]    Compiling mips-emu v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Arc`, `Mutex`, and `thread`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{thread, sync::{Arc, Mutex}};
[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 imports: `UART_BASE`, `UART_END`, `VIRTIO_BASE`, and `VIRTIO_END`
[INFO] [stdout]  --> src/main.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::bus::{UART_BASE, UART_END, VIRTIO_BASE, VIRTIO_END};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instruction`
[INFO] [stdout]  --> src/main.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::cpu::{Cpu, Instruction};
[INFO] [stdout]   |                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/cpu.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |         for i in 0..cycles {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGSIZE` is never used
[INFO] [stdout]   --> src/cpu.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const PGSIZE: u32 = 0x1000;
[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 `ZERO` is never used
[INFO] [stdout]   --> src/cpu.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ZERO: u8 = 0;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AT` is never used
[INFO] [stdout]   --> src/cpu.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const AT: u8   = 1;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `V0` is never used
[INFO] [stdout]   --> src/cpu.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const V0: u8   = 2;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `V1` is never used
[INFO] [stdout]   --> src/cpu.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const V1: u8   = 3;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A0` is never used
[INFO] [stdout]   --> src/cpu.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const A0: u8   = 4;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A1` is never used
[INFO] [stdout]   --> src/cpu.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const A1: u8   = 5;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A2` is never used
[INFO] [stdout]   --> src/cpu.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const A2: u8   = 6;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A3` is never used
[INFO] [stdout]   --> src/cpu.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const A3: u8   = 7;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T0` is never used
[INFO] [stdout]   --> src/cpu.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const T0: u8   = 8;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T1` is never used
[INFO] [stdout]   --> src/cpu.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const T1: u8   = 9;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T2` is never used
[INFO] [stdout]   --> src/cpu.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const T2: u8   = 10;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T3` is never used
[INFO] [stdout]   --> src/cpu.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const T3: u8   = 11;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T4` is never used
[INFO] [stdout]   --> src/cpu.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const T4: u8   = 12;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T5` is never used
[INFO] [stdout]   --> src/cpu.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const T5: u8   = 13;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T6` is never used
[INFO] [stdout]   --> src/cpu.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const T6: u8   = 14;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T7` is never used
[INFO] [stdout]   --> src/cpu.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const T7: u8   = 15;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S0` is never used
[INFO] [stdout]   --> src/cpu.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const S0: u8   = 16;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S1` is never used
[INFO] [stdout]   --> src/cpu.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const S1: u8   = 17;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S2` is never used
[INFO] [stdout]   --> src/cpu.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const S2: u8   = 18;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S3` is never used
[INFO] [stdout]   --> src/cpu.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const S3: u8   = 19;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S4` is never used
[INFO] [stdout]   --> src/cpu.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const S4: u8   = 20;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S5` is never used
[INFO] [stdout]   --> src/cpu.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const S5: u8   = 21;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S6` is never used
[INFO] [stdout]   --> src/cpu.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const S6: u8   = 22;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S7` is never used
[INFO] [stdout]   --> src/cpu.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const S7: u8   = 23;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T8` is never used
[INFO] [stdout]   --> src/cpu.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const T8: u8   = 24;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T9` is never used
[INFO] [stdout]   --> src/cpu.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const T9: u8   = 25;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K0` is never used
[INFO] [stdout]   --> src/cpu.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const K0: u8   = 26;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K1` is never used
[INFO] [stdout]   --> src/cpu.rs:45:11
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub const K1: u8   = 27;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GP` is never used
[INFO] [stdout]   --> src/cpu.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const GP: u8   = 28;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SP` is never used
[INFO] [stdout]   --> src/cpu.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const SP: u8   = 29;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FP` is never used
[INFO] [stdout]   --> src/cpu.rs:48:11
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub const FP: u8   = 30;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RA` is never used
[INFO] [stdout]   --> src/cpu.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const RA: u8   = 31;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `print_status`, `interrupt`, and `run` are never used
[INFO] [stdout]    --> src/cpu.rs:476:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl Cpu {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn print_status(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn interrupt(cause: Arc<Mutex<u32>>, level: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub fn run(&mut self, stop_signal: Arc<Mutex<bool>>) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timer` is never read
[INFO] [stdout]   --> src/coprocessor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Coprocessor0 {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 17 |     pub timer: thread::JoinHandle<()>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_raw_cause` and `load_rom` are never used
[INFO] [stdout]   --> src/bus.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Bus {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn get_raw_cause(&self) -> Arc<Mutex<u32>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn load_rom(&mut self, file: &str) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `load_binary` is never used
[INFO] [stdout]   --> src/rom.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Rom {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn load_binary(&mut self, filename: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UART_IRQ` is never used
[INFO] [stdout]   --> src/devices/uart.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const UART_IRQ: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interrupting` is never read
[INFO] [stdout]   --> src/devices/uart.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Uart {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 56 |     uart: Arc<(Mutex<[u8; UART_SIZE as usize]>, Condvar)>,
[INFO] [stdout] 57 |     interrupting: Arc<AtomicBool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_interrupting` is never used
[INFO] [stdout]    --> src/devices/uart.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl Uart {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_interrupting(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_IRQ` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const VIRTIO_IRQ: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRING_DESC_SIZE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const VRING_DESC_SIZE: u32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SECTOR_SIZE: u32 = 512;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTQ_DESC_F_NEXT` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTQ_DESC_F_NEXT: u32 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTQ_DESC_F_WRITE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VIRTQ_DESC_F_WRITE: u32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `desc_addr`, `avail_addr`, and `used_addr` are never read
[INFO] [stdout]    --> src/devices/virtio.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct VirtqueueAddr {
[INFO] [stdout]     |        ------------- fields in this struct
[INFO] [stdout] 155 |     /// The address that starts actual descriptors (16 bytes each).
[INFO] [stdout] 156 |     desc_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     /// The address that starts a ring of available descriptors.
[INFO] [stdout] 158 |     avail_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 159 |     /// The address that starts a ring of used descriptors.
[INFO] [stdout] 160 |     used_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VirtqueueAddr` 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: struct `VirtqDesc` is never constructed
[INFO] [stdout]    --> src/devices/virtio.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | struct VirtqDesc {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/devices/virtio.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | impl VirtqDesc {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtqAvail` is never constructed
[INFO] [stdout]    --> src/devices/virtio.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 | struct VirtqAvail {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/devices/virtio.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl VirtqAvail {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 258 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `disk` is never read
[INFO] [stdout]    --> src/devices/virtio.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct Virtio {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 282 |     disk: Vec<u8>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `virtqueue`, `is_interrupting`, and `initialize` are never used
[INFO] [stdout]    --> src/devices/virtio.rs:340:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | impl Virtio {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn virtqueue(&self) -> VirtqueueAddr {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn is_interrupting(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn initialize(&mut self, binary: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Interrupt`, `DataBusError`, `Break`, `Reserved`, and `Overflow` are never constructed
[INFO] [stdout]   --> src/exception.rs:3:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | pub enum Exception {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  3 |     Interrupt = 0,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |     DataBusError = 7,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  9 |     Syscall = 8,
[INFO] [stdout] 10 |     Break = 9,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     Reserved = 10,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 12 |     Overflow = 12
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Exception` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_byte_from_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn get_byte_from_halfword_big_endian(src: u16, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_byte_from_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn get_byte_from_word_big_endian(src: u32, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_halfword_from_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn get_halfword_from_word_big_endian(src: u32, offset: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_halfword_small_endian` is never used
[INFO] [stdout]   --> src/utils.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn set_byte_of_halfword_small_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn set_byte_of_halfword_big_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn set_byte_of_word_big_endian(src: u32, offset: u8, data: u8) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_halfword_of_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn set_halfword_of_word_big_endian(src: u32, offset: u8, data: u16) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `concat_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn concat_halfword_big_endian(src: [u8; 2]) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `concat_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn concat_word_big_endian(src: [u8; 4]) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_halfword` is never used
[INFO] [stdout]   --> src/utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl Instruction {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]  66 |     // R types
[INFO] [stdout]  67 |     pub fn sll(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn srl(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn sra(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn jr(rs: u8) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn syscall() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn mfhi(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn mthi(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn mflo(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn mtlo(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn mult(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn multu(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn div(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn divu(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn add(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn addu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn sub(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn subu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn and(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn or(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn xor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn nor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn slt(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn sltu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn mfc0(rt: u8, rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mtc0(rt: u8, rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn eret() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn beq(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn bne(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn addi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn addiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn slti(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn sltiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn andi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn ori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn xori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn lui(rt: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn lw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn lbu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn lhu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn sb(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn sh(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn sw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn ll(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn sc(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn jal(imm: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const USER: u32 = 0x8;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEAP` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const HEAP: u32 = 0x10008000;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dirty` is never used
[INFO] [stdout]   --> src/memory.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PTE {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn dirty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_byte_from_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 56 - pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout] 56 + pub const GET_BYTE_FROM_HALFWORD: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_byte_from_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:57:11
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 57 - pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout] 57 + pub const GET_BYTE_FROM_WORD: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_halfword_from_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 58 - pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout] 58 + pub const GET_HALFWORD_FROM_WORD: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_HALFWORD`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 60 - pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout] 60 + pub const SET_BYTE_OF_WORD: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_halfword_of_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 61 - pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout] 61 + pub const SET_HALFWORD_OF_WORD: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `concat_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 62 - pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout] 62 + pub const CONCAT_HALFWORD: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `concat_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 63 - pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout] 63 + pub const CONCAT_WORD: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.29s
[INFO] running `Command { std: "docker" "inspect" "2459e204e5c13a27c05058bbd4150ab601b6b278eb5a1974c53d171bbdfe7d5a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2459e204e5c13a27c05058bbd4150ab601b6b278eb5a1974c53d171bbdfe7d5a", kill_on_drop: false }`
[INFO] [stdout] 2459e204e5c13a27c05058bbd4150ab601b6b278eb5a1974c53d171bbdfe7d5a
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 288686334e3ff5cd8573c36384442aa18c987ea1809b5f54e572910153db75d7
[INFO] running `Command { std: "docker" "start" "-a" "288686334e3ff5cd8573c36384442aa18c987ea1809b5f54e572910153db75d7", kill_on_drop: false }`
[INFO] [stderr]    Compiling mips-emu v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Arc`, `Mutex`, and `thread`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{thread, sync::{Arc, Mutex}};
[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 imports: `UART_BASE`, `UART_END`, `VIRTIO_BASE`, and `VIRTIO_END`
[INFO] [stdout]  --> src/main.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::bus::{UART_BASE, UART_END, VIRTIO_BASE, VIRTIO_END};
[INFO] [stdout]   |                  ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instruction`
[INFO] [stdout]  --> src/main.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::cpu::{Cpu, Instruction};
[INFO] [stdout]   |                       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cpu` and `Instruction`
[INFO] [stdout]  --> src/test/instruction_test.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::cpu::{Cpu, Instruction};
[INFO] [stdout]   |                  ^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/cpu.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |         for i in 0..cycles {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PGSIZE` is never used
[INFO] [stdout]   --> src/cpu.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const PGSIZE: u32 = 0x1000;
[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 `ZERO` is never used
[INFO] [stdout]   --> src/cpu.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ZERO: u8 = 0;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AT` is never used
[INFO] [stdout]   --> src/cpu.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const AT: u8   = 1;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `V0` is never used
[INFO] [stdout]   --> src/cpu.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const V0: u8   = 2;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `V1` is never used
[INFO] [stdout]   --> src/cpu.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const V1: u8   = 3;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A0` is never used
[INFO] [stdout]   --> src/cpu.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const A0: u8   = 4;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A1` is never used
[INFO] [stdout]   --> src/cpu.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const A1: u8   = 5;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A2` is never used
[INFO] [stdout]   --> src/cpu.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const A2: u8   = 6;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `A3` is never used
[INFO] [stdout]   --> src/cpu.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const A3: u8   = 7;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T0` is never used
[INFO] [stdout]   --> src/cpu.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const T0: u8   = 8;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T1` is never used
[INFO] [stdout]   --> src/cpu.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const T1: u8   = 9;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T2` is never used
[INFO] [stdout]   --> src/cpu.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const T2: u8   = 10;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T3` is never used
[INFO] [stdout]   --> src/cpu.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const T3: u8   = 11;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T4` is never used
[INFO] [stdout]   --> src/cpu.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const T4: u8   = 12;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T5` is never used
[INFO] [stdout]   --> src/cpu.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const T5: u8   = 13;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T6` is never used
[INFO] [stdout]   --> src/cpu.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const T6: u8   = 14;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T7` is never used
[INFO] [stdout]   --> src/cpu.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const T7: u8   = 15;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S0` is never used
[INFO] [stdout]   --> src/cpu.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const S0: u8   = 16;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S1` is never used
[INFO] [stdout]   --> src/cpu.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const S1: u8   = 17;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S2` is never used
[INFO] [stdout]   --> src/cpu.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const S2: u8   = 18;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S3` is never used
[INFO] [stdout]   --> src/cpu.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const S3: u8   = 19;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S4` is never used
[INFO] [stdout]   --> src/cpu.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const S4: u8   = 20;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S5` is never used
[INFO] [stdout]   --> src/cpu.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const S5: u8   = 21;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S6` is never used
[INFO] [stdout]   --> src/cpu.rs:40:11
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub const S6: u8   = 22;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `S7` is never used
[INFO] [stdout]   --> src/cpu.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub const S7: u8   = 23;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T8` is never used
[INFO] [stdout]   --> src/cpu.rs:42:11
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub const T8: u8   = 24;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `T9` is never used
[INFO] [stdout]   --> src/cpu.rs:43:11
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub const T9: u8   = 25;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K0` is never used
[INFO] [stdout]   --> src/cpu.rs:44:11
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub const K0: u8   = 26;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `K1` is never used
[INFO] [stdout]   --> src/cpu.rs:45:11
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub const K1: u8   = 27;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GP` is never used
[INFO] [stdout]   --> src/cpu.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const GP: u8   = 28;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SP` is never used
[INFO] [stdout]   --> src/cpu.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const SP: u8   = 29;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FP` is never used
[INFO] [stdout]   --> src/cpu.rs:48:11
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub const FP: u8   = 30;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RA` is never used
[INFO] [stdout]   --> src/cpu.rs:49:11
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub const RA: u8   = 31;
[INFO] [stdout]    |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `print_status`, `interrupt`, and `run` are never used
[INFO] [stdout]    --> src/cpu.rs:476:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl Cpu {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn print_status(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn interrupt(cause: Arc<Mutex<u32>>, level: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 493 |     pub fn run(&mut self, stop_signal: Arc<Mutex<bool>>) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timer` is never read
[INFO] [stdout]   --> src/coprocessor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Coprocessor0 {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 17 |     pub timer: thread::JoinHandle<()>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_raw_cause` and `load_rom` are never used
[INFO] [stdout]   --> src/bus.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl Bus {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn get_raw_cause(&self) -> Arc<Mutex<u32>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn load_rom(&mut self, file: &str) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `load_binary` is never used
[INFO] [stdout]   --> src/rom.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Rom {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn load_binary(&mut self, filename: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UART_IRQ` is never used
[INFO] [stdout]   --> src/devices/uart.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const UART_IRQ: u32 = 10;
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `interrupting` is never read
[INFO] [stdout]   --> src/devices/uart.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct Uart {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 56 |     uart: Arc<(Mutex<[u8; UART_SIZE as usize]>, Condvar)>,
[INFO] [stdout] 57 |     interrupting: Arc<AtomicBool>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_interrupting` is never used
[INFO] [stdout]    --> src/devices/uart.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  60 | impl Uart {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_interrupting(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTIO_IRQ` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const VIRTIO_IRQ: u32 = 1;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VRING_DESC_SIZE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const VRING_DESC_SIZE: u32 = 16;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SECTOR_SIZE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const SECTOR_SIZE: u32 = 512;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTQ_DESC_F_NEXT` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTQ_DESC_F_NEXT: u32 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTQ_DESC_F_WRITE` is never used
[INFO] [stdout]   --> src/devices/virtio.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VIRTQ_DESC_F_WRITE: u32 = 2;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `desc_addr`, `avail_addr`, and `used_addr` are never read
[INFO] [stdout]    --> src/devices/virtio.rs:156:5
[INFO] [stdout]     |
[INFO] [stdout] 154 | struct VirtqueueAddr {
[INFO] [stdout]     |        ------------- fields in this struct
[INFO] [stdout] 155 |     /// The address that starts actual descriptors (16 bytes each).
[INFO] [stdout] 156 |     desc_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     /// The address that starts a ring of available descriptors.
[INFO] [stdout] 158 |     avail_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 159 |     /// The address that starts a ring of used descriptors.
[INFO] [stdout] 160 |     used_addr: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VirtqueueAddr` 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: struct `VirtqDesc` is never constructed
[INFO] [stdout]    --> src/devices/virtio.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | struct VirtqDesc {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/devices/virtio.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 223 | impl VirtqDesc {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VirtqAvail` is never constructed
[INFO] [stdout]    --> src/devices/virtio.rs:251:8
[INFO] [stdout]     |
[INFO] [stdout] 251 | struct VirtqAvail {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/devices/virtio.rs:258:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl VirtqAvail {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 258 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `disk` is never read
[INFO] [stdout]    --> src/devices/virtio.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct Virtio {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 282 |     disk: Vec<u8>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `virtqueue`, `is_interrupting`, and `initialize` are never used
[INFO] [stdout]    --> src/devices/virtio.rs:340:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | impl Virtio {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn virtqueue(&self) -> VirtqueueAddr {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 357 |     pub fn is_interrupting(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn initialize(&mut self, binary: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Interrupt`, `DataBusError`, `Break`, `Reserved`, and `Overflow` are never constructed
[INFO] [stdout]   --> src/exception.rs:3:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | pub enum Exception {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout]  3 |     Interrupt = 0,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |     DataBusError = 7,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]  9 |     Syscall = 8,
[INFO] [stdout] 10 |     Break = 9,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     Reserved = 10,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 12 |     Overflow = 12
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Exception` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_byte_from_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn get_byte_from_halfword_big_endian(src: u16, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_byte_from_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn get_byte_from_word_big_endian(src: u32, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_halfword_from_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn get_halfword_from_word_big_endian(src: u32, offset: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_halfword_small_endian` is never used
[INFO] [stdout]   --> src/utils.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn set_byte_of_halfword_small_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn set_byte_of_halfword_big_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_byte_of_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn set_byte_of_word_big_endian(src: u32, offset: u8, data: u8) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_halfword_of_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:40:4
[INFO] [stdout]    |
[INFO] [stdout] 40 | fn set_halfword_of_word_big_endian(src: u32, offset: u8, data: u16) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `concat_halfword_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn concat_halfword_big_endian(src: [u8; 2]) -> u16 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `concat_word_big_endian` is never used
[INFO] [stdout]   --> src/utils.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn concat_word_big_endian(src: [u8; 4]) -> u32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_halfword` is never used
[INFO] [stdout]   --> src/utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/utils.rs:67:12
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl Instruction {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]  66 |     // R types
[INFO] [stdout]  67 |     pub fn sll(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn srl(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn sra(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn jr(rs: u8) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn syscall() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn mfhi(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn mthi(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn mflo(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn mtlo(rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn mult(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn multu(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn div(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn divu(rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn add(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn addu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn sub(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn subu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn and(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn or(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn xor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn nor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn slt(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn sltu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn mfc0(rt: u8, rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mtc0(rt: u8, rd: u8) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn eret() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn beq(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn bne(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn addi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn addiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn slti(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn sltiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn andi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn ori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn xori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn lui(rt: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn lw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn lbu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn lhu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn sb(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn sh(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn sw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn ll(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn sc(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn jal(imm: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `USER` is never used
[INFO] [stdout]   --> src/memory.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const USER: u32 = 0x8;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEAP` is never used
[INFO] [stdout]   --> src/memory.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const HEAP: u32 = 0x10008000;
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dirty` is never used
[INFO] [stdout]   --> src/memory.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl PTE {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn dirty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_byte_from_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:56:11
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 56 - pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout] 56 + pub const GET_BYTE_FROM_HALFWORD: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_byte_from_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:57:11
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 57 - pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout] 57 + pub const GET_BYTE_FROM_WORD: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `get_halfword_from_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 58 - pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout] 58 + pub const GET_HALFWORD_FROM_WORD: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:59:11
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_HALFWORD`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_byte_of_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:60:11
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 60 - pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout] 60 + pub const SET_BYTE_OF_WORD: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `set_halfword_of_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:61:11
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 61 - pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout] 61 + pub const SET_HALFWORD_OF_WORD: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `concat_halfword` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:62:11
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 62 - pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout] 62 + pub const CONCAT_HALFWORD: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `concat_word` should have an upper case name
[INFO] [stdout]   --> src/utils.rs:63:11
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]    |
[INFO] [stdout] 63 - pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout] 63 + pub const CONCAT_WORD: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.48s
[INFO] running `Command { std: "docker" "inspect" "288686334e3ff5cd8573c36384442aa18c987ea1809b5f54e572910153db75d7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "288686334e3ff5cd8573c36384442aa18c987ea1809b5f54e572910153db75d7", kill_on_drop: false }`
[INFO] [stdout] 288686334e3ff5cd8573c36384442aa18c987ea1809b5f54e572910153db75d7
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+b8e88e5ddf5521a9f43ee3f62a702388c713e4bb" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] d20cc133825019ed6d7cabf32ed4d8e91bb366906aaaa6ca3ae1158efedff057
[INFO] running `Command { std: "docker" "start" "-a" "d20cc133825019ed6d7cabf32ed4d8e91bb366906aaaa6ca3ae1158efedff057", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `Arc`, `Mutex`, and `thread`
[INFO] [stderr]  --> src/main.rs:1:11
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::{thread, sync::{Arc, Mutex}};
[INFO] [stderr]   |           ^^^^^^         ^^^  ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `UART_BASE`, `UART_END`, `VIRTIO_BASE`, and `VIRTIO_END`
[INFO] [stderr]  --> src/main.rs:2:18
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::bus::{UART_BASE, UART_END, VIRTIO_BASE, VIRTIO_END};
[INFO] [stderr]   |                  ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Instruction`
[INFO] [stderr]  --> src/main.rs:4:23
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::cpu::{Cpu, Instruction};
[INFO] [stderr]   |                       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Cpu` and `Instruction`
[INFO] [stderr]  --> src/test/instruction_test.rs:1:18
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::cpu::{Cpu, Instruction};
[INFO] [stderr]   |                  ^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/cpu.rs:499:13
[INFO] [stderr]     |
[INFO] [stderr] 499 |         for i in 0..cycles {
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PGSIZE` is never used
[INFO] [stderr]   --> src/cpu.rs:14:11
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub const PGSIZE: u32 = 0x1000;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ZERO` is never used
[INFO] [stderr]   --> src/cpu.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub const ZERO: u8 = 0;
[INFO] [stderr]    |           ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `AT` is never used
[INFO] [stderr]   --> src/cpu.rs:19:11
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub const AT: u8   = 1;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `V0` is never used
[INFO] [stderr]   --> src/cpu.rs:20:11
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub const V0: u8   = 2;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `V1` is never used
[INFO] [stderr]   --> src/cpu.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const V1: u8   = 3;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `A0` is never used
[INFO] [stderr]   --> src/cpu.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const A0: u8   = 4;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `A1` is never used
[INFO] [stderr]   --> src/cpu.rs:23:11
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub const A1: u8   = 5;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `A2` is never used
[INFO] [stderr]   --> src/cpu.rs:24:11
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub const A2: u8   = 6;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `A3` is never used
[INFO] [stderr]   --> src/cpu.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const A3: u8   = 7;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T0` is never used
[INFO] [stderr]   --> src/cpu.rs:26:11
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub const T0: u8   = 8;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T1` is never used
[INFO] [stderr]   --> src/cpu.rs:27:11
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub const T1: u8   = 9;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T2` is never used
[INFO] [stderr]   --> src/cpu.rs:28:11
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub const T2: u8   = 10;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T3` is never used
[INFO] [stderr]   --> src/cpu.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub const T3: u8   = 11;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T4` is never used
[INFO] [stderr]   --> src/cpu.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub const T4: u8   = 12;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T5` is never used
[INFO] [stderr]   --> src/cpu.rs:31:11
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub const T5: u8   = 13;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T6` is never used
[INFO] [stderr]   --> src/cpu.rs:32:11
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub const T6: u8   = 14;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T7` is never used
[INFO] [stderr]   --> src/cpu.rs:33:11
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub const T7: u8   = 15;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S0` is never used
[INFO] [stderr]   --> src/cpu.rs:34:11
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub const S0: u8   = 16;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S1` is never used
[INFO] [stderr]   --> src/cpu.rs:35:11
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub const S1: u8   = 17;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S2` is never used
[INFO] [stderr]   --> src/cpu.rs:36:11
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub const S2: u8   = 18;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S3` is never used
[INFO] [stderr]   --> src/cpu.rs:37:11
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub const S3: u8   = 19;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S4` is never used
[INFO] [stderr]   --> src/cpu.rs:38:11
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub const S4: u8   = 20;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S5` is never used
[INFO] [stderr]   --> src/cpu.rs:39:11
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub const S5: u8   = 21;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S6` is never used
[INFO] [stderr]   --> src/cpu.rs:40:11
[INFO] [stderr]    |
[INFO] [stderr] 40 | pub const S6: u8   = 22;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `S7` is never used
[INFO] [stderr]   --> src/cpu.rs:41:11
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub const S7: u8   = 23;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T8` is never used
[INFO] [stderr]   --> src/cpu.rs:42:11
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub const T8: u8   = 24;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `T9` is never used
[INFO] [stderr]   --> src/cpu.rs:43:11
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub const T9: u8   = 25;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `K0` is never used
[INFO] [stderr]   --> src/cpu.rs:44:11
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub const K0: u8   = 26;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `K1` is never used
[INFO] [stderr]   --> src/cpu.rs:45:11
[INFO] [stderr]    |
[INFO] [stderr] 45 | pub const K1: u8   = 27;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GP` is never used
[INFO] [stderr]   --> src/cpu.rs:46:11
[INFO] [stderr]    |
[INFO] [stderr] 46 | pub const GP: u8   = 28;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SP` is never used
[INFO] [stderr]   --> src/cpu.rs:47:11
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub const SP: u8   = 29;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FP` is never used
[INFO] [stderr]   --> src/cpu.rs:48:11
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub const FP: u8   = 30;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RA` is never used
[INFO] [stderr]   --> src/cpu.rs:49:11
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub const RA: u8   = 31;
[INFO] [stderr]    |           ^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `print_status`, `interrupt`, and `run` are never used
[INFO] [stderr]    --> src/cpu.rs:476:12
[INFO] [stderr]     |
[INFO] [stderr] 126 | impl Cpu {
[INFO] [stderr]     | -------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 476 |     pub fn print_status(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 489 |     pub fn interrupt(cause: Arc<Mutex<u32>>, level: u8) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 493 |     pub fn run(&mut self, stop_signal: Arc<Mutex<bool>>) {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `timer` is never read
[INFO] [stderr]   --> src/coprocessor.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct Coprocessor0 {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] 17 |     pub timer: thread::JoinHandle<()>,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_raw_cause` and `load_rom` are never used
[INFO] [stderr]   --> src/bus.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 39 | impl Bus {
[INFO] [stderr]    | -------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn get_raw_cause(&self) -> Arc<Mutex<u32>> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 53 |     pub fn load_rom(&mut self, file: &str) {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `load_binary` is never used
[INFO] [stderr]   --> src/rom.rs:14:12
[INFO] [stderr]    |
[INFO] [stderr]  8 | impl Rom {
[INFO] [stderr]    | -------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 14 |     pub fn load_binary(&mut self, filename: &str) {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `UART_IRQ` is never used
[INFO] [stderr]   --> src/devices/uart.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const UART_IRQ: u32 = 10;
[INFO] [stderr]    |           ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `interrupting` is never read
[INFO] [stderr]   --> src/devices/uart.rs:57:5
[INFO] [stderr]    |
[INFO] [stderr] 55 | pub struct Uart {
[INFO] [stderr]    |            ---- field in this struct
[INFO] [stderr] 56 |     uart: Arc<(Mutex<[u8; UART_SIZE as usize]>, Condvar)>,
[INFO] [stderr] 57 |     interrupting: Arc<AtomicBool>,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_interrupting` is never used
[INFO] [stderr]    --> src/devices/uart.rs:100:12
[INFO] [stderr]     |
[INFO] [stderr]  60 | impl Uart {
[INFO] [stderr]     | --------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn is_interrupting(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VIRTIO_IRQ` is never used
[INFO] [stderr]   --> src/devices/virtio.rs:15:11
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub const VIRTIO_IRQ: u32 = 1;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VRING_DESC_SIZE` is never used
[INFO] [stderr]   --> src/devices/virtio.rs:18:7
[INFO] [stderr]    |
[INFO] [stderr] 18 | const VRING_DESC_SIZE: u32 = 16;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SECTOR_SIZE` is never used
[INFO] [stderr]   --> src/devices/virtio.rs:22:7
[INFO] [stderr]    |
[INFO] [stderr] 22 | const SECTOR_SIZE: u32 = 512;
[INFO] [stderr]    |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VIRTQ_DESC_F_NEXT` is never used
[INFO] [stderr]   --> src/devices/virtio.rs:25:7
[INFO] [stderr]    |
[INFO] [stderr] 25 | const VIRTQ_DESC_F_NEXT: u32 = 1;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `VIRTQ_DESC_F_WRITE` is never used
[INFO] [stderr]   --> src/devices/virtio.rs:27:7
[INFO] [stderr]    |
[INFO] [stderr] 27 | const VIRTQ_DESC_F_WRITE: u32 = 2;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `desc_addr`, `avail_addr`, and `used_addr` are never read
[INFO] [stderr]    --> src/devices/virtio.rs:156:5
[INFO] [stderr]     |
[INFO] [stderr] 154 | struct VirtqueueAddr {
[INFO] [stderr]     |        ------------- fields in this struct
[INFO] [stderr] 155 |     /// The address that starts actual descriptors (16 bytes each).
[INFO] [stderr] 156 |     desc_addr: u32,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 157 |     /// The address that starts a ring of available descriptors.
[INFO] [stderr] 158 |     avail_addr: u32,
[INFO] [stderr]     |     ^^^^^^^^^^
[INFO] [stderr] 159 |     /// The address that starts a ring of used descriptors.
[INFO] [stderr] 160 |     used_addr: u32,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `VirtqueueAddr` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VirtqDesc` is never constructed
[INFO] [stderr]    --> src/devices/virtio.rs:212:8
[INFO] [stderr]     |
[INFO] [stderr] 212 | struct VirtqDesc {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/devices/virtio.rs:226:8
[INFO] [stderr]     |
[INFO] [stderr] 223 | impl VirtqDesc {
[INFO] [stderr]     | -------------- associated function in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 226 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `VirtqAvail` is never constructed
[INFO] [stderr]    --> src/devices/virtio.rs:251:8
[INFO] [stderr]     |
[INFO] [stderr] 251 | struct VirtqAvail {
[INFO] [stderr]     |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/devices/virtio.rs:258:8
[INFO] [stderr]     |
[INFO] [stderr] 257 | impl VirtqAvail {
[INFO] [stderr]     | --------------- associated function in this implementation
[INFO] [stderr] 258 |     fn new(cpu: &mut Cpu, addr: u32) -> Result<Self, Exception> {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `disk` is never read
[INFO] [stderr]    --> src/devices/virtio.rs:282:5
[INFO] [stderr]     |
[INFO] [stderr] 268 | pub struct Virtio {
[INFO] [stderr]     |            ------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 282 |     disk: Vec<u8>,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `virtqueue`, `is_interrupting`, and `initialize` are never used
[INFO] [stderr]    --> src/devices/virtio.rs:340:8
[INFO] [stderr]     |
[INFO] [stderr] 286 | impl Virtio {
[INFO] [stderr]     | ----------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 340 |     fn virtqueue(&self) -> VirtqueueAddr {
[INFO] [stderr]     |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 357 |     pub fn is_interrupting(&mut self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 366 |     pub fn initialize(&mut self, binary: Vec<u8>) {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Interrupt`, `DataBusError`, `Break`, `Reserved`, and `Overflow` are never constructed
[INFO] [stderr]   --> src/exception.rs:3:5
[INFO] [stderr]    |
[INFO] [stderr]  2 | pub enum Exception {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr]  3 |     Interrupt = 0,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  8 |     DataBusError = 7,
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr]  9 |     Syscall = 8,
[INFO] [stderr] 10 |     Break = 9,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 11 |     Reserved = 10,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 12 |     Overflow = 12
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Exception` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_byte_from_halfword_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:13:4
[INFO] [stderr]    |
[INFO] [stderr] 13 | fn get_byte_from_halfword_big_endian(src: u16, offset: u8) -> u8 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_byte_from_word_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:16:4
[INFO] [stderr]    |
[INFO] [stderr] 16 | fn get_byte_from_word_big_endian(src: u32, offset: u8) -> u8 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_halfword_from_word_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:19:4
[INFO] [stderr]    |
[INFO] [stderr] 19 | fn get_halfword_from_word_big_endian(src: u32, offset: u8) -> u16 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_byte_of_halfword_small_endian` is never used
[INFO] [stderr]   --> src/utils.rs:24:4
[INFO] [stderr]    |
[INFO] [stderr] 24 | fn set_byte_of_halfword_small_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_byte_of_halfword_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:34:4
[INFO] [stderr]    |
[INFO] [stderr] 34 | fn set_byte_of_halfword_big_endian(src: u16, offset: u8, data: u8) -> u16 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_byte_of_word_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:37:4
[INFO] [stderr]    |
[INFO] [stderr] 37 | fn set_byte_of_word_big_endian(src: u32, offset: u8, data: u8) -> u32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `set_halfword_of_word_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:40:4
[INFO] [stderr]    |
[INFO] [stderr] 40 | fn set_halfword_of_word_big_endian(src: u32, offset: u8, data: u16) -> u32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `concat_halfword_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:49:4
[INFO] [stderr]    |
[INFO] [stderr] 49 | fn concat_halfword_big_endian(src: [u8; 2]) -> u16 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `concat_word_big_endian` is never used
[INFO] [stderr]   --> src/utils.rs:52:4
[INFO] [stderr]    |
[INFO] [stderr] 52 | fn concat_word_big_endian(src: [u8; 4]) -> u32 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `set_byte_of_halfword` is never used
[INFO] [stderr]   --> src/utils.rs:59:11
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated functions are never used
[INFO] [stderr]    --> src/utils.rs:67:12
[INFO] [stderr]     |
[INFO] [stderr]  65 | impl Instruction {
[INFO] [stderr]     | ---------------- associated functions in this implementation
[INFO] [stderr]  66 |     // R types
[INFO] [stderr]  67 |     pub fn sll(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  70 |     pub fn srl(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub fn sra(rd: u8, rt: u8, shamt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  76 |     pub fn jr(rs: u8) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr]  79 |     pub fn syscall() -> Self {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  82 |     pub fn mfhi(rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  85 |     pub fn mthi(rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  88 |     pub fn mflo(rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub fn mtlo(rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  94 |     pub fn mult(rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  97 |     pub fn multu(rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn div(rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn divu(rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub fn add(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 110 |     pub fn addu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 113 |     pub fn sub(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub fn subu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub fn and(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 122 |     pub fn or(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 125 |     pub fn xor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 128 |     pub fn nor(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn slt(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 134 |     pub fn sltu(rd: u8, rs: u8, rt: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 138 |     pub fn mfc0(rt: u8, rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 141 |     pub fn mtc0(rt: u8, rd: u8) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 144 |     pub fn eret() -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub fn beq(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 152 |     pub fn bne(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 155 |     pub fn addi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 158 |     pub fn addiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 161 |     pub fn slti(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     pub fn sltiu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 167 |     pub fn andi(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 170 |     pub fn ori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 173 |     pub fn xori(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn lui(rt: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 179 |     pub fn lw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 182 |     pub fn lbu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 185 |     pub fn lhu(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 188 |     pub fn sb(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 191 |     pub fn sh(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 194 |     pub fn sw(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 197 |     pub fn ll(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 200 |     pub fn sc(rt: u8, rs: u8, imm: u16) -> Self {
[INFO] [stderr]     |            ^^
[INFO] [stderr] ...
[INFO] [stderr] 208 |     pub fn jal(imm: u32) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `USER` is never used
[INFO] [stderr]   --> src/memory.rs:11:11
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub const USER: u32 = 0x8;
[INFO] [stderr]    |           ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `HEAP` is never used
[INFO] [stderr]   --> src/memory.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub const HEAP: u32 = 0x10008000;
[INFO] [stderr]    |           ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `dirty` is never used
[INFO] [stderr]   --> src/memory.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 22 | impl PTE {
[INFO] [stderr]    | -------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub fn dirty(&self) -> bool {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `get_byte_from_halfword` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:56:11
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 56 - pub const get_byte_from_halfword: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stderr] 56 + pub const GET_BYTE_FROM_HALFWORD: fn(src: u16, offset: u8) -> u8            = get_byte_from_halfword_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `get_byte_from_word` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:57:11
[INFO] [stderr]    |
[INFO] [stderr] 57 | pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 57 - pub const get_byte_from_word: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stderr] 57 + pub const GET_BYTE_FROM_WORD: fn(src: u32, offset: u8) -> u8                = get_byte_from_word_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `get_halfword_from_word` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:58:11
[INFO] [stderr]    |
[INFO] [stderr] 58 | pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 58 - pub const get_halfword_from_word: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stderr] 58 + pub const GET_HALFWORD_FROM_WORD: fn(src: u32, offset: u8) -> u16           = get_halfword_from_word_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `set_byte_of_halfword` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:59:11
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub const set_byte_of_halfword: fn(src: u16, offset: u8, data: u8) -> u16   = set_byte_of_halfword_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `SET_BYTE_OF_HALFWORD`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `set_byte_of_word` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:60:11
[INFO] [stderr]    |
[INFO] [stderr] 60 | pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 60 - pub const set_byte_of_word: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stderr] 60 + pub const SET_BYTE_OF_WORD: fn(src: u32, offset: u8, data: u8) -> u32       = set_byte_of_word_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `set_halfword_of_word` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:61:11
[INFO] [stderr]    |
[INFO] [stderr] 61 | pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 61 - pub const set_halfword_of_word: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stderr] 61 + pub const SET_HALFWORD_OF_WORD: fn(src: u32, offset: u8, data: u16) -> u32  = set_halfword_of_word_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `concat_halfword` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:62:11
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 62 - pub const concat_halfword: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stderr] 62 + pub const CONCAT_HALFWORD: fn(src: [u8; 2]) -> u16                          = concat_halfword_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: constant `concat_word` should have an upper case name
[INFO] [stderr]   --> src/utils.rs:63:11
[INFO] [stderr]    |
[INFO] [stderr] 63 | pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: convert the identifier to upper case
[INFO] [stderr]    |
[INFO] [stderr] 63 - pub const concat_word: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stderr] 63 + pub const CONCAT_WORD: fn(src: [u8; 4]) -> u32                              = concat_word_small_endian;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `mips-emu` (bin "mips-emu" test) generated 80 warnings (run `cargo fix --bin "mips-emu" -p mips-emu --tests` to apply 13 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/mips_emu-cba33c4027f54287)
[INFO] [stdout] 
[INFO] [stdout] running 3 tests
[INFO] [stdout] test test::test_all ... ok
[INFO] [stdout] test test::instruction_test::gauss_sum ... ok
[INFO] [stdout] test test::instruction_test::test_all ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "d20cc133825019ed6d7cabf32ed4d8e91bb366906aaaa6ca3ae1158efedff057", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d20cc133825019ed6d7cabf32ed4d8e91bb366906aaaa6ca3ae1158efedff057", kill_on_drop: false }`
[INFO] [stdout] d20cc133825019ed6d7cabf32ed4d8e91bb366906aaaa6ca3ae1158efedff057
