[INFO] cloning repository https://github.com/WondFS/WondFS-fuse
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/WondFS/WondFS-fuse" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWondFS%2FWondFS-fuse", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWondFS%2FWondFS-fuse'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c112a26239b63b5dc48ba93ad01a87a1bbcfe233
[INFO] testing WondFS/WondFS-fuse against beta-2025-09-21 for beta-1.91-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWondFS%2FWondFS-fuse" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/WondFS/WondFS-fuse
[INFO] finished tweaking git repo https://github.com/WondFS/WondFS-fuse
[INFO] tweaked toml for git repo https://github.com/WondFS/WondFS-fuse written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/WondFS/WondFS-fuse on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/WondFS/WondFS-fuse 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" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 90e6437c4ea817384ba07e81afe1435b2944e30a0f24b67ba981e4d49b0a4481
[INFO] running `Command { std: "docker" "start" "-a" "90e6437c4ea817384ba07e81afe1435b2944e30a0f24b67ba981e4d49b0a4481", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90e6437c4ea817384ba07e81afe1435b2944e30a0f24b67ba981e4d49b0a4481", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "90e6437c4ea817384ba07e81afe1435b2944e30a0f24b67ba981e4d49b0a4481", kill_on_drop: false }`
[INFO] [stdout] 90e6437c4ea817384ba07e81afe1435b2944e30a0f24b67ba981e4d49b0a4481
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b9f7eae0c7f726aec843d44cb3101a015960fa4351e68d2a9b966308d688db8d
[INFO] running `Command { std: "docker" "start" "-a" "b9f7eae0c7f726aec843d44cb3101a015960fa4351e68d2a9b966308d688db8d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.125
[INFO] [stderr]    Compiling pkg-config v0.3.25
[INFO] [stderr]    Compiling snap v1.0.5
[INFO] [stderr]    Compiling regex-syntax v0.6.25
[INFO] [stderr]    Compiling fuser v0.7.0
[INFO] [stderr]    Compiling users v0.11.0
[INFO] [stderr]    Compiling page_size v0.4.2
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling regex v1.5.5
[INFO] [stderr]    Compiling env_logger v0.8.4
[INFO] [stderr]    Compiling WondFS-fuse v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Filesystem`
[INFO] [stdout]  --> src/main.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use fuser::{Filesystem, MountOption};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::ecc`
[INFO] [stdout]  --> src/tl/check_center.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::util::ecc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/driver/disk_manager.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `#![no_std]` attribute can only be used at the crate root
[INFO] [stdout]  --> src/util/crc32.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![no_std]
[INFO] [stdout]   | ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn read(&mut self, dev: u8, address: u32) -> [u8; 4096] {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:56:29
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn write(&mut self, dev: u8, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:68:42
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]    |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:86:29
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn erase(&mut self, dev: u8, block_no: u32) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/fuse/fuse.rs:156:21
[INFO] [stdout]     |
[INFO] [stdout] 156 |         if let Some(mode) = _mode {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 156 |         if let Some(_mode) = _mode {
[INFO] [stdout]     |                     +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]     |
[INFO] [stdout] 156 -         if let Some(mode) = _mode {
[INFO] [stdout] 156 +         if let Some(core::super_stat::MAGICNUMBER) = _mode {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:683:29
[INFO] [stdout]     |
[INFO] [stdout] 683 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:696:29
[INFO] [stdout]     |
[INFO] [stdout] 696 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:701:29
[INFO] [stdout]     |
[INFO] [stdout] 701 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_no`
[INFO] [stdout]   --> src/driver/disk.rs:24:29
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn disk_read(&self, _block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 24 -     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout] 24 +     pub fn disk_read(&self, core::super_stat::MAGICNUMBER: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]   --> src/driver/disk.rs:34:34
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, _address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 34 -     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout] 34 +     pub fn disk_write(&mut self, core::super_stat::MAGICNUMBER: u32, data: [u8; 4096]) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/driver/disk.rs:34:48
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_no`
[INFO] [stdout]   --> src/driver/disk.rs:43:34
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn disk_erase(&mut self, _block_no: u32) {
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 43 -     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stdout] 43 +     pub fn disk_erase(&mut self, core::super_stat::MAGICNUMBER: u32) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `space` is never read
[INFO] [stdout]    --> src/compress/huffman.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |         let mut space = 0u8;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_disk_speed` is never used
[INFO] [stdout]   --> src/tl/tl.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl TranslationLayer {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_block_direct` is never used
[INFO] [stdout]    --> src/tl/tl.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl TranslationLayer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn write_block_direct(&mut self, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stdout]  --> src/tl/tl_helper.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const MAGIC_NUMBER_1: u32 = 0x2222ffff; // 标志坏块映射块
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stdout]  --> src/tl/tl_helper.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const MAGIC_NUMBER_2: u32 = 0x3333aaaa; // 标志校验存储块
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Used` and `Unused` are never constructed
[INFO] [stdout]   --> src/tl/tl_helper.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum BlockType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     Used,         // 被用作坏块映射
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 11 |     Unused,       // 未被使用的
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reverse` is never used
[INFO] [stdout]   --> src/tl/tl_helper.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn reverse(data: &array::Array1<[u8; 4096]>) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/gc/gc_event.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum GCEvent {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GCEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BackgroundSimple` and `BackgroundCold` are never constructed
[INFO] [stdout]  --> src/gc/gc_define.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum GCStrategy {
[INFO] [stdout]   |          ---------- variants in this enum
[INFO] [stdout] 6 |     Forward,          // 前台GC
[INFO] [stdout] 7 |     BackgroundSimple, // 后台标准GC
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     BackgroundCold,   // 后台回收冷块
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_page` is never used
[INFO] [stdout]   --> src/gc/gc_manager.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl GCManager {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_page(&self, address: u32) -> PageUsedStatus {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_block_info` is never used
[INFO] [stdout]   --> src/gc/block_table.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl BlockTable {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn set_block_info(&mut self, block_no: u32, info: BlockInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/gc/block_table.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct BlockInfo {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] 105 |     pub size: u32,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `capacity` is never read
[INFO] [stdout]   --> src/buf.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BufCache {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 11 |     pub capacity: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_block_driect` is never used
[INFO] [stdout]   --> src/buf.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl BufCache {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_disk_speed` is never used
[INFO] [stdout]   --> src/buf.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | impl BufCache {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 98 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `address` is never read
[INFO] [stdout]    --> src/buf.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct Buf {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] 142 |     address: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Buf` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_groups` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn get_groups(pid: u32) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `creation_gid` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn creation_gid(parent: &inode::InodeStat, gid: u32) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `creation_mode` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn creation_mode(mode: u32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_file_handle_read` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn check_file_handle_read(file_handle: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_file_handle_write` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn check_file_handle_write(file_handle: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_access` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn check_access(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stdout]  --> src/core/bit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER: u32 = 0x5555dddd;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/core/bit.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl BIT {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn get_bit_segment(&self, block_no: u32) -> BITSegement {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn set_bit_segment(&mut self, block_no: u32, segment: BITSegement) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn get_page(&self, address: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn get_last_erase_time(&self, block_no: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn set_last_erase_time(&mut self, block_no: u32, time: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_erase_count(&self, block_no: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn set_erase_count(&mut self, block_no: u32, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn get_average_age(&self, block_no: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn set_average_age(&mut self, block_no: u32, age: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn get_block(&self, block_no: u32) -> Option<[bool; 128]> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn set_block(&mut self, block_no: u32, status: [bool; 128]) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stdout]  --> src/core/pit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER_1: u32 = 0x7777dddd; // 标志PIT Region的存储方式为Map
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stdout]  --> src/core/pit.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAGIC_NUMBER_2: u32 = 0x7777eeee; // 标志PIT Region的存储方式为Serial
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stdout]  --> src/core/journal.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER: u32 = 0x7777ffff;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JournalType` is never used
[INFO] [stdout]   --> src/core/journal.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum JournalType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGICNUMBER` is never used
[INFO] [stdout]  --> src/core/super_stat.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MAGICNUMBER: u32 = 0x3bf7444d;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `magic_code`, `reserved_block_num`, and `page_size` are never read
[INFO] [stdout]   --> src/core/super_stat.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SuperStat {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 11 |     magic_code: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     reserved_block_num: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     page_size: u32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/core/super_stat.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SuperStat {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn build(&mut self, data: &array::Array1::<[u8; 4096]>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_bit_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn get_bit_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn get_pit_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn get_pit_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn get_journal_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_journal_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_kv_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_kv_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn get_main_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn get_reserved_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_page_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_inode` and `delete_inode` are never used
[INFO] [stdout]    --> src/core/core_manager.rs:95:12
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl CoreManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn update_inode(&mut self, inode: inode::Inode) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn delete_inode(&mut self, ino: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `background_gc` is never used
[INFO] [stdout]    --> src/core/core_manager.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl CoreManager {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn background_gc(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_last_erase_time`, `set_erase_count`, and `set_average_age` are never used
[INFO] [stdout]    --> src/core/core_manager.rs:317:12
[INFO] [stdout]     |
[INFO] [stdout] 248 | impl CoreManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn set_last_erase_time(&mut self, block_no: u32, time: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn set_erase_count(&mut self, block_no: u32, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn set_average_age(&mut self, block_no: u32, age: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `truncate_array_1_to_array_2` and `truncate_array_2_to_array_1` are never used
[INFO] [stdout]    --> src/core/core_manager.rs:845:12
[INFO] [stdout]     |
[INFO] [stdout] 746 | impl CoreManager {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 845 |     pub fn truncate_array_1_to_array_2(array: array::Array1<[u8; 4096]>) -> array::Array2::<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 859 |     pub fn truncate_array_2_to_array_1(array: array::Array2<u8>) -> array::Array1::<[u8; 4096]> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Digest` is never constructed
[INFO] [stdout]   --> src/util/crc32.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Digest<'a, W: Width> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `digest` and `digest_with_initial` are never used
[INFO] [stdout]   --> src/util/crc32.rs:69:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Crc<u32> {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub const fn digest(&self) -> Digest<u32> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<u32> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `finalize` are never used
[INFO] [stdout]   --> src/util/crc32.rs:85:14
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl<'a> Digest<'a, u32> {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 85 |     const fn new(crc: &'a Crc<u32>, value: u32) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn update(&mut self, bytes: &[u8]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub const fn finalize(self) -> u32 {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_by_index` and `set_by_index` are never used
[INFO] [stdout]   --> src/util/array.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl<T: Copy> Array1<T> {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn get_by_index(&self,index: u32) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn set_by_index(&mut self, index: u32, value: T) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Array2` is never constructed
[INFO] [stdout]   --> src/util/array.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct Array2<T> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/array.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl<T: Copy> Array2<T> {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  82 |     pub fn new(row: u32, column: u32) -> Array2<T> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn len(&self) -> u32 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn size(&self) -> [u32; 2] {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn init(&mut self, value: T) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get(&self, row: u32, column: u32) -> T {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn get_index(&self, index: u32) -> T {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn set(&mut self, row: u32, column: u32, value: T) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn set_index(&mut self, index: u32, value: T) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn iter(&self) -> Iter2<'_, T> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn dup(&self) -> Array2<T> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Iter2` is never constructed
[INFO] [stdout]    --> src/util/array.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct Iter2<'a, T> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/util/array.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | impl<'a, T: Copy> Iter2<'a, T> {
[INFO] [stdout]     | ------------------------------ associated function in this implementation
[INFO] [stdout] 139 |     fn new(array: &'a s_array::SArray<T>) -> Iter2<'a, T> {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_size` is never used
[INFO] [stdout]   --> src/util/s_array.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<T: Copy> SArray<T> {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_size(&self) -> Vec<u32> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_size` and `contains_key` are never used
[INFO] [stdout]   --> src/util/lru_cache.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl <T: Copy> LRUCache<T> {
[INFO] [stdout]    | -------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn get_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn contains_key(&self, key: u32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `List` is never constructed
[INFO] [stdout]  --> src/util/safe_linked_list.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct List<T> {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Link` is never used
[INFO] [stdout]  --> src/util/safe_linked_list.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | type Link<T> = Option<Rc<RefCell<Node<T>>>>;
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]   --> src/util/safe_linked_list.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | struct Node<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/util/safe_linked_list.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl<T> Node<T> {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 18 |     fn new(elem: T) -> Rc<RefCell<Self>> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/util/safe_linked_list.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl<T> List<T> {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  28 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn push_front(&mut self, elem: T) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn push_back(&mut self, elem: T) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn pop_front(&mut self) -> Option<T> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn pop_back(&mut self) -> Option<T> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn peek_front(&self) -> Option<Ref<T>> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn peek_back(&self) -> Option<Ref<T>> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn into_iter(self) -> IntoIter<T> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IntoIter` is never constructed
[INFO] [stdout]    --> src/util/safe_linked_list.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct IntoIter<T>(List<T>);
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `List` is never constructed
[INFO] [stdout]  --> src/util/unsafe_linked_list.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct List<T> {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Link` is never used
[INFO] [stdout]  --> src/util/unsafe_linked_list.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | type Link<T> = *mut Node<T>;
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Node` is never constructed
[INFO] [stdout]   --> src/util/unsafe_linked_list.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct Node<T> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IntoIter` is never constructed
[INFO] [stdout]   --> src/util/unsafe_linked_list.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct IntoIter<T>(List<T>);
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Iter` is never constructed
[INFO] [stdout]   --> src/util/unsafe_linked_list.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Iter<'a, T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IterMut` is never constructed
[INFO] [stdout]   --> src/util/unsafe_linked_list.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct IterMut<'a, T> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/util/unsafe_linked_list.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl <T> List<T> {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn push(&mut self, elem: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn pop(&mut self) -> Option<T> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn peek(&self) -> Option<&T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn peek_mut(&mut self) -> Option<&mut T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn into_iter(self) -> IntoIter<T> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn iter(&self) -> Iter<'_, T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn iter_mut(&mut self) -> IterMut<'_, T> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> src/inode/inode.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Inode {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub lock: Mutex<bool>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `debug` is never used
[INFO] [stdout]    --> src/inode/inode.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl Inode {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn debug(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `insert` and `dup` are never used
[INFO] [stdout]    --> src/inode/inode.rs:274:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Inode {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn insert(&mut self, offset: u32, len: u32, buf: &Vec<u8>) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub fn dup(&mut self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `capacity` are never read
[INFO] [stdout]   --> src/inode/inode_manager.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct InodeManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 15 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_size` and `get_capacity` are never used
[INFO] [stdout]   --> src/inode/inode_manager.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl InodeManager {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_size(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn get_capacity(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `i_dup` is never used
[INFO] [stdout]   --> src/inode/inode_manager.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl InodeManager {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn i_dup(&mut self, inode: &InodeLink) -> InodeLink {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/inode/inode_event.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum InodeEvent {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 62 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InodeEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `skip_elem` is never used
[INFO] [stdout]  --> src/common/path.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn skip_elem(path: String) -> Option<(String, String)> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `name_x` is never used
[INFO] [stdout]   --> src/common/path.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn name_x(i_manager: &mut inode_manager::InodeManager, path: String, name: &mut String, name_i_parent: bool) -> Option<inode_manager:...
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `name_i` is never used
[INFO] [stdout]   --> src/common/path.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn name_i(i_manager: &mut inode_manager::InodeManager, path: String) -> Option<inode_manager::InodeLink> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `name_i_parent` is never used
[INFO] [stdout]   --> src/common/path.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn name_i_parent(i_manager: &mut inode_manager::InodeManager, path: String, name: &mut String) -> Option<inode_manager::InodeLink> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileDescriptorType` is never used
[INFO] [stdout]  --> src/common/file.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum FileDescriptorType {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileType` is never used
[INFO] [stdout]   --> src/common/file.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum FileType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileStat` is never constructed
[INFO] [stdout]   --> src/common/file.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FileStat {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `File` is never constructed
[INFO] [stdout]   --> src/common/file.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct File {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `file_stat`, `file_read`, and `file_write` are never used
[INFO] [stdout]   --> src/common/file.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl File {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 37 |     // Get metadata about file f.
[INFO] [stdout] 38 |     pub fn file_stat(&self) -> Option<FileStat> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn file_read(&mut self, len: u32, buf: &mut Vec<u8>) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn file_write(&mut self, len: u32, buf: &Vec<u8>) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `transfer_inode_stat_to_stat`, and `transfer_stat_to_inode` are never used
[INFO] [stdout]    --> src/common/file.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl File {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout]  82 |     pub fn new() -> File {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn transfer_inode_stat_to_stat(inode_stat: inode::InodeStat) -> FileStat {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn transfer_stat_to_inode(stat: FileStat) -> inode::InodeStat {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileTable` is never constructed
[INFO] [stdout]  --> src/common/file_table.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct FileTable {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FileLink` is never used
[INFO] [stdout]   --> src/common/file_table.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub type FileLink = Arc<RefCell<file::File>>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `file_alloc`, `file_dup`, and `file_close` are never used
[INFO] [stdout]   --> src/common/file_table.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl FileTable {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new() -> FileTable {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn file_alloc(&mut self) -> Option<FileLink> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn file_dup(&mut self, link: &FileLink) -> FileLink {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn file_close(&mut self, link: FileLink) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snappy` is never constructed
[INFO] [stdout]  --> src/compress/snappy.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Snappy {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `modify_coefficient`, and `modify_efficiency` are never used
[INFO] [stdout]   --> src/compress/snappy.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Snappy {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn modify_coefficient(&mut self, coeffi: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn modify_efficiency(&mut self, effi: u128) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `RefHuffmanTree` is never used
[INFO] [stdout]  --> src/compress/huffman.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | type RefHuffmanTree = Rc<RefCell<HuffmanTree>>;
[INFO] [stdout]   |      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Weight` is never used
[INFO] [stdout]   --> src/compress/huffman.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | type Weight = u32;
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HuffmanTree` is never constructed
[INFO] [stdout]   --> src/compress/huffman.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct HuffmanTree {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `build`, and `find_min` are never used
[INFO] [stdout]   --> src/compress/huffman.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl HuffmanTree {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] 21 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn build(char_weight: CharWeightMap) -> RefHuffmanTree {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     fn find_min(tree_slice: &[Rc<RefCell<HuffmanTree>>]) -> Option<Rc<RefCell<HuffmanTree>>> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CharWeightMap` is never constructed
[INFO] [stdout]   --> src/compress/huffman.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct CharWeightMap {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `build`, `len`, and `iter` are never used
[INFO] [stdout]   --> src/compress/huffman.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl CharWeightMap {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 78 |     pub fn build() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 97 |     pub fn iter(&self) -> Iter<char, Weight> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HuffmanBinaryMap` is never constructed
[INFO] [stdout]    --> src/compress/huffman.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct HuffmanBinaryMap {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `build` and `tree_dfs` are never used
[INFO] [stdout]    --> src/compress/huffman.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HuffmanBinaryMap {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 107 |     pub fn build(huffman_tree: RefHuffmanTree) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     fn tree_dfs(
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HuffmanCodec` is never constructed
[INFO] [stdout]    --> src/compress/huffman.rs:147:12
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct HuffmanCodec {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `modify_coefficient`, and `modify_efficiency` are never used
[INFO] [stdout]    --> src/compress/huffman.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl HuffmanCodec {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 155 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn modify_coefficient(&mut self, coeffi: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn modify_efficiency(&mut self, effi: u128) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DecodeConfig` is never constructed
[INFO] [stdout]    --> src/compress/huffman.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub struct DecodeConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `build` and `get` are never used
[INFO] [stdout]    --> src/compress/huffman.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 243 | impl DecodeConfig {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 244 |     pub fn build(source: &String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn get(&self, k: &String) -> Option<&char> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CompressType` is never used
[INFO] [stdout]  --> src/compress/compress.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum CompressType {
[INFO] [stdout]   |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Compress` is never used
[INFO] [stdout]   --> src/compress/compress.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait Compress {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompressManager` is never constructed
[INFO] [stdout]   --> src/compress/compress.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct CompressManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/compress/compress.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl CompressManager {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  24 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn encode(&mut self, bytes: &[u8]) -> (Vec<u8>, CompressType) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn encode_with_type(&mut self, bytes: &[u8], compress_type: CompressType) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn decode(&mut self, bytes: &[u8], compress_type: CompressType) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn choose_compress_type_except(&self, except: &Vec<CompressType>) -> CompressType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn get_compress_type_score(&self, compress_type: CompressType) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn judge_encode_effect(o_data: &[u8], data: &Vec<u8>, compress_type: CompressType) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_size` is never used
[INFO] [stdout]   --> src/write_buf.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WriteCache {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_size(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/write_buf.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl WriteBuf {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 134 |     fn new(address: u32, data: [u8; 4096]) -> WriteBuf {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/tl/tl.rs:430:18
[INFO] [stdout]     |
[INFO] [stdout] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/tl/tl.rs:474:18
[INFO] [stdout]     |
[INFO] [stdout] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion<'_> {
[INFO] [stdout]     |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/bit.rs:268:22
[INFO] [stdout]     |
[INFO] [stdout] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/pit.rs:197:22
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/journal.rs:128:22
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/crc32.rs:69:25
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn digest(&self) -> Digest<u32> {
[INFO] [stdout]    |                         ^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn digest(&self) -> Digest<'_, u32> {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/crc32.rs:78:38
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<u32> {
[INFO] [stdout]    |                                      ^^^^^                   ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                      |
[INFO] [stdout]    |                                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<'_, u32> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/lru_cache.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<T>> {
[INFO] [stdout]    |                ^^^^^^^^^                      ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<'_, T>> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/safe_linked_list.rs:95:23
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn peek_front(&self) -> Option<Ref<T>> {
[INFO] [stdout]    |                       ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn peek_front(&self) -> Option<Ref<'_, T>> {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn peek_back(&self) -> Option<Ref<T>> {
[INFO] [stdout]     |                      ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn peek_back(&self) -> Option<Ref<'_, T>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:107:27
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |                           ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:113:26
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |                          ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(let_underscore_lock)]` (part of `#[warn(let_underscore)]`) on by default
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 55 -         let _ = self.lock.lock();
[INFO] [stdout] 55 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 76 -         let _ = self.lock.lock();
[INFO] [stdout] 76 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 99 -         let _ = self.lock.lock();
[INFO] [stdout] 99 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]    --> src/inode/inode_manager.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let _ = self.lock.lock();
[INFO] [stdout]     |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let _unused = self.lock.lock();
[INFO] [stdout]     |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 108 -         let _ = self.lock.lock();
[INFO] [stdout] 108 +         drop(self.lock.lock());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 32 -         let _ = self.lock.lock();
[INFO] [stdout] 32 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 44 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 44 -         let _ = self.lock.lock();
[INFO] [stdout] 44 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 51 -         let _ = self.lock.lock();
[INFO] [stdout] 51 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/compress/huffman.rs:97:17
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn iter(&self) -> Iter<char, Weight> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn iter(&self) -> Iter<'_, char, Weight> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.72s
[INFO] running `Command { std: "docker" "inspect" "b9f7eae0c7f726aec843d44cb3101a015960fa4351e68d2a9b966308d688db8d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b9f7eae0c7f726aec843d44cb3101a015960fa4351e68d2a9b966308d688db8d", kill_on_drop: false }`
[INFO] [stdout] b9f7eae0c7f726aec843d44cb3101a015960fa4351e68d2a9b966308d688db8d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 291046613c74115be722088d5c1d5480015ce84c1f999d8064d5f9fb8a4ca686
[INFO] running `Command { std: "docker" "start" "-a" "291046613c74115be722088d5c1d5480015ce84c1f999d8064d5f9fb8a4ca686", kill_on_drop: false }`
[INFO] [stderr]    Compiling WondFS-fuse v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Filesystem`
[INFO] [stdout]  --> src/main.rs:2:13
[INFO] [stdout]   |
[INFO] [stdout] 2 | use fuser::{Filesystem, MountOption};
[INFO] [stdout]   |             ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::ecc`
[INFO] [stdout]  --> src/tl/check_center.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::util::ecc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the `#![no_std]` attribute can only be used at the crate root
[INFO] [stdout]  --> src/util/crc32.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![no_std]
[INFO] [stdout]   | ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn read(&mut self, dev: u8, address: u32) -> [u8; 4096] {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:56:29
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn write(&mut self, dev: u8, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:68:42
[INFO] [stdout]    |
[INFO] [stdout] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]    |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dev`
[INFO] [stdout]   --> src/buf.rs:86:29
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn erase(&mut self, dev: u8, block_no: u32) {
[INFO] [stdout]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/fuse/fuse.rs:156:21
[INFO] [stdout]     |
[INFO] [stdout] 156 |         if let Some(mode) = _mode {
[INFO] [stdout]     |                     ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 156 |         if let Some(_mode) = _mode {
[INFO] [stdout]     |                     +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]     |
[INFO] [stdout] 156 -         if let Some(mode) = _mode {
[INFO] [stdout] 156 +         if let Some(core::super_stat::MAGICNUMBER) = _mode {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:683:29
[INFO] [stdout]     |
[INFO] [stdout] 683 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:696:29
[INFO] [stdout]     |
[INFO] [stdout] 696 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/core/core_manager.rs:701:29
[INFO] [stdout]     |
[INFO] [stdout] 701 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_no`
[INFO] [stdout]   --> src/driver/disk.rs:24:29
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn disk_read(&self, _block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 24 -     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout] 24 +     pub fn disk_read(&self, core::super_stat::MAGICNUMBER: u32) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]   --> src/driver/disk.rs:34:34
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, _address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 34 -     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout] 34 +     pub fn disk_write(&mut self, core::super_stat::MAGICNUMBER: u32, data: [u8; 4096]) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> src/driver/disk.rs:34:48
[INFO] [stdout]    |
[INFO] [stdout] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stdout]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_no`
[INFO] [stdout]   --> src/driver/disk.rs:43:34
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 43 |     pub fn disk_erase(&mut self, _block_no: u32) {
[INFO] [stdout]    |                                  +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stdout]    |
[INFO] [stdout] 43 -     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stdout] 43 +     pub fn disk_erase(&mut self, core::super_stat::MAGICNUMBER: u32) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `space` is never read
[INFO] [stdout]    --> src/compress/huffman.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |         let mut space = 0u8;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_disk_speed` is never used
[INFO] [stdout]   --> src/tl/tl.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl TranslationLayer {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_block_direct` is never used
[INFO] [stdout]    --> src/tl/tl.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl TranslationLayer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn write_block_direct(&mut self, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stdout]  --> src/tl/tl_helper.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const MAGIC_NUMBER_1: u32 = 0x2222ffff; // 标志坏块映射块
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stdout]  --> src/tl/tl_helper.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const MAGIC_NUMBER_2: u32 = 0x3333aaaa; // 标志校验存储块
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Used` and `Unused` are never constructed
[INFO] [stdout]   --> src/tl/tl_helper.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub enum BlockType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     Used,         // 被用作坏块映射
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 11 |     Unused,       // 未被使用的
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reverse` is never used
[INFO] [stdout]   --> src/tl/tl_helper.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn reverse(data: &array::Array1<[u8; 4096]>) -> [[u8; 4096]; 128] {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/gc/gc_event.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum GCEvent {
[INFO] [stdout]    |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 19 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GCEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `BackgroundSimple` and `BackgroundCold` are never constructed
[INFO] [stdout]  --> src/gc/gc_define.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum GCStrategy {
[INFO] [stdout]   |          ---------- variants in this enum
[INFO] [stdout] 6 |     Forward,          // 前台GC
[INFO] [stdout] 7 |     BackgroundSimple, // 后台标准GC
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 8 |     BackgroundCold,   // 后台回收冷块
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_block_info` is never used
[INFO] [stdout]   --> src/gc/block_table.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl BlockTable {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn set_block_info(&mut self, block_no: u32, info: BlockInfo) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/gc/block_table.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub struct BlockInfo {
[INFO] [stdout]     |            --------- field in this struct
[INFO] [stdout] 105 |     pub size: u32,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `capacity` is never read
[INFO] [stdout]   --> src/buf.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BufCache {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 11 |     pub capacity: usize,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_block_driect` is never used
[INFO] [stdout]   --> src/buf.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl BufCache {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_disk_speed` is never used
[INFO] [stdout]   --> src/buf.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 97 | impl BufCache {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 98 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `address` is never read
[INFO] [stdout]    --> src/buf.rs:142:5
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub struct Buf {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] 142 |     address: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Buf` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_groups` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn get_groups(pid: u32) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `creation_gid` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn creation_gid(parent: &inode::InodeStat, gid: u32) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `creation_mode` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn creation_mode(mode: u32) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_file_handle_read` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn check_file_handle_read(file_handle: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_file_handle_write` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn check_file_handle_write(file_handle: u64) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_access` is never used
[INFO] [stdout]   --> src/fuse/permission.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn check_access(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stdout]  --> src/core/bit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER: u32 = 0x5555dddd;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_bit_segment` and `set_bit_segment` are never used
[INFO] [stdout]   --> src/core/bit.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl BIT {
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_bit_segment(&self, block_no: u32) -> BITSegement {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn set_bit_segment(&mut self, block_no: u32, segment: BITSegement) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stdout]  --> src/core/pit.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER_1: u32 = 0x7777dddd; // 标志PIT Region的存储方式为Map
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stdout]  --> src/core/pit.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MAGIC_NUMBER_2: u32 = 0x7777eeee; // 标志PIT Region的存储方式为Serial
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stdout]  --> src/core/journal.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAGIC_NUMBER: u32 = 0x7777ffff;
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `JournalType` is never used
[INFO] [stdout]   --> src/core/journal.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub enum JournalType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGICNUMBER` is never used
[INFO] [stdout]  --> src/core/super_stat.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const MAGICNUMBER: u32 = 0x3bf7444d;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `magic_code`, `reserved_block_num`, and `page_size` are never read
[INFO] [stdout]   --> src/core/super_stat.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct SuperStat {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 11 |     magic_code: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     reserved_block_num: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     page_size: u32,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/core/super_stat.rs:42:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl SuperStat {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn build(&mut self, data: &array::Array1::<[u8; 4096]>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_bit_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn get_bit_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn get_pit_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn get_pit_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn get_journal_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn get_journal_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_kv_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_kv_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn get_main_offset(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn get_reserved_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_page_size(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `background_gc` is never used
[INFO] [stdout]    --> src/core/core_manager.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl CoreManager {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn background_gc(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_by_index` and `set_by_index` are never used
[INFO] [stdout]   --> src/util/array.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl<T: Copy> Array1<T> {
[INFO] [stdout]    | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn get_by_index(&self,index: u32) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn set_by_index(&mut self, index: u32, value: T) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_size` and `contains_key` are never used
[INFO] [stdout]   --> src/util/lru_cache.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl <T: Copy> LRUCache<T> {
[INFO] [stdout]    | -------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn get_size(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn contains_key(&self, key: u32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `lock` is never read
[INFO] [stdout]   --> src/inode/inode.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct Inode {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub lock: Mutex<bool>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `debug` is never used
[INFO] [stdout]    --> src/inode/inode.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  62 | impl Inode {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn debug(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dup` is never used
[INFO] [stdout]    --> src/inode/inode.rs:517:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | impl Inode {
[INFO] [stdout]     | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 517 |     pub fn dup(&mut self) -> bool {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `size` and `capacity` are never read
[INFO] [stdout]   --> src/inode/inode_manager.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct InodeManager {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 15 |     size: usize,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 16 |     capacity: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_size` and `get_capacity` are never used
[INFO] [stdout]   --> src/inode/inode_manager.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl InodeManager {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_size(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn get_capacity(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `None` is never constructed
[INFO] [stdout]   --> src/inode/inode_event.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum InodeEvent {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 62 |     None,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InodeEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `name_i` is never used
[INFO] [stdout]   --> src/common/path.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn name_i(i_manager: &mut inode_manager::InodeManager, path: String) -> Option<inode_manager::InodeLink> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `name_i_parent` is never used
[INFO] [stdout]   --> src/common/path.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn name_i_parent(i_manager: &mut inode_manager::InodeManager, path: String, name: &mut String) -> Option<inode_manager::InodeLink> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PIPE`, `INODE`, and `DEVICE` are never constructed
[INFO] [stdout]   --> src/common/file.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum FileDescriptorType {
[INFO] [stdout]    |          ------------------ variants in this enum
[INFO] [stdout]  7 |     NONE,
[INFO] [stdout]  8 |     PIPE,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]  9 |     INODE,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 10 |     DEVICE,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileType` is never used
[INFO] [stdout]   --> src/common/file.rs:13:10
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub enum FileType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileStat` is never constructed
[INFO] [stdout]   --> src/common/file.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct FileStat {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `off`, `read_able`, and `writeable` are never read
[INFO] [stdout]   --> src/common/file.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct File {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 28 |     pub off: u32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 29 |     pub ref_cnt: u8,
[INFO] [stdout] 30 |     pub read_able: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 31 |     pub writeable: u8,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `file_stat`, `file_read`, and `file_write` are never used
[INFO] [stdout]   --> src/common/file.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl File {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 37 |     // Get metadata about file f.
[INFO] [stdout] 38 |     pub fn file_stat(&self) -> Option<FileStat> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn file_read(&mut self, len: u32, buf: &mut Vec<u8>) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn file_write(&mut self, len: u32, buf: &Vec<u8>) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `transfer_inode_stat_to_stat` and `transfer_stat_to_inode` are never used
[INFO] [stdout]    --> src/common/file.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl File {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn transfer_inode_stat_to_stat(inode_stat: inode::InodeStat) -> FileStat {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn transfer_stat_to_inode(stat: FileStat) -> inode::InodeStat {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_num` is never read
[INFO] [stdout]   --> src/common/file_table.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct FileTable {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub max_num: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `effect_huffman` and `effect_snappy` are never read
[INFO] [stdout]   --> src/compress/compress.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct CompressManager {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 17 |     pub effect_huffman: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub effect_snappy: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `encode_with_type` and `get_compress_type_score` are never used
[INFO] [stdout]   --> src/compress/compress.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl CompressManager {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn encode_with_type(&mut self, bytes: &[u8], compress_type: CompressType) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn get_compress_type_score(&self, compress_type: CompressType) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_size` is never used
[INFO] [stdout]   --> src/write_buf.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WriteCache {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_size(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/write_buf.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl WriteBuf {
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] 134 |     fn new(address: u32, data: [u8; 4096]) -> WriteBuf {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/tl/tl.rs:430:18
[INFO] [stdout]     |
[INFO] [stdout] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/tl/tl.rs:474:18
[INFO] [stdout]     |
[INFO] [stdout] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion<'_> {
[INFO] [stdout]     |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/bit.rs:268:22
[INFO] [stdout]     |
[INFO] [stdout] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/pit.rs:197:22
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/core/journal.rs:128:22
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion {
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion<'_> {
[INFO] [stdout]     |                                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/crc32.rs:69:25
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn digest(&self) -> Digest<u32> {
[INFO] [stdout]    |                         ^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 69 |     pub const fn digest(&self) -> Digest<'_, u32> {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/crc32.rs:78:38
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<u32> {
[INFO] [stdout]    |                                      ^^^^^                   ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                      |
[INFO] [stdout]    |                                      the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<'_, u32> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/lru_cache.rs:58:16
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<T>> {
[INFO] [stdout]    |                ^^^^^^^^^                      ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                |
[INFO] [stdout]    |                the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<'_, T>> {
[INFO] [stdout]    |                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/util/safe_linked_list.rs:95:23
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn peek_front(&self) -> Option<Ref<T>> {
[INFO] [stdout]    |                       ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 95 |     pub fn peek_front(&self) -> Option<Ref<'_, T>> {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:101:22
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn peek_back(&self) -> Option<Ref<T>> {
[INFO] [stdout]     |                      ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn peek_back(&self) -> Option<Ref<'_, T>> {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:107:27
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |                           ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/util/safe_linked_list.rs:113:26
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stdout]     |                          ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:55:13
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(let_underscore_lock)]` (part of `#[warn(let_underscore)]`) on by default
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 55 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 55 -         let _ = self.lock.lock();
[INFO] [stdout] 55 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 76 -         let _ = self.lock.lock();
[INFO] [stdout] 76 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/inode/inode_manager.rs:99:13
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 99 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 99 -         let _ = self.lock.lock();
[INFO] [stdout] 99 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]    --> src/inode/inode_manager.rs:108:13
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let _ = self.lock.lock();
[INFO] [stdout]     |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]     |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 108 |         let _unused = self.lock.lock();
[INFO] [stdout]     |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]     |
[INFO] [stdout] 108 -         let _ = self.lock.lock();
[INFO] [stdout] 108 +         drop(self.lock.lock());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 32 -         let _ = self.lock.lock();
[INFO] [stdout] 32 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 44 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 44 -         let _ = self.lock.lock();
[INFO] [stdout] 44 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: non-binding let on a synchronization lock
[INFO] [stdout]   --> src/common/file_table.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let _ = self.lock.lock();
[INFO] [stdout]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stdout]    |
[INFO] [stdout] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let _unused = self.lock.lock();
[INFO] [stdout]    |              ++++++
[INFO] [stdout] help: consider immediately dropping the value
[INFO] [stdout]    |
[INFO] [stdout] 51 -         let _ = self.lock.lock();
[INFO] [stdout] 51 +         drop(self.lock.lock());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/compress/huffman.rs:97:17
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn iter(&self) -> Iter<char, Weight> {
[INFO] [stdout]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 97 |     pub fn iter(&self) -> Iter<'_, char, Weight> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.48s
[INFO] running `Command { std: "docker" "inspect" "291046613c74115be722088d5c1d5480015ce84c1f999d8064d5f9fb8a4ca686", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "291046613c74115be722088d5c1d5480015ce84c1f999d8064d5f9fb8a4ca686", kill_on_drop: false }`
[INFO] [stdout] 291046613c74115be722088d5c1d5480015ce84c1f999d8064d5f9fb8a4ca686
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 8f1c21f268e49184150a27f46643030e438188ca823b8e6e43b131ba40392a38
[INFO] running `Command { std: "docker" "start" "-a" "8f1c21f268e49184150a27f46643030e438188ca823b8e6e43b131ba40392a38", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `Filesystem`
[INFO] [stderr]  --> src/main.rs:2:13
[INFO] [stderr]   |
[INFO] [stderr] 2 | use fuser::{Filesystem, MountOption};
[INFO] [stderr]   |             ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::util::ecc`
[INFO] [stderr]  --> src/tl/check_center.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::util::ecc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: the `#![no_std]` attribute can only be used at the crate root
[INFO] [stderr]  --> src/util/crc32.rs:1:1
[INFO] [stderr]   |
[INFO] [stderr] 1 | #![no_std]
[INFO] [stderr]   | ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_attributes)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dev`
[INFO] [stderr]   --> src/buf.rs:36:28
[INFO] [stderr]    |
[INFO] [stderr] 36 |     pub fn read(&mut self, dev: u8, address: u32) -> [u8; 4096] {
[INFO] [stderr]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dev`
[INFO] [stderr]   --> src/buf.rs:56:29
[INFO] [stderr]    |
[INFO] [stderr] 56 |     pub fn write(&mut self, dev: u8, address: u32, data: [u8; 4096]) {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dev`
[INFO] [stderr]   --> src/buf.rs:68:42
[INFO] [stderr]    |
[INFO] [stderr] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stderr]    |                                          ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dev`
[INFO] [stderr]   --> src/buf.rs:86:29
[INFO] [stderr]    |
[INFO] [stderr] 86 |     pub fn erase(&mut self, dev: u8, block_no: u32) {
[INFO] [stderr]    |                             ^^^ help: if this is intentional, prefix it with an underscore: `_dev`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `mode`
[INFO] [stderr]    --> src/fuse/fuse.rs:156:21
[INFO] [stderr]     |
[INFO] [stderr] 156 |         if let Some(mode) = _mode {
[INFO] [stderr]     |                     ^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 156 |         if let Some(_mode) = _mode {
[INFO] [stderr]     |                     +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stderr]     |
[INFO] [stderr] 156 -         if let Some(mode) = _mode {
[INFO] [stderr] 156 +         if let Some(core::super_stat::MAGICNUMBER) = _mode {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/core/core_manager.rs:683:29
[INFO] [stderr]     |
[INFO] [stderr] 683 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stderr]     |                             ----^^^^^
[INFO] [stderr]     |                             |
[INFO] [stderr]     |                             help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/core/core_manager.rs:696:29
[INFO] [stderr]     |
[INFO] [stderr] 696 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stderr]     |                             ----^^^^^
[INFO] [stderr]     |                             |
[INFO] [stderr]     |                             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/core/core_manager.rs:701:29
[INFO] [stderr]     |
[INFO] [stderr] 701 |                         let mut entry = inode.data.get_mut(event.index as usize).unwrap();
[INFO] [stderr]     |                             ----^^^^^
[INFO] [stderr]     |                             |
[INFO] [stderr]     |                             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `block_no`
[INFO] [stderr]   --> src/driver/disk.rs:24:29
[INFO] [stderr]    |
[INFO] [stderr] 24 |     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stderr]    |                             ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 24 |     pub fn disk_read(&self, _block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stderr]    |                             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stderr]    |
[INFO] [stderr] 24 -     pub fn disk_read(&self, block_no: u32) -> [[u8; 4096]; 128] {
[INFO] [stderr] 24 +     pub fn disk_read(&self, core::super_stat::MAGICNUMBER: u32) -> [[u8; 4096]; 128] {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `address`
[INFO] [stderr]   --> src/driver/disk.rs:34:34
[INFO] [stderr]    |
[INFO] [stderr] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stderr]    |                                  ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 34 |     pub fn disk_write(&mut self, _address: u32, data: [u8; 4096]) {
[INFO] [stderr]    |                                  +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stderr]    |
[INFO] [stderr] 34 -     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stderr] 34 +     pub fn disk_write(&mut self, core::super_stat::MAGICNUMBER: u32, data: [u8; 4096]) {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `data`
[INFO] [stderr]   --> src/driver/disk.rs:34:48
[INFO] [stderr]    |
[INFO] [stderr] 34 |     pub fn disk_write(&mut self, address: u32, data: [u8; 4096]) {
[INFO] [stderr]    |                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `block_no`
[INFO] [stderr]   --> src/driver/disk.rs:43:34
[INFO] [stderr]    |
[INFO] [stderr] 43 |     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stderr]    |                                  ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 43 |     pub fn disk_erase(&mut self, _block_no: u32) {
[INFO] [stderr]    |                                  +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MAGICNUMBER`
[INFO] [stderr]    |
[INFO] [stderr] 43 -     pub fn disk_erase(&mut self, block_no: u32) {
[INFO] [stderr] 43 +     pub fn disk_erase(&mut self, core::super_stat::MAGICNUMBER: u32) {
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `space` is never read
[INFO] [stderr]    --> src/compress/huffman.rs:224:17
[INFO] [stderr]     |
[INFO] [stderr] 224 |         let mut space = 0u8;
[INFO] [stderr]     |                 ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_disk_speed` is never used
[INFO] [stderr]   --> src/tl/tl.rs:63:12
[INFO] [stderr]    |
[INFO] [stderr] 34 | impl TranslationLayer {
[INFO] [stderr]    | --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `write_block_direct` is never used
[INFO] [stderr]    --> src/tl/tl.rs:153:12
[INFO] [stderr]     |
[INFO] [stderr]  81 | impl TranslationLayer {
[INFO] [stderr]     | --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 153 |     pub fn write_block_direct(&mut self, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stderr]  --> src/tl/tl_helper.rs:3:7
[INFO] [stderr]   |
[INFO] [stderr] 3 | const MAGIC_NUMBER_1: u32 = 0x2222ffff; // 标志坏块映射块
[INFO] [stderr]   |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stderr]  --> src/tl/tl_helper.rs:4:7
[INFO] [stderr]   |
[INFO] [stderr] 4 | const MAGIC_NUMBER_2: u32 = 0x3333aaaa; // 标志校验存储块
[INFO] [stderr]   |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `Used` and `Unused` are never constructed
[INFO] [stderr]   --> src/tl/tl_helper.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub enum BlockType {
[INFO] [stderr]    |          --------- variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 10 |     Used,         // 被用作坏块映射
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 11 |     Unused,       // 未被使用的
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `reverse` is never used
[INFO] [stderr]   --> src/tl/tl_helper.rs:49:8
[INFO] [stderr]    |
[INFO] [stderr] 49 | pub fn reverse(data: &array::Array1<[u8; 4096]>) -> [[u8; 4096]; 128] {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `None` is never constructed
[INFO] [stderr]   --> src/gc/gc_event.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub enum GCEvent {
[INFO] [stderr]    |          ------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 19 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `GCEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: variants `BackgroundSimple` and `BackgroundCold` are never constructed
[INFO] [stderr]  --> src/gc/gc_define.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub enum GCStrategy {
[INFO] [stderr]   |          ---------- variants in this enum
[INFO] [stderr] 6 |     Forward,          // 前台GC
[INFO] [stderr] 7 |     BackgroundSimple, // 后台标准GC
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 8 |     BackgroundCold,   // 后台回收冷块
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `set_block_info` is never used
[INFO] [stderr]   --> src/gc/block_table.rs:54:12
[INFO] [stderr]    |
[INFO] [stderr] 46 | impl BlockTable {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 54 |     pub fn set_block_info(&mut self, block_no: u32, info: BlockInfo) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `size` is never read
[INFO] [stderr]    --> src/gc/block_table.rs:105:9
[INFO] [stderr]     |
[INFO] [stderr] 104 | pub struct BlockInfo {
[INFO] [stderr]     |            --------- field in this struct
[INFO] [stderr] 105 |     pub size: u32,
[INFO] [stderr]     |         ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `capacity` is never read
[INFO] [stderr]   --> src/buf.rs:11:9
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct BufCache {
[INFO] [stderr]    |            -------- field in this struct
[INFO] [stderr] 11 |     pub capacity: usize,
[INFO] [stderr]    |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `write_block_driect` is never used
[INFO] [stderr]   --> src/buf.rs:68:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | impl BufCache {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 68 |     pub fn write_block_driect(&mut self, dev: u8, block_no: u32, data: array::Array1::<[u8; 4096]>) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_disk_speed` is never used
[INFO] [stderr]   --> src/buf.rs:98:12
[INFO] [stderr]    |
[INFO] [stderr] 97 | impl BufCache {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] 98 |     pub fn get_disk_speed(&self) -> (u32, u32) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `address` is never read
[INFO] [stderr]    --> src/buf.rs:142:5
[INFO] [stderr]     |
[INFO] [stderr] 141 | pub struct Buf {
[INFO] [stderr]     |            --- field in this struct
[INFO] [stderr] 142 |     address: u32,
[INFO] [stderr]     |     ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Buf` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_groups` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:19:8
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub fn get_groups(pid: u32) -> Vec<u32> {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `creation_gid` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:37:8
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub fn creation_gid(parent: &inode::InodeStat, gid: u32) -> u32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `creation_mode` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:44:8
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub fn creation_mode(mode: u32) -> u16 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_file_handle_read` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:48:8
[INFO] [stderr]    |
[INFO] [stderr] 48 | pub fn check_file_handle_read(file_handle: u64) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_file_handle_write` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:52:8
[INFO] [stderr]    |
[INFO] [stderr] 52 | pub fn check_file_handle_write(file_handle: u64) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `check_access` is never used
[INFO] [stderr]   --> src/fuse/permission.rs:56:8
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub fn check_access(
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stderr]  --> src/core/bit.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const MAGIC_NUMBER: u32 = 0x5555dddd;
[INFO] [stderr]   |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_bit_segment` and `set_bit_segment` are never used
[INFO] [stderr]   --> src/core/bit.rs:51:12
[INFO] [stderr]    |
[INFO] [stderr] 35 | impl BIT {
[INFO] [stderr]    | -------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn get_bit_segment(&self, block_no: u32) -> BITSegement {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 58 |     pub fn set_bit_segment(&mut self, block_no: u32, segment: BITSegement) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER_1` is never used
[INFO] [stderr]  --> src/core/pit.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const MAGIC_NUMBER_1: u32 = 0x7777dddd; // 标志PIT Region的存储方式为Map
[INFO] [stderr]   |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER_2` is never used
[INFO] [stderr]  --> src/core/pit.rs:9:7
[INFO] [stderr]   |
[INFO] [stderr] 9 | const MAGIC_NUMBER_2: u32 = 0x7777eeee; // 标志PIT Region的存储方式为Serial
[INFO] [stderr]   |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGIC_NUMBER` is never used
[INFO] [stderr]  --> src/core/journal.rs:8:7
[INFO] [stderr]   |
[INFO] [stderr] 8 | const MAGIC_NUMBER: u32 = 0x7777ffff;
[INFO] [stderr]   |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `JournalType` is never used
[INFO] [stderr]   --> src/core/journal.rs:11:10
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub enum JournalType {
[INFO] [stderr]    |          ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAGICNUMBER` is never used
[INFO] [stderr]  --> src/core/super_stat.rs:7:7
[INFO] [stderr]   |
[INFO] [stderr] 7 | const MAGICNUMBER: u32 = 0x3bf7444d;
[INFO] [stderr]   |       ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `magic_code`, `reserved_block_num`, and `page_size` are never read
[INFO] [stderr]   --> src/core/super_stat.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub struct SuperStat {
[INFO] [stderr]    |            --------- fields in this struct
[INFO] [stderr] 11 |     magic_code: u32,
[INFO] [stderr]    |     ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 19 |     reserved_block_num: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 20 |     page_size: u32,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/core/super_stat.rs:42:12
[INFO] [stderr]     |
[INFO] [stderr]  25 | impl SuperStat {
[INFO] [stderr]     | -------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  42 |     pub fn build(&mut self, data: &array::Array1::<[u8; 4096]>) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 115 |     pub fn get_bit_offset(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub fn get_bit_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 123 |     pub fn get_pit_offset(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 127 |     pub fn get_pit_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 131 |     pub fn get_journal_offset(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 135 |     pub fn get_journal_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 139 |     pub fn get_kv_offset(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 143 |     pub fn get_kv_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 147 |     pub fn get_main_offset(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 160 |     pub fn get_reserved_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 164 |     pub fn get_page_size(&self) -> u32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `background_gc` is never used
[INFO] [stderr]    --> src/core/core_manager.rs:151:12
[INFO] [stderr]     |
[INFO] [stderr] 133 | impl CoreManager {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 151 |     pub fn background_gc(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_by_index` and `set_by_index` are never used
[INFO] [stderr]   --> src/util/array.rs:27:12
[INFO] [stderr]    |
[INFO] [stderr]  8 | impl<T: Copy> Array1<T> {
[INFO] [stderr]    | ----------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 27 |     pub fn get_by_index(&self,index: u32) -> T {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 35 |     pub fn set_by_index(&mut self, index: u32, value: T) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_size` and `contains_key` are never used
[INFO] [stderr]   --> src/util/lru_cache.rs:50:12
[INFO] [stderr]    |
[INFO] [stderr] 39 | impl <T: Copy> LRUCache<T> {
[INFO] [stderr]    | -------------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 50 |     pub fn get_size(&self) -> usize {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 54 |     pub fn contains_key(&self, key: u32) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `lock` is never read
[INFO] [stderr]   --> src/inode/inode.rs:56:9
[INFO] [stderr]    |
[INFO] [stderr] 44 | pub struct Inode {
[INFO] [stderr]    |            ----- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub lock: Mutex<bool>,
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `debug` is never used
[INFO] [stderr]    --> src/inode/inode.rs:101:12
[INFO] [stderr]     |
[INFO] [stderr]  62 | impl Inode {
[INFO] [stderr]     | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub fn debug(&self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `dup` is never used
[INFO] [stderr]    --> src/inode/inode.rs:517:12
[INFO] [stderr]     |
[INFO] [stderr] 110 | impl Inode {
[INFO] [stderr]     | ---------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 517 |     pub fn dup(&mut self) -> bool {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `size` and `capacity` are never read
[INFO] [stderr]   --> src/inode/inode_manager.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub struct InodeManager {
[INFO] [stderr]    |            ------------ fields in this struct
[INFO] [stderr] 15 |     size: usize,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 16 |     capacity: usize,
[INFO] [stderr]    |     ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `get_size` and `get_capacity` are never used
[INFO] [stderr]   --> src/inode/inode_manager.rs:39:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl InodeManager {
[INFO] [stderr]    | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn get_size(&self) -> u32 {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 43 |     pub fn get_capacity(&self) -> u32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant `None` is never constructed
[INFO] [stderr]   --> src/inode/inode_event.rs:62:5
[INFO] [stderr]    |
[INFO] [stderr] 56 | pub enum InodeEvent {
[INFO] [stderr]    |          ---------- variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 62 |     None,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `InodeEvent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `name_i` is never used
[INFO] [stderr]   --> src/common/path.rs:79:8
[INFO] [stderr]    |
[INFO] [stderr] 79 | pub fn name_i(i_manager: &mut inode_manager::InodeManager, path: String) -> Option<inode_manager::InodeLink> {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `name_i_parent` is never used
[INFO] [stderr]   --> src/common/path.rs:84:8
[INFO] [stderr]    |
[INFO] [stderr] 84 | pub fn name_i_parent(i_manager: &mut inode_manager::InodeManager, path: String, name: &mut String) -> Option<inode_manager::InodeLink> {
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variants `PIPE`, `INODE`, and `DEVICE` are never constructed
[INFO] [stderr]   --> src/common/file.rs:8:5
[INFO] [stderr]    |
[INFO] [stderr]  6 | pub enum FileDescriptorType {
[INFO] [stderr]    |          ------------------ variants in this enum
[INFO] [stderr]  7 |     NONE,
[INFO] [stderr]  8 |     PIPE,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr]  9 |     INODE,
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr] 10 |     DEVICE,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `FileType` is never used
[INFO] [stderr]   --> src/common/file.rs:13:10
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub enum FileType {
[INFO] [stderr]    |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `FileStat` is never constructed
[INFO] [stderr]   --> src/common/file.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct FileStat {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `off`, `read_able`, and `writeable` are never read
[INFO] [stderr]   --> src/common/file.rs:28:9
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub struct File {
[INFO] [stderr]    |            ---- fields in this struct
[INFO] [stderr] 28 |     pub off: u32,
[INFO] [stderr]    |         ^^^
[INFO] [stderr] 29 |     pub ref_cnt: u8,
[INFO] [stderr] 30 |     pub read_able: u8,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 31 |     pub writeable: u8,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `file_stat`, `file_read`, and `file_write` are never used
[INFO] [stderr]   --> src/common/file.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl File {
[INFO] [stderr]    | --------- methods in this implementation
[INFO] [stderr] 37 |     // Get metadata about file f.
[INFO] [stderr] 38 |     pub fn file_stat(&self) -> Option<FileStat> {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 47 |     pub fn file_read(&mut self, len: u32, buf: &mut Vec<u8>) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn file_write(&mut self, len: u32, buf: &Vec<u8>) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `transfer_inode_stat_to_stat` and `transfer_stat_to_inode` are never used
[INFO] [stderr]    --> src/common/file.rs:93:12
[INFO] [stderr]     |
[INFO] [stderr]  81 | impl File {
[INFO] [stderr]     | --------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  93 |     pub fn transfer_inode_stat_to_stat(inode_stat: inode::InodeStat) -> FileStat {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 103 |     pub fn transfer_stat_to_inode(stat: FileStat) -> inode::InodeStat {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `max_num` is never read
[INFO] [stderr]   --> src/common/file_table.rs:10:9
[INFO] [stderr]    |
[INFO] [stderr]  7 | pub struct FileTable {
[INFO] [stderr]    |            --------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 10 |     pub max_num: u32,
[INFO] [stderr]    |         ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `effect_huffman` and `effect_snappy` are never read
[INFO] [stderr]   --> src/compress/compress.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct CompressManager {
[INFO] [stderr]    |            --------------- fields in this struct
[INFO] [stderr] 17 |     pub effect_huffman: u8,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 18 |     pub effect_snappy: u8,
[INFO] [stderr]    |         ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `encode_with_type` and `get_compress_type_score` are never used
[INFO] [stderr]   --> src/compress/compress.rs:57:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | impl CompressManager {
[INFO] [stderr]    | -------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 57 |     pub fn encode_with_type(&mut self, bytes: &[u8], compress_type: CompressType) -> Vec<u8> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 95 |     pub fn get_compress_type_score(&self, compress_type: CompressType) -> u8 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_size` is never used
[INFO] [stderr]   --> src/write_buf.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | impl WriteCache {
[INFO] [stderr]    | --------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 26 |     pub fn get_size(&self) -> u32 {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/write_buf.rs:134:8
[INFO] [stderr]     |
[INFO] [stderr] 133 | impl WriteBuf {
[INFO] [stderr]     | ------------- associated function in this implementation
[INFO] [stderr] 134 |     fn new(address: u32, data: [u8; 4096]) -> WriteBuf {
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/tl/tl.rs:430:18
[INFO] [stderr]     |
[INFO] [stderr] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 430 |     fn new(data: &array::Array1::<[u8; 4096]>) -> MapDataRegion<'_> {
[INFO] [stderr]     |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/tl/tl.rs:474:18
[INFO] [stderr]     |
[INFO] [stderr] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion {
[INFO] [stderr]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 474 |     fn new(data: &array::Array1::<[u8; 4096]>) -> SignDataRegion<'_> {
[INFO] [stderr]     |                                                                 ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/core/bit.rs:268:22
[INFO] [stderr]     |
[INFO] [stderr] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 268 |     pub fn new(data: &array::Array1::<[u8; 4096]>, num: u32) -> DataRegion<'_> {
[INFO] [stderr]     |                                                                           ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/core/pit.rs:197:22
[INFO] [stderr]     |
[INFO] [stderr] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 197 |     pub fn new(data: &array::Array1::<[u8; 4096]>, strategy: PITStrategy) -> DataRegion<'_> {
[INFO] [stderr]     |                                                                                        ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/core/journal.rs:128:22
[INFO] [stderr]     |
[INFO] [stderr] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion {
[INFO] [stderr]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^     ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 128 |     pub fn new(data: &array::Array1::<[u8; 4096]>) -> DataRegion<'_> {
[INFO] [stderr]     |                                                                 ++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/util/crc32.rs:69:25
[INFO] [stderr]    |
[INFO] [stderr] 69 |     pub const fn digest(&self) -> Digest<u32> {
[INFO] [stderr]    |                         ^^^^^     ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                         |
[INFO] [stderr]    |                         the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 69 |     pub const fn digest(&self) -> Digest<'_, u32> {
[INFO] [stderr]    |                                          +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/util/crc32.rs:78:38
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<u32> {
[INFO] [stderr]    |                                      ^^^^^                   ^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                                      |
[INFO] [stderr]    |                                      the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 78 |     pub const fn digest_with_initial(&self, initial: u32) -> Digest<'_, u32> {
[INFO] [stderr]    |                                                                     +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/util/lru_cache.rs:58:16
[INFO] [stderr]    |
[INFO] [stderr] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<T>> {
[INFO] [stderr]    |                ^^^^^^^^^                      ^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                |
[INFO] [stderr]    |                the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 58 |     pub fn get(&mut self, key: u32) -> Option<Ref<'_, T>> {
[INFO] [stderr]    |                                                   +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/util/safe_linked_list.rs:95:23
[INFO] [stderr]    |
[INFO] [stderr] 95 |     pub fn peek_front(&self) -> Option<Ref<T>> {
[INFO] [stderr]    |                       ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                       |
[INFO] [stderr]    |                       the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 95 |     pub fn peek_front(&self) -> Option<Ref<'_, T>> {
[INFO] [stderr]    |                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/util/safe_linked_list.rs:101:22
[INFO] [stderr]     |
[INFO] [stderr] 101 |     pub fn peek_back(&self) -> Option<Ref<T>> {
[INFO] [stderr]     |                      ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                      |
[INFO] [stderr]     |                      the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 101 |     pub fn peek_back(&self) -> Option<Ref<'_, T>> {
[INFO] [stderr]     |                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/util/safe_linked_list.rs:107:27
[INFO] [stderr]     |
[INFO] [stderr] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stderr]     |                           ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                           |
[INFO] [stderr]     |                           the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 107 |     pub fn peek_front_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stderr]     |                                                       +++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]    --> src/util/safe_linked_list.rs:113:26
[INFO] [stderr]     |
[INFO] [stderr] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<T>> {
[INFO] [stderr]     |                          ^^^^^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]     |                          |
[INFO] [stderr]     |                          the lifetime is elided here
[INFO] [stderr]     |
[INFO] [stderr]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]     |
[INFO] [stderr] 113 |     pub fn peek_back_mut(&mut self) -> Option<RefMut<'_, T>> {
[INFO] [stderr]     |                                                      +++
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/inode/inode_manager.rs:55:13
[INFO] [stderr]    |
[INFO] [stderr] 55 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(let_underscore_lock)]` (part of `#[warn(let_underscore)]`) on by default
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 55 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 55 -         let _ = self.lock.lock();
[INFO] [stderr] 55 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/inode/inode_manager.rs:76:13
[INFO] [stderr]    |
[INFO] [stderr] 76 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 76 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 76 -         let _ = self.lock.lock();
[INFO] [stderr] 76 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/inode/inode_manager.rs:99:13
[INFO] [stderr]    |
[INFO] [stderr] 99 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 99 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 99 -         let _ = self.lock.lock();
[INFO] [stderr] 99 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]    --> src/inode/inode_manager.rs:108:13
[INFO] [stderr]     |
[INFO] [stderr] 108 |         let _ = self.lock.lock();
[INFO] [stderr]     |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]     |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 108 |         let _unused = self.lock.lock();
[INFO] [stderr]     |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]     |
[INFO] [stderr] 108 -         let _ = self.lock.lock();
[INFO] [stderr] 108 +         drop(self.lock.lock());
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/common/file_table.rs:32:13
[INFO] [stderr]    |
[INFO] [stderr] 32 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 32 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 32 -         let _ = self.lock.lock();
[INFO] [stderr] 32 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/common/file_table.rs:44:13
[INFO] [stderr]    |
[INFO] [stderr] 44 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 44 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 44 -         let _ = self.lock.lock();
[INFO] [stderr] 44 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: non-binding let on a synchronization lock
[INFO] [stderr]   --> src/common/file_table.rs:51:13
[INFO] [stderr]    |
[INFO] [stderr] 51 |         let _ = self.lock.lock();
[INFO] [stderr]    |             ^ this lock is not assigned to a binding and is immediately dropped
[INFO] [stderr]    |
[INFO] [stderr] help: consider binding to an unused variable to avoid immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 51 |         let _unused = self.lock.lock();
[INFO] [stderr]    |              ++++++
[INFO] [stderr] help: consider immediately dropping the value
[INFO] [stderr]    |
[INFO] [stderr] 51 -         let _ = self.lock.lock();
[INFO] [stderr] 51 +         drop(self.lock.lock());
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/compress/huffman.rs:97:17
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub fn iter(&self) -> Iter<char, Weight> {
[INFO] [stderr]    |                 ^^^^^     ^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |                 |
[INFO] [stderr]    |                 the lifetime is elided here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 97 |     pub fn iter(&self) -> Iter<'_, char, Weight> {
[INFO] [stderr]    |                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: `WondFS-fuse` (bin "WondFS-fuse" test) generated 87 warnings (run `cargo fix --bin "WondFS-fuse" --tests` to apply 29 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.03s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/WondFS_fuse-2a6500c6bc12fa43)
[INFO] [stdout] 
[INFO] [stdout] running 49 tests
[INFO] [stdout] test common::directory::test::test_directory_parser ... ok
[INFO] [stdout] test common::path::test::test_skip_elem ... ok
[INFO] [stdout] test core::core_manager::test::basics ... ok
[INFO] [stdout] test compress::snappy::test::basics ... ok
[INFO] [stdout] test core::core_manager::test::inode ... ok
[INFO] [stdout] test compress::compress::test::basics ... ok
[INFO] [stdout] test core::vam::test::basics ... ok
[INFO] [stdout] test buf::test::basics ... ok
[INFO] [stderr] 
[INFO] [stderr] thread 'driver::disk_manager::test::basics' (47) has overflowed its stack
[INFO] [stderr] fatal runtime error: stack overflow, aborting
[INFO] [stderr] error: test failed, to rerun pass `--bin WondFS-fuse`
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/target/debug/deps/WondFS_fuse-2a6500c6bc12fa43` (signal: 6, SIGABRT: process abort signal)
[INFO] [stdout] test compress::huffman::test::basics ... ok
[INFO] running `Command { std: "docker" "inspect" "8f1c21f268e49184150a27f46643030e438188ca823b8e6e43b131ba40392a38", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8f1c21f268e49184150a27f46643030e438188ca823b8e6e43b131ba40392a38", kill_on_drop: false }`
[INFO] [stdout] 8f1c21f268e49184150a27f46643030e438188ca823b8e6e43b131ba40392a38
