[INFO] cloning repository https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLearningOS%2F2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLearningOS%2F2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 1196ac363c2cba1dcd7f33cf584b5d746f396ffd
[INFO] testing LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment against 1.94.0 for beta-1.95-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FLearningOS%2F2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment
[INFO] finished tweaking git repo https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment
[INFO] tweaked toml for git repo https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment on toolchain 1.94.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/LearningOS/2026s-oscamp-base-2026s-oscamp-base-exercise-oscamp-base-experiment already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.94.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded filetime v0.2.27
[INFO] [stderr]   Downloaded redox_syscall v0.7.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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" "+1.94.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 20b27eb21fe445e25544c81671bcd78bb1e792d12f2ff79f5bf5c51776f225c2
[INFO] running `Command { std: "docker" "start" "-a" "20b27eb21fe445e25544c81671bcd78bb1e792d12f2ff79f5bf5c51776f225c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "20b27eb21fe445e25544c81671bcd78bb1e792d12f2ff79f5bf5c51776f225c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "20b27eb21fe445e25544c81671bcd78bb1e792d12f2ff79f5bf5c51776f225c2", kill_on_drop: false }`
[INFO] [stdout] 20b27eb21fe445e25544c81671bcd78bb1e792d12f2ff79f5bf5c51776f225c2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.94.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 677027caaadc2b1c058797a5881064bb73ac194ea5b6203dd58351a55660e978
[INFO] running `Command { std: "docker" "start" "-a" "677027caaadc2b1c058797a5881064bb73ac194ea5b6203dd58351a55660e978", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling toml_write v0.1.2
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling spinlock v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/03_spinlock)
[INFO] [stderr]    Compiling spinlock_guard v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/04_spinlock_guard)
[INFO] [stderr]    Compiling mem_primitives v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/01_mem_primitives)
[INFO] [stderr]    Compiling syscall_wrapper v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/04_syscall_wrapper)
[INFO] [stderr]    Compiling pte_flags v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/01_pte_flags)
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling bump_allocator v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/02_bump_allocator)
[INFO] [stderr]    Compiling atomic_ordering v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/02_atomic_ordering)
[INFO] [stderr]    Compiling stack_coroutine v0.1.0 (/opt/rustwide/workdir/exercises/04_context_switch/01_stack_coroutine)
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                        ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg0`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:35
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_arg0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg1`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:48
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_arg1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg2`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:61
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_arg2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:18
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:29
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn sys_close(fd: usize) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn sys_exit(code: i32) -> ! {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_WRITE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:113:7
[INFO] [stdout]     |
[INFO] [stdout] 113 | const NATIVE_SYS_WRITE: usize = 1;
[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 `NATIVE_SYS_READ` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:115:7
[INFO] [stdout]     |
[INFO] [stdout] 115 | const NATIVE_SYS_READ: usize = 0;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_CLOSE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const NATIVE_SYS_CLOSE: usize = 3;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_EXIT` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout] 119 | const NATIVE_SYS_EXIT: usize = 60;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:40:27
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn produce(&self, value: u32) {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn init(&self, val: u32) -> bool {
[INFO] [stdout]    |                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `initialized` and `value` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct OnceCell {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 67 |     initialized: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 68 |     value: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr::null_mut`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use core::ptr::null_mut;
[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 variable: `layout`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:65:28
[INFO] [stdout]    |
[INFO] [stdout] 65 |     unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `heap_end` is never read
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct BumpAllocator {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 39 |     heap_start: usize,
[INFO] [stdout] 40 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling thread_spawn v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/01_thread_spawn)
[INFO] [stderr]    Compiling free_list_allocator v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/03_free_list_allocator)
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:14:37
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct SpinGuard<'a, T> {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 27 |     lock: &'a SpinLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:27
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn extract_ppn(pte: u64) -> u64 {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn extract_flags(pte: u64) -> u64 {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn is_valid(pte: u64) -> bool {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn is_leaf(pte: u64) -> bool {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `read`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:35
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:47
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `execute`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:60
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_execute`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const PPN_SHIFT: u32 = 10;
[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 `PPN_MASK` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const PPN_MASK: u64 = (1u64 << 44) - 1; // 44-bit PPN
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling tlb_sim v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/04_tlb_sim)
[INFO] [stderr]    Compiling channel v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/03_channel)
[INFO] [stderr]    Compiling basic_future v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/01_basic_future)
[INFO] [stderr]    Compiling green_threads v0.1.0 (/opt/rustwide/workdir/exercises/04_context_switch/02_green_threads)
[INFO] [stderr]    Compiling fd_table v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/05_fd_table)
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:13:37
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling page_table_walk v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/02_page_table_walk)
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:30
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:40
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:30
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:50
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:61
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:125:36
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn flush_by_vpn(&mut self, vpn: u64) {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:133:37
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub fn flush_by_asid(&mut self, asid: u16) {
[INFO] [stdout]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:195:33
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn translate(&mut self, vpn: u64) -> Option<u64> {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entries`, `capacity`, and `fifo_ptr` are never read
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Tlb {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 63 |     entries: Vec<TlbEntry>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 64 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 65 |     /// FIFO 指针：下次替换的位置
[INFO] [stdout] 66 |     fifo_ptr: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rwlock v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/05_rwlock)
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:109:13
[INFO] [stdout]     |
[INFO] [stdout] 109 |         let align = layout.align().max(core::mem::align_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ptr`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:125:30
[INFO] [stdout]     |
[INFO] [stdout] 125 |     unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ptr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `next` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct FreeBlock {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 44 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 45 |     next: *mut FreeBlock,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `heap_start`, `heap_end`, `bump_next`, and `free_list` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FreeListAllocator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 49 |     heap_start: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 50 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 51 |     /// Bump pointer: unallocated region starts here
[INFO] [stdout] 52 |     bump_next: core::sync::atomic::AtomicUsize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     free_list: core::cell::UnsafeCell<*mut FreeBlock>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `free_list_head` and `set_free_list_head` are never used
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl FreeListAllocator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn free_list_head(&self) -> *mut FreeBlock {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn set_free_list_head(&self, head: *mut FreeBlock) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:27
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:39
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:49
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn unmap(&mut self, vpn: usize) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:78:26
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lookup(&self, vpn: usize) -> Option<&PageTableEntry> {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:29
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_write`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:38
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn va_to_vpn(va: u32) -> usize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn va_to_offset(va: u32) -> u32 {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:16
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:26
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entries` is never read
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct SingleLevelPageTable {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 52 |     entries: Vec<Option<PageTableEntry>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn simple_send_recv(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:28:23
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn multi_producer(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling mutex_counter v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/02_mutex_counter)
[INFO] [stderr]    Compiling multi_level_pt v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/03_multi_level_pt)
[INFO] [stderr]    Compiling atomic_counter v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/01_atomic_counter)
[INFO] [stderr]    Compiling process_pipe v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/04_process_pipe)
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::io::{self, Read, Write};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Command` and `Stdio`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:35:20
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::process::{Command, Stdio};
[INFO] [stdout]    |                    ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:20
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:31:36
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::sync::atomic::{AtomicU32, Ordering};
[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 variable: `input`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn pipe_through_cat(input: &str) -> String {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `command`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:109:22
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn get_exit_code(command: &str) -> i32 {
[INFO] [stdout]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:32
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:47
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::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 variable: `pattern`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:26
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:41
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_per_thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:45
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_per_thread`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:31:27
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn concurrent_collect(n_threads: usize) -> Vec<usize> {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `READER_MASK` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const READER_MASK: u32 = (1 << 30) - 1;
[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 `WRITER_HOLDING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const WRITER_HOLDING: u32 = 1 << 30;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRITER_WAITING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const WRITER_WAITING: u32 = 1 << 31;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct RwLock<T> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 42 |     state: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 43 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RwLockReadGuard<'a, T> {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 84 |     lock: &'a RwLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]    --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct RwLockWriteGuard<'a, T> {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 107 |     lock: &'a RwLock<T>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn alloc(&mut self, file: Arc<dyn File>) -> usize {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:72:23
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn get(&self, fd: usize) -> Option<Arc<dyn File>> {
[INFO] [stdout]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn close(&mut self, fd: usize) -> bool {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:35:35
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:59:35
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `yielded` is never read
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct YieldOnce {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 43 |     yielded: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::atomic::{AtomicU64, Ordering};
[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 variable: `expected`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:36
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_val`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:51
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multiplier`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:58:34
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn fetch_multiply(&self, multiplier: u64) -> u64 {
[INFO] [stdout]    |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multiplier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AtomicCounter {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 14 |     value: AtomicU64,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:24
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                        ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `level`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pa`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:41
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                         ^^ help: if this is intentional, prefix it with an underscore: `_pa`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:50
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn translate(&self, va: u64) -> TranslateResult {
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:152:55
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub fn map_superpage(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const PPN_SHIFT: u32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_ppn` is never read
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Sv39PageTable {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 68 |     next_ppn: u64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `alloc_node` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Sv39PageTable {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn alloc_node(&mut self) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling inotify-sys v0.1.5
[INFO] [stderr]    Compiling filetime v0.2.27
[INFO] [stderr]    Compiling inotify v0.9.6
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling notify v6.1.1
[INFO] [stderr]    Compiling crossterm v0.27.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling async_channel_ex v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/03_async_channel)
[INFO] [stderr]    Compiling select_timeout v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/04_select_timeout)
[INFO] [stderr]    Compiling tokio_tasks v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/02_tokio_tasks)
[INFO] [stdout] warning: unused import: `tokio::sync::mpsc`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::mpsc;
[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 variable: `items`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn producer_consumer(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:28:21
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub async fn fan_in(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::time::{sleep, Duration};
[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 variable: `future`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:33
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:44
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f1`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:30
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                              ^^ help: if this is intentional, prefix it with an underscore: `_f1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f2`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                                      ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::task::JoinHandle`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::task::JoinHandle;
[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: `Duration` and `sleep`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::time::{sleep, Duration};
[INFO] [stdout]    |                   ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:16:33
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn concurrent_squares(n: usize) -> Vec<usize> {
[INFO] [stdout]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `duration_ms`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:45
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling oscamp-cli v0.1.0 (/opt/rustwide/workdir/cli)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.31s
[INFO] running `Command { std: "docker" "inspect" "677027caaadc2b1c058797a5881064bb73ac194ea5b6203dd58351a55660e978", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "677027caaadc2b1c058797a5881064bb73ac194ea5b6203dd58351a55660e978", kill_on_drop: false }`
[INFO] [stdout] 677027caaadc2b1c058797a5881064bb73ac194ea5b6203dd58351a55660e978
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.94.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fab15051400e4e1bcbb1d6b531c8a5486957e447d12262ed141fa968c0e9f537
[INFO] running `Command { std: "docker" "start" "-a" "fab15051400e4e1bcbb1d6b531c8a5486957e447d12262ed141fa968c0e9f537", kill_on_drop: false }`
[INFO] [stdout] warning: unused imports: `Duration` and `sleep`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::time::{sleep, Duration};
[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 variable: `future`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:33
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:44
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f1`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:30
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                              ^^ help: if this is intentional, prefix it with an underscore: `_f1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f2`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                                      ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::task::JoinHandle`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::task::JoinHandle;
[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: `Duration` and `sleep`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::time::{sleep, Duration};
[INFO] [stdout]    |                   ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:16:33
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn concurrent_squares(n: usize) -> Vec<usize> {
[INFO] [stdout]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `duration_ms`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:45
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::mpsc`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::mpsc;
[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 variable: `items`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn producer_consumer(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:28:21
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub async fn fan_in(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr::null_mut`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use core::ptr::null_mut;
[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 variable: `layout`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:65:28
[INFO] [stdout]    |
[INFO] [stdout] 65 |     unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `heap_end` is never read
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct BumpAllocator {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 39 |     heap_start: usize,
[INFO] [stdout] 40 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:40:27
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn produce(&self, value: u32) {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn init(&self, val: u32) -> bool {
[INFO] [stdout]    |                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `initialized` and `value` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct OnceCell {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 67 |     initialized: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 68 |     value: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:27
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:39
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:49
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn unmap(&mut self, vpn: usize) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:78:26
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lookup(&self, vpn: usize) -> Option<&PageTableEntry> {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:29
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_write`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:38
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn va_to_vpn(va: u32) -> usize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn va_to_offset(va: u32) -> u32 {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:16
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:26
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entries` is never read
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct SingleLevelPageTable {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 52 |     entries: Vec<Option<PageTableEntry>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:13:37
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:109:13
[INFO] [stdout]     |
[INFO] [stdout] 109 |         let align = layout.align().max(core::mem::align_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ptr`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:125:30
[INFO] [stdout]     |
[INFO] [stdout] 125 |     unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ptr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `next` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct FreeBlock {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 44 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 45 |     next: *mut FreeBlock,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `heap_start`, `heap_end`, `bump_next`, and `free_list` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FreeListAllocator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 49 |     heap_start: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 50 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 51 |     /// Bump pointer: unallocated region starts here
[INFO] [stdout] 52 |     bump_next: core::sync::atomic::AtomicUsize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     free_list: core::cell::UnsafeCell<*mut FreeBlock>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `free_list_head` and `set_free_list_head` are never used
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:95:8
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl FreeListAllocator {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     fn free_list_head(&self) -> *mut FreeBlock {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn set_free_list_head(&self, head: *mut FreeBlock) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:14:37
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct SpinGuard<'a, T> {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 27 |     lock: &'a SpinLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:27
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn extract_ppn(pte: u64) -> u64 {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn extract_flags(pte: u64) -> u64 {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn is_valid(pte: u64) -> bool {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn is_leaf(pte: u64) -> bool {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `read`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:35
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:47
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `execute`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:60
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_execute`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const PPN_SHIFT: u32 = 10;
[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 `PPN_MASK` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const PPN_MASK: u64 = (1u64 << 44) - 1; // 44-bit PPN
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                        ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg0`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:35
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_arg0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg1`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:48
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_arg1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg2`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:61
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_arg2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:18
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:29
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn sys_close(fd: usize) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn sys_exit(code: i32) -> ! {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_WRITE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:113:7
[INFO] [stdout]     |
[INFO] [stdout] 113 | const NATIVE_SYS_WRITE: usize = 1;
[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 `NATIVE_SYS_READ` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:115:7
[INFO] [stdout]     |
[INFO] [stdout] 115 | const NATIVE_SYS_READ: usize = 0;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_CLOSE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const NATIVE_SYS_CLOSE: usize = 3;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_EXIT` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout] 119 | const NATIVE_SYS_EXIT: usize = 60;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:30
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:40
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:30
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:50
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:61
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:125:36
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn flush_by_vpn(&mut self, vpn: u64) {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:133:37
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub fn flush_by_asid(&mut self, asid: u16) {
[INFO] [stdout]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:195:33
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn translate(&mut self, vpn: u64) -> Option<u64> {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entries`, `capacity`, and `fifo_ptr` are never read
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Tlb {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 63 |     entries: Vec<TlbEntry>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 64 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 65 |     /// FIFO 指针：下次替换的位置
[INFO] [stdout] 66 |     fifo_ptr: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::io::{self, Read, Write};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Command` and `Stdio`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:35:20
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::process::{Command, Stdio};
[INFO] [stdout]    |                    ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:20
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn pipe_through_cat(input: &str) -> String {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `command`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:109:22
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn get_exit_code(command: &str) -> i32 {
[INFO] [stdout]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:32
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:47
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pattern`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:26
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:41
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:35:35
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:59:35
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `yielded` is never read
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct YieldOnce {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 43 |     yielded: bool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn simple_send_recv(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:28:23
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn multi_producer(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling oscamp-cli v0.1.0 (/opt/rustwide/workdir/cli)
[INFO] [stderr]    Compiling tokio_tasks v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/02_tokio_tasks)
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn alloc(&mut self, file: Arc<dyn File>) -> usize {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling select_timeout v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/04_select_timeout)
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:72:23
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn get(&self, fd: usize) -> Option<Arc<dyn File>> {
[INFO] [stdout]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling basic_future v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/01_basic_future)
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn close(&mut self, fd: usize) -> bool {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::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 import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_per_thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:45
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_per_thread`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:31:27
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn concurrent_collect(n_threads: usize) -> Vec<usize> {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:24
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                        ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `level`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pa`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:41
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                         ^^ help: if this is intentional, prefix it with an underscore: `_pa`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:50
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn translate(&self, va: u64) -> TranslateResult {
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:152:55
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub fn map_superpage(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const PPN_SHIFT: u32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_ppn` is never read
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Sv39PageTable {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 68 |     next_ppn: u64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `alloc_node` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Sv39PageTable {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn alloc_node(&mut self) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::atomic::{AtomicU64, Ordering};
[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 variable: `expected`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:36
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_val`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:51
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multiplier`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:58:34
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn fetch_multiply(&self, multiplier: u64) -> u64 {
[INFO] [stdout]    |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multiplier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AtomicCounter {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 14 |     value: AtomicU64,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:31:36
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::sync::atomic::{AtomicU32, Ordering};
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `READER_MASK` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const READER_MASK: u32 = (1 << 30) - 1;
[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 `WRITER_HOLDING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const WRITER_HOLDING: u32 = 1 << 30;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRITER_WAITING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const WRITER_WAITING: u32 = 1 << 31;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct RwLock<T> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 42 |     state: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 43 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RwLockReadGuard<'a, T> {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 84 |     lock: &'a RwLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]    --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct RwLockWriteGuard<'a, T> {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 107 |     lock: &'a RwLock<T>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling async_channel_ex v0.1.0 (/opt/rustwide/workdir/exercises/05_async_programming/03_async_channel)
[INFO] [stderr]    Compiling atomic_counter v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/01_atomic_counter)
[INFO] [stderr]    Compiling green_threads v0.1.0 (/opt/rustwide/workdir/exercises/04_context_switch/02_green_threads)
[INFO] [stderr]    Compiling rwlock v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/05_rwlock)
[INFO] [stderr]    Compiling mem_primitives v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/01_mem_primitives)
[INFO] [stderr]    Compiling atomic_ordering v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/02_atomic_ordering)
[INFO] [stderr]    Compiling multi_level_pt v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/03_multi_level_pt)
[INFO] [stderr]    Compiling fd_table v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/05_fd_table)
[INFO] [stderr]    Compiling syscall_wrapper v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/04_syscall_wrapper)
[INFO] [stderr]    Compiling spinlock_guard v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/04_spinlock_guard)
[INFO] [stderr]    Compiling tlb_sim v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/04_tlb_sim)
[INFO] [stderr]    Compiling stack_coroutine v0.1.0 (/opt/rustwide/workdir/exercises/04_context_switch/01_stack_coroutine)
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:31:36
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::sync::atomic::{AtomicU32, Ordering};
[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 variable: `value`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:40:27
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn produce(&self, value: u32) {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:83:24
[INFO] [stdout]    |
[INFO] [stdout] 83 |     pub fn init(&self, val: u32) -> bool {
[INFO] [stdout]    |                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `initialized` and `value` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct OnceCell {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 67 |     initialized: AtomicBool,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 68 |     value: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:14:37
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `READER_MASK` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const READER_MASK: u32 = (1 << 30) - 1;
[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 `WRITER_HOLDING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const WRITER_HOLDING: u32 = 1 << 30;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WRITER_WAITING` is never used
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:38:7
[INFO] [stdout]    |
[INFO] [stdout] 38 | const WRITER_WAITING: u32 = 1 << 31;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct RwLock<T> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 42 |     state: AtomicU32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 43 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:84:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RwLockReadGuard<'a, T> {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 84 |     lock: &'a RwLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]    --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:107:5
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct RwLockWriteGuard<'a, T> {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 107 |     lock: &'a RwLock<T>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:11:36
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::task::JoinHandle`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::task::JoinHandle;
[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: `Duration` and `sleep`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | use tokio::time::{sleep, Duration};
[INFO] [stdout]    |                   ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::mpsc`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tokio::sync::mpsc;
[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 variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:16:33
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub async fn concurrent_squares(n: usize) -> Vec<usize> {
[INFO] [stdout]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `duration_ms`
[INFO] [stdout]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:45
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stdout]    |                                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `expected`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:36
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_val`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:51
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stdout]    |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_val`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `multiplier`
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:58:34
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn fetch_multiply(&self, multiplier: u64) -> u64 {
[INFO] [stdout]    |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multiplier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:66:29
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn alloc(&mut self, file: Arc<dyn File>) -> usize {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:72:23
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn get(&self, fd: usize) -> Option<Arc<dyn File>> {
[INFO] [stdout]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:78:29
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn close(&mut self, fd: usize) -> bool {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct SpinGuard<'a, T> {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 27 |     lock: &'a SpinLock<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `value` is never read
[INFO] [stdout]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AtomicCounter {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 14 |     value: AtomicU64,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:24
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                        ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `level`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:33
[INFO] [stdout]     |
[INFO] [stdout] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pa`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:41
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                         ^^ help: if this is intentional, prefix it with an underscore: `_pa`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:50
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:135:29
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn translate(&self, va: u64) -> TranslateResult {
[INFO] [stdout]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:152:55
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub fn map_superpage(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stdout]     |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:35:35
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cx`
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:59:35
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stdout]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:36:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | const PPN_SHIFT: u32 = 10;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `next_ppn` is never read
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Sv39PageTable {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 68 |     next_ppn: u64,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `alloc_node` is never used
[INFO] [stdout]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl Sv39PageTable {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn alloc_node(&mut self) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:24
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                        ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg0`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:35
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_arg0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg1`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:48
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_arg1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `arg2`
[INFO] [stdout]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:61
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stdout]    |                                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_arg2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:18
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:29
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:28
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stdout]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fd`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn sys_close(fd: usize) -> isize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:159:17
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn sys_exit(code: i32) -> ! {
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub async fn producer_consumer(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:28:21
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub async fn fan_in(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `yielded` is never read
[INFO] [stdout]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct YieldOnce {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 43 |     yielded: bool,
[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 `NATIVE_SYS_WRITE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:113:7
[INFO] [stdout]     |
[INFO] [stdout] 113 | const NATIVE_SYS_WRITE: usize = 1;
[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 `NATIVE_SYS_READ` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:115:7
[INFO] [stdout]     |
[INFO] [stdout] 115 | const NATIVE_SYS_READ: usize = 0;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_CLOSE` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const NATIVE_SYS_CLOSE: usize = 3;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NATIVE_SYS_EXIT` is never used
[INFO] [stdout]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:119:7
[INFO] [stdout]     |
[INFO] [stdout] 119 | const NATIVE_SYS_EXIT: usize = 60;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `future`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:33
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout_ms`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:44
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stdout]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f1`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:30
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                              ^^ help: if this is intentional, prefix it with an underscore: `_f1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `f2`
[INFO] [stdout]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stdout]    |                                      ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling free_list_allocator v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/03_free_list_allocator)
[INFO] [stderr]    Compiling process_pipe v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/04_process_pipe)
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:30
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:40
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stdout]    |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:30
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:40
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:50
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:61
[INFO] [stdout]     |
[INFO] [stdout] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:125:36
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn flush_by_vpn(&mut self, vpn: u64) {
[INFO] [stdout]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `asid`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:133:37
[INFO] [stdout]     |
[INFO] [stdout] 133 |     pub fn flush_by_asid(&mut self, asid: u16) {
[INFO] [stdout]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:195:33
[INFO] [stdout]     |
[INFO] [stdout] 195 |     pub fn translate(&mut self, vpn: u64) -> Option<u64> {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling page_table_walk v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/02_page_table_walk)
[INFO] [stdout] warning: fields `entries`, `capacity`, and `fifo_ptr` are never read
[INFO] [stdout]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Tlb {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 63 |     entries: Vec<TlbEntry>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 64 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 65 |     /// FIFO 指针：下次替换的位置
[INFO] [stdout] 66 |     fifo_ptr: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `align`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:109:13
[INFO] [stdout]     |
[INFO] [stdout] 109 |         let align = layout.align().max(core::mem::align_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ptr`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:125:30
[INFO] [stdout]     |
[INFO] [stdout] 125 |     unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
[INFO] [stdout]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ptr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `next` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | struct FreeBlock {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 44 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 45 |     next: *mut FreeBlock,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `heap_start`, `heap_end`, `bump_next`, and `free_list` are never read
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:49:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct FreeListAllocator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 49 |     heap_start: usize,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 50 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 51 |     /// Bump pointer: unallocated region starts here
[INFO] [stdout] 52 |     bump_next: core::sync::atomic::AtomicUsize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     free_list: std::sync::Mutex<*mut FreeBlock>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `free_list_head` and `set_free_list_head` are never used
[INFO] [stdout]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl FreeListAllocator {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85 |     fn free_list_head(&self) -> *mut FreeBlock {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 90 |     fn set_free_list_head(&self, head: *mut FreeBlock) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling channel v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/03_channel)
[INFO] [stderr]    Compiling spinlock v0.1.0 (/opt/rustwide/workdir/exercises/03_os_concurrency/03_spinlock)
[INFO] [stderr]    Compiling mutex_counter v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/02_mutex_counter)
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `items`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:16:25
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn simple_send_recv(items: Vec<String>) -> Vec<String> {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_producers`
[INFO] [stdout]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:28:23
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn multi_producer(n_producers: usize) -> Vec<String> {
[INFO] [stdout]    |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ordering`
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:13:37
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]    |                                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `locked` and `data` are never read
[INFO] [stdout]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SpinLock<T> {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 17 |     locked: AtomicBool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 18 |     data: UnsafeCell<T>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling pte_flags v0.1.0 (/opt/rustwide/workdir/exercises/06_page_table/01_pte_flags)
[INFO] [stderr]    Compiling thread_spawn v0.1.0 (/opt/rustwide/workdir/exercises/01_concurrency_sync/01_thread_spawn)
[INFO] [stdout] warning: unused imports: `Read` and `Write`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:34:21
[INFO] [stdout]    |
[INFO] [stdout] 34 | use std::io::{self, Read, Write};
[INFO] [stdout]    |                     ^^^^  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Command` and `Stdio`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:35:20
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::process::{Command, Stdio};
[INFO] [stdout]    |                    ^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::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 import: `std::thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:20
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stdout]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn pipe_through_cat(input: &str) -> String {
[INFO] [stdout]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `command`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:109:22
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub fn get_exit_code(command: &str) -> i32 {
[INFO] [stdout]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `program`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:32
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:47
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling bump_allocator v0.1.0 (/opt/rustwide/workdir/exercises/02_no_std_dev/02_bump_allocator)
[INFO] [stdout] warning: unused variable: `pattern`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:26
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:41
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stdout]     |                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count_per_thread`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:45
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_per_thread`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n_threads`
[INFO] [stdout]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:31:27
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub fn concurrent_collect(n_threads: usize) -> Vec<usize> {
[INFO] [stdout]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:17
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:27
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:27
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:39
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flags`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:49
[INFO] [stdout]    |
[INFO] [stdout] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stdout]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn unmap(&mut self, vpn: usize) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vpn`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:78:26
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lookup(&self, vpn: usize) -> Option<&PageTableEntry> {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:29
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_write`
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:38
[INFO] [stdout]    |
[INFO] [stdout] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stdout]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub fn va_to_vpn(va: u32) -> usize {
[INFO] [stdout]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `va`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:111:21
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub fn va_to_offset(va: u32) -> u32 {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ppn`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:16
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:26
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:67:20
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn extract_ppn(pte: u64) -> u64 {
[INFO] [stdout]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn extract_flags(pte: u64) -> u64 {
[INFO] [stdout]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:79:17
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn is_valid(pte: u64) -> bool {
[INFO] [stdout]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:88:16
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn is_leaf(pte: u64) -> bool {
[INFO] [stdout]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pte`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:25
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `read`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:35
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `write`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:47
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_write`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `execute`
[INFO] [stdout]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:60
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stdout]     |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_execute`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entries` is never read
[INFO] [stdout]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct SingleLevelPageTable {
[INFO] [stdout]    |            -------------------- field in this struct
[INFO] [stdout] 52 |     entries: Vec<Option<PageTableEntry>>,
[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 `PPN_SHIFT` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:48:7
[INFO] [stdout]    |
[INFO] [stdout] 48 | const PPN_SHIFT: u32 = 10;
[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 `PPN_MASK` is never used
[INFO] [stdout]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const PPN_MASK: u64 = (1u64 << 44) - 1; // 44-bit PPN
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ptr::null_mut`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use core::ptr::null_mut;
[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 variable: `layout`
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:65:28
[INFO] [stdout]    |
[INFO] [stdout] 65 |     unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `heap_end` is never read
[INFO] [stdout]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct BumpAllocator {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 39 |     heap_start: usize,
[INFO] [stdout] 40 |     heap_end: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.92s
[INFO] running `Command { std: "docker" "inspect" "fab15051400e4e1bcbb1d6b531c8a5486957e447d12262ed141fa968c0e9f537", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fab15051400e4e1bcbb1d6b531c8a5486957e447d12262ed141fa968c0e9f537", kill_on_drop: false }`
[INFO] [stdout] fab15051400e4e1bcbb1d6b531c8a5486957e447d12262ed141fa968c0e9f537
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+1.94.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] b6ef9144979fb8b9738bcb86a5ded6a84d2421f91c9628aa9e0a22614e7a02fc
[INFO] running `Command { std: "docker" "start" "-a" "b6ef9144979fb8b9738bcb86a5ded6a84d2421f91c9628aa9e0a22614e7a02fc", kill_on_drop: false }`
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:24
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stderr]     |                        ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `level`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:104:33
[INFO] [stderr]     |
[INFO] [stderr] 104 |     pub fn extract_vpn(va: u64, level: usize) -> usize {
[INFO] [stderr]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_level`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:32
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stderr]     |                                ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pa`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:41
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stderr]     |                                         ^^ help: if this is intentional, prefix it with an underscore: `_pa`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flags`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:115:50
[INFO] [stderr]     |
[INFO] [stderr] 115 |     pub fn map_page(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stderr]     |                                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:135:29
[INFO] [stderr]     |
[INFO] [stderr] 135 |     pub fn translate(&self, va: u64) -> TranslateResult {
[INFO] [stderr]     |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flags`
[INFO] [stderr]    --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:152:55
[INFO] [stderr]     |
[INFO] [stderr] 152 |     pub fn map_superpage(&mut self, va: u64, pa: u64, flags: u64) {
[INFO] [stderr]     |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PPN_SHIFT` is never used
[INFO] [stderr]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:36:7
[INFO] [stderr]    |
[INFO] [stderr] 36 | const PPN_SHIFT: u32 = 10;
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `next_ppn` is never read
[INFO] [stderr]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:68:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct Sv39PageTable {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 68 |     next_ppn: u64,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `alloc_node` is never used
[INFO] [stderr]   --> exercises/06_page_table/03_multi_level_pt/src/lib.rs:90:8
[INFO] [stderr]    |
[INFO] [stderr] 78 | impl Sv39PageTable {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 90 |     fn alloc_node(&mut self) -> u64 {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::mpsc`
[INFO] [stderr]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::sync::mpsc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 12 | use std::thread;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `items`
[INFO] [stderr]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:16:25
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub fn simple_send_recv(items: Vec<String>) -> Vec<String> {
[INFO] [stderr]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n_producers`
[INFO] [stderr]   --> exercises/01_concurrency_sync/03_channel/src/lib.rs:28:23
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub fn multi_producer(n_producers: usize) -> Vec<String> {
[INFO] [stderr]    |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `size`
[INFO] [stderr]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:108:13
[INFO] [stderr]     |
[INFO] [stderr] 108 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stderr]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `align`
[INFO] [stderr]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:109:13
[INFO] [stderr]     |
[INFO] [stderr] 109 |         let align = layout.align().max(core::mem::align_of::<FreeBlock>());
[INFO] [stderr]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_align`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ptr`
[INFO] [stderr]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:125:30
[INFO] [stderr]     |
[INFO] [stderr] 125 |     unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
[INFO] [stderr]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ptr`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `size`
[INFO] [stderr]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:126:13
[INFO] [stderr]     |
[INFO] [stderr] 126 |         let size = layout.size().max(core::mem::size_of::<FreeBlock>());
[INFO] [stderr]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `size` and `next` are never read
[INFO] [stderr]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:44:5
[INFO] [stderr]    |
[INFO] [stderr] 43 | struct FreeBlock {
[INFO] [stderr]    |        --------- fields in this struct
[INFO] [stderr] 44 |     size: usize,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 45 |     next: *mut FreeBlock,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `heap_start`, `heap_end`, `bump_next`, and `free_list` are never read
[INFO] [stderr]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:49:5
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct FreeListAllocator {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] 49 |     heap_start: usize,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 50 |     heap_end: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 51 |     /// Bump pointer: unallocated region starts here
[INFO] [stderr] 52 |     bump_next: core::sync::atomic::AtomicUsize,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     free_list: core::cell::UnsafeCell<*mut FreeBlock>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `free_list_head` and `set_free_list_head` are never used
[INFO] [stderr]    --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:95:8
[INFO] [stderr]     |
[INFO] [stderr]  69 | impl FreeListAllocator {
[INFO] [stderr]     | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  95 |     fn free_list_head(&self) -> *mut FreeBlock {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     fn set_free_list_head(&self, head: *mut FreeBlock) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `core::ptr::null_mut`
[INFO] [stderr]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:35:5
[INFO] [stderr]    |
[INFO] [stderr] 35 | use core::ptr::null_mut;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `layout`
[INFO] [stderr]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:65:28
[INFO] [stderr]    |
[INFO] [stderr] 65 |     unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
[INFO] [stderr]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `heap_end` is never read
[INFO] [stderr]   --> exercises/02_no_std_dev/02_bump_allocator/src/lib.rs:40:5
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub struct BumpAllocator {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] 39 |     heap_start: usize,
[INFO] [stderr] 40 |     heap_end: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `id`
[INFO] [stderr]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:24
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stderr]    |                        ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `arg0`
[INFO] [stderr]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:35
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stderr]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_arg0`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `arg1`
[INFO] [stderr]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:48
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stderr]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_arg1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `arg2`
[INFO] [stderr]   --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:84:61
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub unsafe fn syscall3(id: usize, arg0: usize, arg1: usize, arg2: usize) -> isize {
[INFO] [stderr]    |                                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_arg2`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fd`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:18
[INFO] [stderr]     |
[INFO] [stderr] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stderr]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `buf`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:141:29
[INFO] [stderr]     |
[INFO] [stderr] 141 | pub fn sys_write(fd: usize, buf: &[u8]) -> isize {
[INFO] [stderr]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fd`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:17
[INFO] [stderr]     |
[INFO] [stderr] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stderr]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `buf`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:147:28
[INFO] [stderr]     |
[INFO] [stderr] 147 | pub fn sys_read(fd: usize, buf: &mut [u8]) -> isize {
[INFO] [stderr]     |                            ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fd`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:153:18
[INFO] [stderr]     |
[INFO] [stderr] 153 | pub fn sys_close(fd: usize) -> isize {
[INFO] [stderr]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `code`
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:159:17
[INFO] [stderr]     |
[INFO] [stderr] 159 | pub fn sys_exit(code: i32) -> ! {
[INFO] [stderr]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NATIVE_SYS_WRITE` is never used
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:113:7
[INFO] [stderr]     |
[INFO] [stderr] 113 | const NATIVE_SYS_WRITE: usize = 1;
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NATIVE_SYS_READ` is never used
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:115:7
[INFO] [stderr]     |
[INFO] [stderr] 115 | const NATIVE_SYS_READ: usize = 0;
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NATIVE_SYS_CLOSE` is never used
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:117:7
[INFO] [stderr]     |
[INFO] [stderr] 117 | const NATIVE_SYS_CLOSE: usize = 3;
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NATIVE_SYS_EXIT` is never used
[INFO] [stderr]    --> exercises/02_no_std_dev/04_syscall_wrapper/src/lib.rs:119:7
[INFO] [stderr]     |
[INFO] [stderr] 119 | const NATIVE_SYS_EXIT: usize = 60;
[INFO] [stderr]     |       ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `multi_level_pt` (lib) generated 10 warnings (run `cargo fix --lib -p multi_level_pt` to apply 7 suggestions)
[INFO] [stderr] warning: `channel` (lib) generated 4 warnings (run `cargo fix --lib -p channel` to apply 4 suggestions)
[INFO] [stderr] warning: `free_list_allocator` (lib) generated 7 warnings (run `cargo fix --lib -p free_list_allocator` to apply 4 suggestions)
[INFO] [stderr] warning: `bump_allocator` (lib) generated 3 warnings (run `cargo fix --lib -p bump_allocator` to apply 2 suggestions)
[INFO] [stderr] warning: `syscall_wrapper` (lib) generated 14 warnings (run `cargo fix --lib -p syscall_wrapper` to apply 10 suggestions)
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:30
[INFO] [stderr]    |
[INFO] [stderr] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stderr]    |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `asid`
[INFO] [stderr]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:90:40
[INFO] [stderr]    |
[INFO] [stderr] 90 |     pub fn lookup(&mut self, vpn: u64, asid: u16) -> Option<u64> {
[INFO] [stderr]    |                                        ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:30
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stderr]     |                              ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ppn`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:40
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stderr]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `asid`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:50
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stderr]     |                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flags`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:103:61
[INFO] [stderr]     |
[INFO] [stderr] 103 |     pub fn insert(&mut self, vpn: u64, ppn: u64, asid: u16, flags: u64) {
[INFO] [stderr]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:125:36
[INFO] [stderr]     |
[INFO] [stderr] 125 |     pub fn flush_by_vpn(&mut self, vpn: u64) {
[INFO] [stderr]     |                                    ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `asid`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:133:37
[INFO] [stderr]     |
[INFO] [stderr] 133 |     pub fn flush_by_asid(&mut self, asid: u16) {
[INFO] [stderr]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_asid`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]    --> exercises/06_page_table/04_tlb_sim/src/lib.rs:195:33
[INFO] [stderr]     |
[INFO] [stderr] 195 |     pub fn translate(&mut self, vpn: u64) -> Option<u64> {
[INFO] [stderr]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `entries`, `capacity`, and `fifo_ptr` are never read
[INFO] [stderr]   --> exercises/06_page_table/04_tlb_sim/src/lib.rs:63:5
[INFO] [stderr]    |
[INFO] [stderr] 62 | pub struct Tlb {
[INFO] [stderr]    |            --- fields in this struct
[INFO] [stderr] 63 |     entries: Vec<TlbEntry>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr] 64 |     capacity: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 65 |     /// FIFO 指针：下次替换的位置
[INFO] [stderr] 66 |     fifo_ptr: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Ordering`
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:31:36
[INFO] [stderr]    |
[INFO] [stderr] 31 | use std::sync::atomic::{AtomicU32, Ordering};
[INFO] [stderr]    |                                    ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `READER_MASK` is never used
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:34:7
[INFO] [stderr]    |
[INFO] [stderr] 34 | const READER_MASK: u32 = (1 << 30) - 1;
[INFO] [stderr]    |       ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WRITER_HOLDING` is never used
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:36:7
[INFO] [stderr]    |
[INFO] [stderr] 36 | const WRITER_HOLDING: u32 = 1 << 30;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WRITER_WAITING` is never used
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:38:7
[INFO] [stderr]    |
[INFO] [stderr] 38 | const WRITER_WAITING: u32 = 1 << 31;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `state` and `data` are never read
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub struct RwLock<T> {
[INFO] [stderr]    |            ------ fields in this struct
[INFO] [stderr] 42 |     state: AtomicU32,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 43 |     data: UnsafeCell<T>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `lock` is never read
[INFO] [stderr]   --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:84:5
[INFO] [stderr]    |
[INFO] [stderr] 83 | pub struct RwLockReadGuard<'a, T> {
[INFO] [stderr]    |            --------------- field in this struct
[INFO] [stderr] 84 |     lock: &'a RwLock<T>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `lock` is never read
[INFO] [stderr]    --> exercises/03_os_concurrency/05_rwlock/src/lib.rs:107:5
[INFO] [stderr]     |
[INFO] [stderr] 106 | pub struct RwLockWriteGuard<'a, T> {
[INFO] [stderr]     |            ---------------- field in this struct
[INFO] [stderr] 107 |     lock: &'a RwLock<T>,
[INFO] [stderr]     |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Ordering`
[INFO] [stderr]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:14:37
[INFO] [stderr]    |
[INFO] [stderr] 14 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stderr]    |                                     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `locked` and `data` are never read
[INFO] [stderr]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct SpinLock<T> {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 17 |     locked: AtomicBool,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 18 |     data: UnsafeCell<T>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `lock` is never read
[INFO] [stderr]   --> exercises/03_os_concurrency/04_spinlock_guard/src/lib.rs:27:5
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub struct SpinGuard<'a, T> {
[INFO] [stderr]    |            --------- field in this struct
[INFO] [stderr] 27 |     lock: &'a SpinLock<T>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Read` and `Write`
[INFO] [stderr]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:34:21
[INFO] [stderr]    |
[INFO] [stderr] 34 | use std::io::{self, Read, Write};
[INFO] [stderr]    |                     ^^^^  ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Command` and `Stdio`
[INFO] [stderr]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:35:20
[INFO] [stderr]    |
[INFO] [stderr] 35 | use std::process::{Command, Stdio};
[INFO] [stderr]    |                    ^^^^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `program`
[INFO] [stderr]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:20
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stderr]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `args`
[INFO] [stderr]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:51:35
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub fn run_command(program: &str, args: &[&str]) -> String {
[INFO] [stderr]    |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input`
[INFO] [stderr]   --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:86:25
[INFO] [stderr]    |
[INFO] [stderr] 86 | pub fn pipe_through_cat(input: &str) -> String {
[INFO] [stderr]    |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `command`
[INFO] [stderr]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:109:22
[INFO] [stderr]     |
[INFO] [stderr] 109 | pub fn get_exit_code(command: &str) -> i32 {
[INFO] [stderr]     |                      ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_command`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `program`
[INFO] [stderr]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:32
[INFO] [stderr]     |
[INFO] [stderr] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stderr]     |                                ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_program`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `args`
[INFO] [stderr]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:135:47
[INFO] [stderr]     |
[INFO] [stderr] 135 | pub fn run_command_with_result(program: &str, args: &[&str]) -> io::Result<String> {
[INFO] [stderr]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pattern`
[INFO] [stderr]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:26
[INFO] [stderr]     |
[INFO] [stderr] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stderr]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pattern`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `input`
[INFO] [stderr]    --> exercises/01_concurrency_sync/04_process_pipe/src/lib.rs:163:41
[INFO] [stderr]     |
[INFO] [stderr] 163 | pub fn pipe_through_grep(pattern: &str, input: &str) -> String {
[INFO] [stderr]     |                                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_input`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Ordering`
[INFO] [stderr]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:11:36
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stderr]    |                                    ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `expected`
[INFO] [stderr]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:36
[INFO] [stderr]    |
[INFO] [stderr] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stderr]    |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_val`
[INFO] [stderr]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:49:51
[INFO] [stderr]    |
[INFO] [stderr] 49 |     pub fn compare_and_swap(&self, expected: u64, new_val: u64) -> Result<u64, u64> {
[INFO] [stderr]    |                                                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_val`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `multiplier`
[INFO] [stderr]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:58:34
[INFO] [stderr]    |
[INFO] [stderr] 58 |     pub fn fetch_multiply(&self, multiplier: u64) -> u64 {
[INFO] [stderr]    |                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_multiplier`
[INFO] [stderr] 
[INFO] [stderr] warning: field `value` is never read
[INFO] [stderr]   --> exercises/03_os_concurrency/01_atomic_counter/src/lib.rs:14:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub struct AtomicCounter {
[INFO] [stderr]    |            ------------- field in this struct
[INFO] [stderr] 14 |     value: AtomicU64,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Ordering`
[INFO] [stderr]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:13:37
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stderr]    |                                     ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `locked` and `data` are never read
[INFO] [stderr]   --> exercises/03_os_concurrency/03_spinlock/src/lib.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct SpinLock<T> {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 17 |     locked: AtomicBool,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 18 |     data: UnsafeCell<T>,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `file`
[INFO] [stderr]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:66:29
[INFO] [stderr]    |
[INFO] [stderr] 66 |     pub fn alloc(&mut self, file: Arc<dyn File>) -> usize {
[INFO] [stderr]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fd`
[INFO] [stderr]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:72:23
[INFO] [stderr]    |
[INFO] [stderr] 72 |     pub fn get(&self, fd: usize) -> Option<Arc<dyn File>> {
[INFO] [stderr]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `fd`
[INFO] [stderr]   --> exercises/02_no_std_dev/05_fd_table/src/lib.rs:78:29
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub fn close(&mut self, fd: usize) -> bool {
[INFO] [stderr]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_fd`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:35:35
[INFO] [stderr]    |
[INFO] [stderr] 35 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stderr]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cx`
[INFO] [stderr]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:59:35
[INFO] [stderr]    |
[INFO] [stderr] 59 |     fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output> {
[INFO] [stderr]    |                                   ^^ help: if this is intentional, prefix it with an underscore: `_cx`
[INFO] [stderr] 
[INFO] [stderr] warning: field `yielded` is never read
[INFO] [stderr]   --> exercises/05_async_programming/01_basic_future/src/lib.rs:43:5
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub struct YieldOnce {
[INFO] [stderr]    |            --------- field in this struct
[INFO] [stderr] 43 |     yielded: bool,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Arc` and `Mutex`
[INFO] [stderr]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:10:17
[INFO] [stderr]    |
[INFO] [stderr] 10 | use std::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 import: `std::thread`
[INFO] [stderr]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use std::thread;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n_threads`
[INFO] [stderr]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:27
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stderr]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `count_per_thread`
[INFO] [stderr]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:18:45
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub fn concurrent_counter(n_threads: usize, count_per_thread: usize) -> usize {
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_count_per_thread`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n_threads`
[INFO] [stderr]   --> exercises/01_concurrency_sync/02_mutex_counter/src/lib.rs:31:27
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub fn concurrent_collect(n_threads: usize) -> Vec<usize> {
[INFO] [stderr]    |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_threads`
[INFO] [stderr] 
[INFO] [stderr] warning: `tlb_sim` (lib) generated 10 warnings (run `cargo fix --lib -p tlb_sim` to apply 9 suggestions)
[INFO] [stderr] warning: `rwlock` (lib) generated 7 warnings (run `cargo fix --lib -p rwlock` to apply 1 suggestion)
[INFO] [stderr] warning: `spinlock_guard` (lib) generated 3 warnings (run `cargo fix --lib -p spinlock_guard` to apply 1 suggestion)
[INFO] [stderr] warning: `process_pipe` (lib) generated 10 warnings (run `cargo fix --lib -p process_pipe` to apply 10 suggestions)
[INFO] [stderr] warning: `atomic_counter` (lib) generated 5 warnings (run `cargo fix --lib -p atomic_counter` to apply 4 suggestions)
[INFO] [stderr] warning: `spinlock` (lib) generated 2 warnings (run `cargo fix --lib -p spinlock` to apply 1 suggestion)
[INFO] [stderr] warning: `fd_table` (lib) generated 3 warnings (run `cargo fix --lib -p fd_table` to apply 3 suggestions)
[INFO] [stderr] warning: `basic_future` (lib) generated 3 warnings (run `cargo fix --lib -p basic_future` to apply 2 suggestions)
[INFO] [stderr] warning: `mutex_counter` (lib) generated 5 warnings (run `cargo fix --lib -p mutex_counter` to apply 5 suggestions)
[INFO] [stderr] warning: unused variable: `value`
[INFO] [stderr]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:40:27
[INFO] [stderr]    |
[INFO] [stderr] 40 |     pub fn produce(&self, value: u32) {
[INFO] [stderr]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `val`
[INFO] [stderr]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:83:24
[INFO] [stderr]    |
[INFO] [stderr] 83 |     pub fn init(&self, val: u32) -> bool {
[INFO] [stderr]    |                        ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stderr] 
[INFO] [stderr] warning: fields `initialized` and `value` are never read
[INFO] [stderr]   --> exercises/03_os_concurrency/02_atomic_ordering/src/lib.rs:67:5
[INFO] [stderr]    |
[INFO] [stderr] 66 | pub struct OnceCell {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 67 |     initialized: AtomicBool,
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 68 |     value: AtomicU32,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:27
[INFO] [stderr]    |
[INFO] [stderr] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stderr]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ppn`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:39
[INFO] [stderr]    |
[INFO] [stderr] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stderr]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flags`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:66:49
[INFO] [stderr]    |
[INFO] [stderr] 66 |     pub fn map(&mut self, vpn: usize, ppn: u32, flags: u8) {
[INFO] [stderr]    |                                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:72:29
[INFO] [stderr]    |
[INFO] [stderr] 72 |     pub fn unmap(&mut self, vpn: usize) {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `vpn`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:78:26
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub fn lookup(&self, vpn: usize) -> Option<&PageTableEntry> {
[INFO] [stderr]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_vpn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:29
[INFO] [stderr]    |
[INFO] [stderr] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stderr]    |                             ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `is_write`
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:91:38
[INFO] [stderr]    |
[INFO] [stderr] 91 |     pub fn translate(&self, va: u32, is_write: bool) -> TranslateResult {
[INFO] [stderr]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_write`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:103:18
[INFO] [stderr]     |
[INFO] [stderr] 103 | pub fn va_to_vpn(va: u32) -> usize {
[INFO] [stderr]     |                  ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `va`
[INFO] [stderr]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:111:21
[INFO] [stderr]     |
[INFO] [stderr] 111 | pub fn va_to_offset(va: u32) -> u32 {
[INFO] [stderr]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_va`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ppn`
[INFO] [stderr]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:16
[INFO] [stderr]     |
[INFO] [stderr] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stderr]     |                ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `offset`
[INFO] [stderr]    --> exercises/06_page_table/02_page_table_walk/src/lib.rs:117:26
[INFO] [stderr]     |
[INFO] [stderr] 117 | pub fn make_pa(ppn: u32, offset: u32) -> u32 {
[INFO] [stderr]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stderr] 
[INFO] [stderr] warning: field `entries` is never read
[INFO] [stderr]   --> exercises/06_page_table/02_page_table_walk/src/lib.rs:52:5
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct SingleLevelPageTable {
[INFO] [stderr]    |            -------------------- field in this struct
[INFO] [stderr] 52 |     entries: Vec<Option<PageTableEntry>>,
[INFO] [stderr]    |     ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ppn`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:17
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stderr]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_ppn`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `flags`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:59:27
[INFO] [stderr]    |
[INFO] [stderr] 59 | pub fn make_pte(ppn: u64, flags: u64) -> u64 {
[INFO] [stderr]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_flags`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pte`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:67:20
[INFO] [stderr]    |
[INFO] [stderr] 67 | pub fn extract_ppn(pte: u64) -> u64 {
[INFO] [stderr]    |                    ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pte`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:73:22
[INFO] [stderr]    |
[INFO] [stderr] 73 | pub fn extract_flags(pte: u64) -> u64 {
[INFO] [stderr]    |                      ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pte`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:79:17
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub fn is_valid(pte: u64) -> bool {
[INFO] [stderr]    |                 ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pte`
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:88:16
[INFO] [stderr]    |
[INFO] [stderr] 88 | pub fn is_leaf(pte: u64) -> bool {
[INFO] [stderr]    |                ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pte`
[INFO] [stderr]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:25
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stderr]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_pte`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `read`
[INFO] [stderr]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:35
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stderr]     |                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_read`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `write`
[INFO] [stderr]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:47
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stderr]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_write`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `execute`
[INFO] [stderr]    --> exercises/06_page_table/01_pte_flags/src/lib.rs:100:60
[INFO] [stderr]     |
[INFO] [stderr] 100 | pub fn check_permission(pte: u64, read: bool, write: bool, execute: bool) -> bool {
[INFO] [stderr]     |                                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_execute`
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PPN_SHIFT` is never used
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:48:7
[INFO] [stderr]    |
[INFO] [stderr] 48 | const PPN_SHIFT: u32 = 10;
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PPN_MASK` is never used
[INFO] [stderr]   --> exercises/06_page_table/01_pte_flags/src/lib.rs:49:7
[INFO] [stderr]    |
[INFO] [stderr] 49 | const PPN_MASK: u64 = (1u64 << 44) - 1; // 44-bit PPN
[INFO] [stderr]    |       ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `atomic_ordering` (lib) generated 3 warnings (run `cargo fix --lib -p atomic_ordering` to apply 2 suggestions)
[INFO] [stderr] warning: `page_table_walk` (lib) generated 12 warnings (run `cargo fix --lib -p page_table_walk` to apply 11 suggestions)
[INFO] [stderr] warning: `pte_flags` (lib) generated 12 warnings (run `cargo fix --lib -p pte_flags` to apply 10 suggestions)
[INFO] [stderr] warning: `atomic_ordering` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: unused import: `tokio::task::JoinHandle`
[INFO] [stderr]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use tokio::task::JoinHandle;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `sleep`
[INFO] [stderr]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:11:19
[INFO] [stderr]    |
[INFO] [stderr] 11 | use tokio::time::{sleep, Duration};
[INFO] [stderr]    |                   ^^^^^  ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n`
[INFO] [stderr]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:16:33
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub async fn concurrent_squares(n: usize) -> Vec<usize> {
[INFO] [stderr]    |                                 ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n`
[INFO] [stderr]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:35
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stderr]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `duration_ms`
[INFO] [stderr]   --> exercises/05_async_programming/02_tokio_tasks/src/lib.rs:27:45
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub async fn parallel_sleep_tasks(n: usize, duration_ms: u64) -> Vec<usize> {
[INFO] [stderr]    |                                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration_ms`
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `tokio::sync::mpsc`
[INFO] [stderr]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use tokio::sync::mpsc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `items`
[INFO] [stderr]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:17:32
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub async fn producer_consumer(items: Vec<String>) -> Vec<String> {
[INFO] [stderr]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_items`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `n_producers`
[INFO] [stderr]   --> exercises/05_async_programming/03_async_channel/src/lib.rs:28:21
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub async fn fan_in(n_producers: usize) -> Vec<String> {
[INFO] [stderr]    |                     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_producers`
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Duration` and `sleep`
[INFO] [stderr]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:11:19
[INFO] [stderr]    |
[INFO] [stderr] 11 | use tokio::time::{sleep, Duration};
[INFO] [stderr]    |                   ^^^^^  ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `future`
[INFO] [stderr]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:33
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stderr]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_future`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `timeout_ms`
[INFO] [stderr]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:18:44
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub async fn with_timeout<F, T>(future: F, timeout_ms: u64) -> Option<T>
[INFO] [stderr]    |                                            ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout_ms`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f1`
[INFO] [stderr]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:30
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stderr]    |                              ^^ help: if this is intentional, prefix it with an underscore: `_f1`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `f2`
[INFO] [stderr]   --> exercises/05_async_programming/04_select_timeout/src/lib.rs:30:38
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub async fn race<F1, F2, T>(f1: F1, f2: F2) -> T
[INFO] [stderr]    |                                      ^^ help: if this is intentional, prefix it with an underscore: `_f2`
[INFO] [stderr] 
[INFO] [stderr] warning: `tokio_tasks` (lib) generated 5 warnings (run `cargo fix --lib -p tokio_tasks` to apply 5 suggestions)
[INFO] [stderr] warning: `async_channel_ex` (lib) generated 3 warnings (run `cargo fix --lib -p async_channel_ex` to apply 3 suggestions)
[INFO] [stderr] warning: `select_timeout` (lib) generated 5 warnings (run `cargo fix --lib -p select_timeout` to apply 5 suggestions)
[INFO] [stderr] warning: `select_timeout` (lib test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `basic_future` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `tokio_tasks` (lib test) generated 5 warnings (5 duplicates)
[INFO] [stderr] warning: `async_channel_ex` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `syscall_wrapper` (lib test) generated 14 warnings (14 duplicates)
[INFO] [stderr] warning: `bump_allocator` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `multi_level_pt` (lib test) generated 10 warnings (10 duplicates)
[INFO] [stderr] warning: `tlb_sim` (lib test) generated 10 warnings (10 duplicates)
[INFO] [stderr] warning: fields `heap_start`, `heap_end`, `bump_next`, and `free_list` are never read
[INFO] [stderr]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:49:5
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub struct FreeListAllocator {
[INFO] [stderr]    |            ----------------- fields in this struct
[INFO] [stderr] 49 |     heap_start: usize,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] 50 |     heap_end: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 51 |     /// Bump pointer: unallocated region starts here
[INFO] [stderr] 52 |     bump_next: core::sync::atomic::AtomicUsize,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     free_list: std::sync::Mutex<*mut FreeBlock>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `free_list_head` and `set_free_list_head` are never used
[INFO] [stderr]   --> exercises/02_no_std_dev/03_free_list_allocator/src/lib.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 69 | impl FreeListAllocator {
[INFO] [stderr]    | ---------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 85 |     fn free_list_head(&self) -> *mut FreeBlock {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 90 |     fn set_free_list_head(&self, head: *mut FreeBlock) {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `spinlock_guard` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `spinlock` (lib test) generated 2 warnings (2 duplicates)
[INFO] [stderr] warning: `page_table_walk` (lib test) generated 12 warnings (12 duplicates)
[INFO] [stderr] warning: `pte_flags` (lib test) generated 12 warnings (12 duplicates)
[INFO] [stderr] warning: `channel` (lib test) generated 4 warnings (4 duplicates)
[INFO] [stderr] warning: `mutex_counter` (lib test) generated 5 warnings (5 duplicates)
[INFO] [stderr] warning: `rwlock` (lib test) generated 7 warnings (7 duplicates)
[INFO] [stderr] warning: `fd_table` (lib test) generated 3 warnings (3 duplicates)
[INFO] [stderr] warning: `process_pipe` (lib test) generated 10 warnings (10 duplicates)
[INFO] [stderr] warning: `free_list_allocator` (lib test) generated 7 warnings (5 duplicates)
[INFO] [stderr] warning: `atomic_counter` (lib test) generated 5 warnings (5 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.15s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/async_channel_ex-719eb1af67e9a796)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stdout] test tests::test_fan_in_single ... FAILED
[INFO] [stdout] test tests::test_producer_consumer ... FAILED
[INFO] [stdout] test tests::test_producer_consumer_empty ... FAILED
[INFO] [stdout] test tests::test_fan_in ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_fan_in_single stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_fan_in_single' (25) panicked at exercises/05_async_programming/03_async_channel/src/lib.rs:34:5:
[INFO] [stdout] not yet implemented
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5e16cc1a7732 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5e16cc1a7732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5e16cc1b7aba - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5e16cc1b7aba - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5e16cc176026 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5e16cc176026 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5e16cc1869d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5e16cc1869d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5e16cc186871 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5e16cc0caede - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5e16cc0caede - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5e16cc186d02 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5e16cc186d02 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5e16cc186aca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5e16cc181ea9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5e16cc16adfd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stderr] error: test failed, to rerun pass `-p async_channel_ex --lib`
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5e16cc1beffc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5e16cc1befc2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5e16cc0a19f8 - async_channel_ex::fan_in::{{closure}}::hb4b143b03b2dd6c9
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:34:5
[INFO] [stdout]   21:     0x5e16cc0a0c83 - async_channel_ex::tests::test_fan_in_single::{{closure}}::h39793ba45288fb13
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:69:32
[INFO] [stdout]   22:     0x5e16cc0a52b2 - <core::pin::Pin<P> as core::future::future::Future>::poll::ha7edb116dc70fa51
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5e16cc0a526d - <core::pin::Pin<P> as core::future::future::Future>::poll::h4383d5ee5a825ce4
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5e16cc0ac04d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::hf6d15fbbf592ef41
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   25:     0x5e16cc0abf5b - tokio::task::coop::with_budget::h44efb719ce3f5b06
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5e16cc0abf5b - tokio::task::coop::budget::hc8a786438b8847e8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5e16cc0abf5b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::hac4df363cef0d40c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   28:     0x5e16cc0a96a0 - tokio::runtime::scheduler::current_thread::Context::enter::h95aa18a513be644b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   29:     0x5e16cc0aa9ed - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::h311efcfabcee6c4b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   30:     0x5e16cc0aa674 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hd37ca69e2eba3a05
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   31:     0x5e16cc0a464b - tokio::runtime::context::scoped::Scoped<T>::set::h0665496d0b8476f5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5e16cc0a4349 - tokio::runtime::context::set_scheduler::{{closure}}::hd06e9ee3f046e3ae
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5e16cc0a24f2 - std::thread::local::LocalKey<T>::try_with::h591092a4a2305cd7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5e16cc0a1bbe - std::thread::local::LocalKey<T>::with::h827bf92b10c2d11d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5e16cc0a42fd - tokio::runtime::context::set_scheduler::hca0a7be8b55434df
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5e16cc0aa400 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hd74d1ba67f0af56e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   37:     0x5e16cc0aa6b6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h3389d005eeb0c9d5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   38:     0x5e16cc0a8630 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::h299becaa45e73b33
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5e16cc0a7843 - tokio::runtime::context::runtime::enter_runtime::h43f016840fcc4eab
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5e16cc0a8341 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h0c6752a16e2808f2
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5e16cc0a4b14 - tokio::runtime::runtime::Runtime::block_on_inner::hc0589a524985994a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5e16cc0a4dec - tokio::runtime::runtime::Runtime::block_on::h160c1f2f3e168773
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5e16cc0a0ae5 - async_channel_ex::tests::test_fan_in_single::hefec58053245467d
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:70:56
[INFO] [stdout]   44:     0x5e16cc0a0e97 - async_channel_ex::tests::test_fan_in_single::{{closure}}::h516a75eaa99bfe64
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:68:34
[INFO] [stdout]   45:     0x5e16cc0a5d06 - core::ops::function::FnOnce::call_once::h4b681dc1d86955b1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5e16cc0cac9b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5e16cc0cac9b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5e16cc0de6aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5e16cc0de6aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5e16cc0de6aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5e16cc0de6aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5e16cc0de6aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5e16cc0de6aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5e16cc0de6aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5e16cc0b8b04 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5e16cc0b8b04 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5e16cc0bc4a2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5e16cc0bc4a2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5e16cc0bc4a2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5e16cc17d13f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5e16cc17d13f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x726077f88aa4 - <unknown>
[INFO] [stdout]   67:     0x726078015a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_producer_consumer stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_producer_consumer' (26) panicked at exercises/05_async_programming/03_async_channel/src/lib.rs:22:5:
[INFO] [stdout] not yet implemented
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5e16cc1a7732 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5e16cc1a7732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5e16cc1b7aba - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5e16cc1b7aba - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5e16cc176026 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5e16cc176026 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5e16cc1869d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5e16cc1869d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5e16cc186871 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5e16cc0caede - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5e16cc0caede - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5e16cc186d02 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5e16cc186d02 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5e16cc186aca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5e16cc181ea9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5e16cc16adfd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5e16cc1beffc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5e16cc1befc2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5e16cc0a0413 - async_channel_ex::producer_consumer::{{closure}}::h66234c9ac4863cb1
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:22:5
[INFO] [stdout]   21:     0x5e16cc0a1411 - async_channel_ex::tests::test_producer_consumer::{{closure}}::hf97a836e700be54c
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:44:55
[INFO] [stdout]   22:     0x5e16cc0a52b2 - <core::pin::Pin<P> as core::future::future::Future>::poll::ha7edb116dc70fa51
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5e16cc0a526d - <core::pin::Pin<P> as core::future::future::Future>::poll::h4383d5ee5a825ce4
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5e16cc0ac04d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::hf6d15fbbf592ef41
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   25:     0x5e16cc0abf5b - tokio::task::coop::with_budget::h44efb719ce3f5b06
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5e16cc0abf5b - tokio::task::coop::budget::hc8a786438b8847e8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5e16cc0abf5b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::hac4df363cef0d40c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   28:     0x5e16cc0a96a0 - tokio::runtime::scheduler::current_thread::Context::enter::h95aa18a513be644b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   29:     0x5e16cc0aa9ed - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::h311efcfabcee6c4b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   30:     0x5e16cc0aa674 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hd37ca69e2eba3a05
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   31:     0x5e16cc0a464b - tokio::runtime::context::scoped::Scoped<T>::set::h0665496d0b8476f5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5e16cc0a4349 - tokio::runtime::context::set_scheduler::{{closure}}::hd06e9ee3f046e3ae
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5e16cc0a24f2 - std::thread::local::LocalKey<T>::try_with::h591092a4a2305cd7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5e16cc0a1bbe - std::thread::local::LocalKey<T>::with::h827bf92b10c2d11d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5e16cc0a42fd - tokio::runtime::context::set_scheduler::hca0a7be8b55434df
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5e16cc0aa400 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hd74d1ba67f0af56e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   37:     0x5e16cc0aa6b6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h3389d005eeb0c9d5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   38:     0x5e16cc0a8630 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::h299becaa45e73b33
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5e16cc0a7843 - tokio::runtime::context::runtime::enter_runtime::h43f016840fcc4eab
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5e16cc0a8341 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h0c6752a16e2808f2
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5e16cc0a4b14 - tokio::runtime::runtime::Runtime::block_on_inner::hc0589a524985994a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5e16cc0a4dec - tokio::runtime::runtime::Runtime::block_on::h160c1f2f3e168773
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5e16cc0a0fe1 - async_channel_ex::tests::test_producer_consumer::h6a2548a504cd9dde
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:45:34
[INFO] [stdout]   44:     0x5e16cc0a1077 - async_channel_ex::tests::test_producer_consumer::{{closure}}::hee428c1d93c2d6a0
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:42:38
[INFO] [stdout]   45:     0x5e16cc0a5d46 - core::ops::function::FnOnce::call_once::h70a6a86ed3dd98ab
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5e16cc0cac9b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5e16cc0cac9b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5e16cc0de6aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5e16cc0de6aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5e16cc0de6aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5e16cc0de6aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5e16cc0de6aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5e16cc0de6aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5e16cc0de6aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5e16cc0b8b04 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5e16cc0b8b04 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5e16cc0bc4a2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5e16cc0bc4a2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5e16cc0bc4a2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5e16cc17d13f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5e16cc17d13f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x726077f88aa4 - <unknown>
[INFO] [stdout]   67:     0x726078015a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_producer_consumer_empty stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_producer_consumer_empty' (27) panicked at exercises/05_async_programming/03_async_channel/src/lib.rs:22:5:
[INFO] [stdout] not yet implemented
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5e16cc1a7732 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5e16cc1a7732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5e16cc1b7aba - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5e16cc1b7aba - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5e16cc176026 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5e16cc176026 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5e16cc1869d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5e16cc1869d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5e16cc186871 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5e16cc0caede - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5e16cc0caede - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5e16cc186d02 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5e16cc186d02 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5e16cc186aca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5e16cc181ea9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5e16cc16adfd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5e16cc1beffc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5e16cc1befc2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5e16cc0a0413 - async_channel_ex::producer_consumer::{{closure}}::h66234c9ac4863cb1
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:22:5
[INFO] [stdout]   21:     0x5e16cc0a1850 - async_channel_ex::tests::test_producer_consumer_empty::{{closure}}::h05b1bf9012fc8e19
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:50:48
[INFO] [stdout]   22:     0x5e16cc0a52b2 - <core::pin::Pin<P> as core::future::future::Future>::poll::ha7edb116dc70fa51
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5e16cc0a526d - <core::pin::Pin<P> as core::future::future::Future>::poll::h4383d5ee5a825ce4
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5e16cc0ac04d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::hf6d15fbbf592ef41
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   25:     0x5e16cc0abf5b - tokio::task::coop::with_budget::h44efb719ce3f5b06
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5e16cc0abf5b - tokio::task::coop::budget::hc8a786438b8847e8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5e16cc0abf5b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::hac4df363cef0d40c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   28:     0x5e16cc0a96a0 - tokio::runtime::scheduler::current_thread::Context::enter::h95aa18a513be644b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   29:     0x5e16cc0aa9ed - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::h311efcfabcee6c4b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   30:     0x5e16cc0aa674 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hd37ca69e2eba3a05
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   31:     0x5e16cc0a464b - tokio::runtime::context::scoped::Scoped<T>::set::h0665496d0b8476f5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5e16cc0a4349 - tokio::runtime::context::set_scheduler::{{closure}}::hd06e9ee3f046e3ae
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5e16cc0a24f2 - std::thread::local::LocalKey<T>::try_with::h591092a4a2305cd7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5e16cc0a1bbe - std::thread::local::LocalKey<T>::with::h827bf92b10c2d11d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5e16cc0a42fd - tokio::runtime::context::set_scheduler::hca0a7be8b55434df
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5e16cc0aa400 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hd74d1ba67f0af56e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   37:     0x5e16cc0aa6b6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h3389d005eeb0c9d5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   38:     0x5e16cc0a8630 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::h299becaa45e73b33
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5e16cc0a7843 - tokio::runtime::context::runtime::enter_runtime::h43f016840fcc4eab
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5e16cc0a8341 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h0c6752a16e2808f2
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5e16cc0a4b14 - tokio::runtime::runtime::Runtime::block_on_inner::hc0589a524985994a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5e16cc0a4dec - tokio::runtime::runtime::Runtime::block_on::h160c1f2f3e168773
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5e16cc0a168b - async_channel_ex::tests::test_producer_consumer_empty::h3f54983e37bfba70
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:51:35
[INFO] [stdout]   44:     0x5e16cc0a1987 - async_channel_ex::tests::test_producer_consumer_empty::{{closure}}::hfc7fe6a30d7a9e21
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:49:44
[INFO] [stdout]   45:     0x5e16cc0a5dc6 - core::ops::function::FnOnce::call_once::hf3e131dbebe7a189
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5e16cc0cac9b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5e16cc0cac9b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5e16cc0de6aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5e16cc0de6aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5e16cc0de6aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5e16cc0de6aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5e16cc0de6aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5e16cc0de6aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5e16cc0de6aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5e16cc0b8b04 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5e16cc0b8b04 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5e16cc0bc4a2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5e16cc0bc4a2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5e16cc0bc4a2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5e16cc17d13f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5e16cc17d13f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x726077f88aa4 - <unknown>
[INFO] [stdout]   67:     0x726078015a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tests::test_fan_in stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tests::test_fan_in' (24) panicked at exercises/05_async_programming/03_async_channel/src/lib.rs:34:5:
[INFO] [stdout] not yet implemented
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::libunwind::trace::hff358a60abf734fc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x5e16cc1a7732 - std::backtrace_rs::backtrace::trace_unsynchronized::h3b121f916dd95ec6
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x5e16cc1a7732 - std::sys::backtrace::_print_fmt::hde0a62ded68798e9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x5e16cc1a7732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h93773fc827e3113d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x5e16cc1b7aba - core::fmt::rt::Argument::fmt::h01eff69902dad97f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x5e16cc1b7aba - core::fmt::write::hed7b5c73d82ecb7c
[INFO] [stdout]    6:     0x5e16cc176026 - std::io::default_write_fmt::h2f696ff5b8bbaa4b
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x5e16cc176026 - std::io::Write::write_fmt::h5e66814db8a9cfce
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x5e16cc1869d9 - std::sys::backtrace::BacktraceLock::print::h8b1d6fcc5a56d1a3
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x5e16cc1869d9 - std::panicking::default_hook::{{closure}}::h2be84df4f189ae36
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x5e16cc186871 - std::panicking::default_hook::hf0ea8939246f43a9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x5e16cc0caede - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::h02d35e3888986252
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   12:     0x5e16cc0caede - test::test_main_with_exit_callback::{{closure}}::h939640a27d647173
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x5e16cc186d02 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hc9df09ff391af3e7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2220:9
[INFO] [stdout]   14:     0x5e16cc186d02 - std::panicking::panic_with_hook::hb4bd9ac1123582a0
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x5e16cc186aca - std::panicking::panic_handler::{{closure}}::hde00dd15f5637fe2
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x5e16cc181ea9 - std::sys::backtrace::__rust_end_short_backtrace::hb72197fa777c1785
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x5e16cc16adfd - __rustc[4425a7e20b4c8619]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x5e16cc1beffc - core::panicking::panic_fmt::ha59b517dd231f4da
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x5e16cc1befc2 - core::panicking::panic::hbff2745fd4c5afec
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panicking.rs:150:5
[INFO] [stdout]   20:     0x5e16cc0a19f8 - async_channel_ex::fan_in::{{closure}}::hb4b143b03b2dd6c9
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:34:5
[INFO] [stdout]   21:     0x5e16cc0a0793 - async_channel_ex::tests::test_fan_in::{{closure}}::hd24d658c92ddf382
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:56:32
[INFO] [stdout]   22:     0x5e16cc0a52b2 - <core::pin::Pin<P> as core::future::future::Future>::poll::ha7edb116dc70fa51
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   23:     0x5e16cc0a526d - <core::pin::Pin<P> as core::future::future::Future>::poll::h4383d5ee5a825ce4
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/future/future.rs:133:9
[INFO] [stdout]   24:     0x5e16cc0ac04d - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::{{closure}}::hf6d15fbbf592ef41
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:70
[INFO] [stdout]   25:     0x5e16cc0abf5b - tokio::task::coop::with_budget::h44efb719ce3f5b06
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:167:5
[INFO] [stdout]   26:     0x5e16cc0abf5b - tokio::task::coop::budget::hc8a786438b8847e8
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:133:5
[INFO] [stdout]   27:     0x5e16cc0abf5b - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::{{closure}}::hac4df363cef0d40c
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:753:25
[INFO] [stdout]   28:     0x5e16cc0a96a0 - tokio::runtime::scheduler::current_thread::Context::enter::h95aa18a513be644b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:442:19
[INFO] [stdout]   29:     0x5e16cc0aa9ed - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::{{closure}}::h311efcfabcee6c4b
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:752:44
[INFO] [stdout]   30:     0x5e16cc0aa674 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::{{closure}}::hd37ca69e2eba3a05
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:68
[INFO] [stdout]   31:     0x5e16cc0a464b - tokio::runtime::context::scoped::Scoped<T>::set::h0665496d0b8476f5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/scoped.rs:40:9
[INFO] [stdout]   32:     0x5e16cc0a4349 - tokio::runtime::context::set_scheduler::{{closure}}::hd06e9ee3f046e3ae
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:38
[INFO] [stdout]   33:     0x5e16cc0a24f2 - std::thread::local::LocalKey<T>::try_with::h591092a4a2305cd7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:513:12
[INFO] [stdout]   34:     0x5e16cc0a1bbe - std::thread::local::LocalKey<T>::with::h827bf92b10c2d11d
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/local.rs:477:20
[INFO] [stdout]   35:     0x5e16cc0a42fd - tokio::runtime::context::set_scheduler::hca0a7be8b55434df
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context.rs:176:17
[INFO] [stdout]   36:     0x5e16cc0aa400 - tokio::runtime::scheduler::current_thread::CoreGuard::enter::hd74d1ba67f0af56e
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:840:27
[INFO] [stdout]   37:     0x5e16cc0aa6b6 - tokio::runtime::scheduler::current_thread::CoreGuard::block_on::h3389d005eeb0c9d5
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:740:24
[INFO] [stdout]   38:     0x5e16cc0a8630 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::{{closure}}::h299becaa45e73b33
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:200:33
[INFO] [stdout]   39:     0x5e16cc0a7843 - tokio::runtime::context::runtime::enter_runtime::h43f016840fcc4eab
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/context/runtime.rs:65:16
[INFO] [stdout]   40:     0x5e16cc0a8341 - tokio::runtime::scheduler::current_thread::CurrentThread::block_on::h0c6752a16e2808f2
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/scheduler/current_thread/mod.rs:188:9
[INFO] [stdout]   41:     0x5e16cc0a4b14 - tokio::runtime::runtime::Runtime::block_on_inner::hc0589a524985994a
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:368:52
[INFO] [stdout]   42:     0x5e16cc0a4dec - tokio::runtime::runtime::Runtime::block_on::h160c1f2f3e168773
[INFO] [stdout]                                at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/runtime/runtime.rs:342:18
[INFO] [stdout]   43:     0x5e16cc0a05c5 - async_channel_ex::tests::test_fan_in::h9bbf5aeb9fd1fd25
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:64:10
[INFO] [stdout]   44:     0x5e16cc0a0657 - async_channel_ex::tests::test_fan_in::{{closure}}::h85398bd876d38744
[INFO] [stdout]                                at /opt/rustwide/workdir/exercises/05_async_programming/03_async_channel/src/lib.rs:55:27
[INFO] [stdout]   45:     0x5e16cc0a5d86 - core::ops::function::FnOnce::call_once::h8d9835c94f71fffa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   46:     0x5e16cc0cac9b - core::ops::function::FnOnce::call_once::hddb3cd395c36bfbb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   47:     0x5e16cc0cac9b - test::__rust_begin_short_backtrace::h0b6a7601d9750bfa
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:663:18
[INFO] [stdout]   48:     0x5e16cc0de6aa - test::run_test_in_process::{{closure}}::h444209903f00b347
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:74
[INFO] [stdout]   49:     0x5e16cc0de6aa - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfb3ba8f46e537649
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   50:     0x5e16cc0de6aa - std::panicking::catch_unwind::do_call::h1672a45911fcf9dc
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   51:     0x5e16cc0de6aa - std::panicking::catch_unwind::h0fadaee22787a6dd
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   52:     0x5e16cc0de6aa - std::panic::catch_unwind::hc47ad190f2c8e188
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   53:     0x5e16cc0de6aa - test::run_test_in_process::hcd7faaf934f29999
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:686:27
[INFO] [stdout]   54:     0x5e16cc0de6aa - test::run_test::{{closure}}::hddc4550da4871867
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:607:43
[INFO] [stdout]   55:     0x5e16cc0b8b04 - test::run_test::{{closure}}::h98ae26689f13ed94
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/test/src/lib.rs:637:41
[INFO] [stdout]   56:     0x5e16cc0b8b04 - std::sys::backtrace::__rust_begin_short_backtrace::h3ec4d1f21ad44588
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   57:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::{{closure}}::hd8bf2c73d479939f
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   58:     0x5e16cc0bc4a2 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::h3b4248f358af2491
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   59:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::do_call::hda10a64f4b8daebe
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:581:40
[INFO] [stdout]   60:     0x5e16cc0bc4a2 - std::panicking::catch_unwind::h659e5ee8336ec8c7
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panicking.rs:544:19
[INFO] [stdout]   61:     0x5e16cc0bc4a2 - std::panic::catch_unwind::h9d4d66a538912c18
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/panic.rs:359:14
[INFO] [stdout]   62:     0x5e16cc0bc4a2 - std::thread::lifecycle::spawn_unchecked::{{closure}}::h7557906bb51d79f1
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   63:     0x5e16cc0bc4a2 - core::ops::function::FnOnce::call_once{{vtable.shim}}::h9e460d1d7fc83d35
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   64:     0x5e16cc17d13f - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h61282da819d64ea9
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   65:     0x5e16cc17d13f - std::sys::thread::unix::Thread::new::thread_start::h982f9ea829d1b5fb
[INFO] [stdout]                                at /rustc/4a4ef493e3a1488c6e321570238084b38948f6db/library/std/src/sys/thread/unix.rs:127:17
[INFO] [stdout]   66:     0x726077f88aa4 - <unknown>
[INFO] [stdout]   67:     0x726078015a64 - clone
[INFO] [stdout]   68:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tests::test_fan_in
[INFO] [stdout]     tests::test_fan_in_single
[INFO] [stdout]     tests::test_producer_consumer
[INFO] [stdout]     tests::test_producer_consumer_empty
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 4 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "b6ef9144979fb8b9738bcb86a5ded6a84d2421f91c9628aa9e0a22614e7a02fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b6ef9144979fb8b9738bcb86a5ded6a84d2421f91c9628aa9e0a22614e7a02fc", kill_on_drop: false }`
[INFO] [stdout] b6ef9144979fb8b9738bcb86a5ded6a84d2421f91c9628aa9e0a22614e7a02fc
