[INFO] fetching crate pi_store 0.8.1...
[INFO] testing pi_store-0.8.1 against try#c2e32f1c9652b13ed99608599c1e855462f421f3 for pr-146098-8
[INFO] extracting crate pi_store 0.8.1 into /workspace/builds/worker-3-tc2/source
[INFO] started tweaking crates.io crate pi_store 0.8.1
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate pi_store 0.8.1
[INFO] tweaked toml for crates.io crate pi_store 0.8.1 written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate pi_store 0.8.1 on toolchain c2e32f1c9652b13ed99608599c1e855462f421f3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate pi_store 0.8.1 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" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1a3a3b0faefb9a9065a4079910d60af620afb154f088d762dec499195738b895
[INFO] running `Command { std: "docker" "start" "-a" "1a3a3b0faefb9a9065a4079910d60af620afb154f088d762dec499195738b895", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1a3a3b0faefb9a9065a4079910d60af620afb154f088d762dec499195738b895", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1a3a3b0faefb9a9065a4079910d60af620afb154f088d762dec499195738b895", kill_on_drop: false }`
[INFO] [stdout] 1a3a3b0faefb9a9065a4079910d60af620afb154f088d762dec499195738b895
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 63fa722c2abfd0dae50bc71a6a1f346f17737fe963e1e409c21538f38ebf51c2
[INFO] running `Command { std: "docker" "start" "-a" "63fa722c2abfd0dae50bc71a6a1f346f17737fe963e1e409c21538f38ebf51c2", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]    Compiling writeable v0.5.5
[INFO] [stderr]    Compiling icu_locid_transform_data v1.5.1
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling litemap v0.7.5
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling pi_slot_deque v0.2.1
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling icu_properties_data v1.5.1
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling bitflags v2.9.0
[INFO] [stderr]    Compiling adler2 v2.0.0
[INFO] [stderr]    Compiling icu_normalizer_data v1.5.1
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling pi_ext_heap v0.1.1
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling fxhash v0.2.1
[INFO] [stderr]    Compiling pi_slot_wheel v0.2.0
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling pi_wheel v0.1.0
[INFO] [stderr]    Compiling rustc-demangle v0.1.24
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]    Compiling raw-cpuid v11.5.0
[INFO] [stderr]    Compiling pi_cancel_timer v0.2.0
[INFO] [stderr]    Compiling pi_timer v0.1.0
[INFO] [stderr]    Compiling pi_wrr v0.1.1
[INFO] [stderr]    Compiling utf16_iter v1.0.5
[INFO] [stderr]    Compiling pi_null v0.1.11
[INFO] [stderr]    Compiling write16 v1.0.0
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling pi_share v0.5.2
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling nanorand v0.7.0
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling st3 v0.4.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling jobserver v0.1.33
[INFO] [stderr]    Compiling event-listener v5.4.0
[INFO] [stderr]    Compiling smol_str v0.2.2
[INFO] [stderr]    Compiling pi_print_any v0.1.2
[INFO] [stderr]    Compiling fastcmp v1.0.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling normpath v1.3.0
[INFO] [stderr]    Compiling pi_futures v0.1.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling cc v1.2.20
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling crc32fast v1.4.2
[INFO] [stderr]    Compiling async-lock v3.4.0
[INFO] [stderr]    Compiling async-channel v2.3.1
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling quanta v0.12.5
[INFO] [stderr]    Compiling dashmap v6.1.0
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling lzzzz v1.0.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling pi_bon v0.3.0
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling twox-hash v1.6.3
[INFO] [stderr]    Compiling backtrace v0.3.74
[INFO] [stderr]    Compiling pi_hash v0.1.1
[INFO] [stderr]    Compiling pi_cache v0.4.3
[INFO] [stderr]    Compiling sysinfo v0.29.11
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling ctor v0.2.9
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling pi_time v0.3.4
[INFO] [stderr]    Compiling pi_time v0.5.1
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling pi_guid v0.1.3
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.7.5
[INFO] [stderr]    Compiling zerovec v0.10.4
[INFO] [stderr]    Compiling tinystr v0.7.6
[INFO] [stderr]    Compiling icu_collections v1.5.0
[INFO] [stderr]    Compiling icu_locid v1.5.0
[INFO] [stderr]    Compiling icu_provider v1.5.0
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling pi-async-rt v0.2.5
[INFO] [stderr]    Compiling icu_locid_transform v1.5.0
[INFO] [stderr]    Compiling icu_properties v1.5.1
[INFO] [stderr]    Compiling pi_async_file v0.7.0
[INFO] [stderr]    Compiling pi_atom v0.6.1
[INFO] [stderr]    Compiling pi_assets v0.15.1
[INFO] [stderr]    Compiling icu_normalizer v1.5.0
[INFO] [stderr]    Compiling pi_async_transaction v0.10.0
[INFO] [stderr]    Compiling idna_adapter v1.2.0
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]    Compiling pi_store v0.8.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:382:32
[INFO] [stdout]     |
[INFO] [stdout] 382 |                     return Err((key));
[INFO] [stdout]     |                                ^   ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 382 -                     return Err((key));
[INFO] [stdout] 382 +                     return Err(key );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:803:29
[INFO] [stdout]     |
[INFO] [stdout] 803 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 803 -                 let waits = (&mut *mutex);
[INFO] [stdout] 803 +                 let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:826:37
[INFO] [stdout]     |
[INFO] [stdout] 826 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 826 -                         let waits = (&mut *mutex);
[INFO] [stdout] 826 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:845:37
[INFO] [stdout]     |
[INFO] [stdout] 845 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 845 -                         let waits = (&mut *mutex);
[INFO] [stdout] 845 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use bytes::{Buf, BufMut};
[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: `BytesMut`
[INFO] [stdout]   --> src/vpm/page_manager.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` and `VirtualPageTableIteratorItem`
[INFO] [stdout]   --> src/vpm/page_manager.rs:21:30
[INFO] [stdout]    |
[INFO] [stdout] 21 | ...E, VIRTUAL_PAGE_MANAGER_DEVICES_INDEX, VirtualPageWriteDelta, VirtualPageBuf, PageId, VirtualPageWriteCmd, WriteIndex, VirtualPageEncoding, DefaultVirtualPageEncoder, page_cache::{VirtualPageLFUCache, VirtualPageLFUCacheDirtyIterator}, page_table::{VirtualPageTable, VirtualPageTableIteratorItem}, ...
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:539:13
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let mut offset = None;
[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/log_store/log_file.rs:568:18
[INFO] [stdout]     |
[INFO] [stdout] 568 |             Some(mut i) => {
[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/log_store/log_file.rs:609:13
[INFO] [stdout]     |
[INFO] [stdout] 609 |         let mut offset = None;
[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/log_store/log_file.rs:632:21
[INFO] [stdout]     |
[INFO] [stdout] 632 |         if let Some(mut i) = log_index {
[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/log_store/log_file.rs:704:21
[INFO] [stdout]     |
[INFO] [stdout] 704 |         if let Some(mut i) = log_index {
[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/log_store/log_file.rs:1145:31
[INFO] [stdout]      |
[INFO] [stdout] 1145 | ...                   mut remove_paths: Vec<PathBuf>,
[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/vpm/page_manager.rs:231:24
[INFO] [stdout]     |
[INFO] [stdout] 231 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[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/vpm/page_manager.rs:862:32
[INFO] [stdout]     |
[INFO] [stdout] 862 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[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/vpm/page_manager.rs:1531:9
[INFO] [stdout]      |
[INFO] [stdout] 1531 |     let mut locked = write_cmd_buffer
[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/commit_logger.rs:132:24
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/vpm/page_manager.rs:7:41
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{Error, Result, ErrorKind, Read};
[INFO] [stdout]   |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:364:26
[INFO] [stdout]     |
[INFO] [stdout] 364 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:365:26
[INFO] [stdout]     |
[INFO] [stdout] 365 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:366:26
[INFO] [stdout]     |
[INFO] [stdout] 366 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:464:26
[INFO] [stdout]     |
[INFO] [stdout] 464 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:465:26
[INFO] [stdout]     |
[INFO] [stdout] 465 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:692:13
[INFO] [stdout]     |
[INFO] [stdout] 692 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:853:9
[INFO] [stdout]     |
[INFO] [stdout] 853 |     let mut index = node.index(key);
[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/free_lock/b_plus_tree.rs:935:43
[INFO] [stdout]     |
[INFO] [stdout] 935 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[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/free_lock/b_plus_tree.rs:979:25
[INFO] [stdout]     |
[INFO] [stdout] 979 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[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/free_lock/b_plus_tree.rs:1054:29
[INFO] [stdout]      |
[INFO] [stdout] 1054 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[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/free_lock/b_plus_tree.rs:1192:47
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                               ----^^^^^^^^
[INFO] [stdout]      |                                               |
[INFO] [stdout]      |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1192:62
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1230:25
[INFO] [stdout]      |
[INFO] [stdout] 1230 |                         mut leaf: Arc<Leaf<K, V>>,
[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/free_lock/b_plus_tree.rs:1424:29
[INFO] [stdout]      |
[INFO] [stdout] 1424 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[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/free_lock/b_plus_tree.rs:1439:27
[INFO] [stdout]      |
[INFO] [stdout] 1439 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:869:41
[INFO] [stdout]     |
[INFO] [stdout] 819 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 869 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1029:28
[INFO] [stdout]      |
[INFO] [stdout] 1029 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]      |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1038:34
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]      |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:458:105
[INFO] [stdout]     |
[INFO] [stdout] 458 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |     fn is_freed(&self, location: &BlockLocation) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:261:26
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn block_size(&self, location: &BlockLocation) -> usize {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:444:17
[INFO] [stdout]     |
[INFO] [stdout] 444 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut logger = self.clone();
[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/commit_logger.rs:350:17
[INFO] [stdout]     |
[INFO] [stdout] 350 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:317:34
[INFO] [stdout]     |
[INFO] [stdout] 317 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[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/commit_logger.rs:617:17
[INFO] [stdout]     |
[INFO] [stdout] 617 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:577:38
[INFO] [stdout]     |
[INFO] [stdout] 577 |     fn start_replay_ext<B, F>(&self, mut callback: Arc<F>)
[INFO] [stdout]     |                                      ----^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1752:8
[INFO] [stdout]      |
[INFO] [stdout] 1736 | / impl<
[INFO] [stdout] 1737 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1738 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1739 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1752 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1807 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1824:5
[INFO] [stdout]      |
[INFO] [stdout] 1818 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1824 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2033:5
[INFO] [stdout]      |
[INFO] [stdout] 2032 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 2033 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2034 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2095:8
[INFO] [stdout]      |
[INFO] [stdout] 2047 | / impl<
[INFO] [stdout] 2048 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 2049 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 2050 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2095 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2105 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2247:5
[INFO] [stdout]      |
[INFO] [stdout] 2240 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2247 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2248 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2320:5
[INFO] [stdout]      |
[INFO] [stdout] 2315 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2320 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2344:5
[INFO] [stdout]      |
[INFO] [stdout] 2339 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2344 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2416:5
[INFO] [stdout]      |
[INFO] [stdout] 2411 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2416 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2628:5
[INFO] [stdout]      |
[INFO] [stdout] 2623 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2628 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2893:5
[INFO] [stdout]      |
[INFO] [stdout] 2888 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2893 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3103:5
[INFO] [stdout]      |
[INFO] [stdout] 3098 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3103 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3369:5
[INFO] [stdout]      |
[INFO] [stdout] 3364 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3369 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3388:8
[INFO] [stdout]      |
[INFO] [stdout] 3383 | / impl<
[INFO] [stdout] 3384 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3385 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3386 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3387 |       // 构建手动提交对树的修改
[INFO] [stdout] 3388 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1470:4
[INFO] [stdout]      |
[INFO] [stdout] 1470 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1482:4
[INFO] [stdout]      |
[INFO] [stdout] 1482 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u32 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MIN_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const RESERVED_MIN_PAGE_UID: PageId = PageId(EMPTY_PAGE);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MAX_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const RESERVED_MAX_PAGE_UID: PageId = PageId(u64::MAX as u128);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:332:5
[INFO] [stdout]     |
[INFO] [stdout] 323 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 332 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_table.rs:566:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 566 |     rt:                             MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 166 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 167 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 168 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 169 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 170 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 171 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 172 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 173 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 174 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 175 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 176 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 178 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 182 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 184 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 185 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 186 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 187 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 188 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 189 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 190 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:771:17
[INFO] [stdout]     |
[INFO] [stdout] 771 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 771 -                 drop(writable); //避免无法释放
[INFO] [stdout] 771 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 791 -                 drop(writable); //避免无法释放
[INFO] [stdout] 791 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:992:5
[INFO] [stdout]     |
[INFO] [stdout] 992 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 992 -     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout] 992 +     let _ = leaf_mut; //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1069:5
[INFO] [stdout]      |
[INFO] [stdout] 1069 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |     ^^^^^------------^
[INFO] [stdout]      |          |
[INFO] [stdout]      |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1069 -     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout] 1069 +     let _ = non_leaf_mut; //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:397:9
[INFO] [stdout]     |
[INFO] [stdout] 397 |         Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let _ = Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 557 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:629:9
[INFO] [stdout]     |
[INFO] [stdout] 629 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 629 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:701:9
[INFO] [stdout]     |
[INFO] [stdout] 701 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:833:25
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         let _ = Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:863:41
[INFO] [stdout]     |
[INFO] [stdout] 863 | ...                   Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |                                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:887:25
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/log_store/log_file.rs:903:25
[INFO] [stdout]     |
[INFO] [stdout] 903 |     pub fn delay_commit(&self,
[INFO] [stdout]     |                         ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 906 |                         timeout: usize) -> BoxFuture<Result<()>> {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 906 |                         timeout: usize) -> BoxFuture<'_, Result<()>> {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1032:13
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1040:9
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1133:21
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1302:21
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1594:13
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1612:13
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1696:13
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1714:13
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2200:13
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2218:13
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/vpm/page_manager.rs:575:9
[INFO] [stdout]     |
[INFO] [stdout] 575 | /         self.0.rt.spawn(async move {
[INFO] [stdout] 576 | |             loop {
[INFO] [stdout] 577 | |                 manager
[INFO] [stdout] 578 | |                     .0
[INFO] [stdout] ...   |
[INFO] [stdout] 595 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let _ = self.0.rt.spawn(async move {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:152:13
[INFO] [stdout]     |
[INFO] [stdout] 152 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:231:25
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:304:20
[INFO] [stdout]     |
[INFO] [stdout] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation>;
[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] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation>;
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:307:13
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>>;
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>>;
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:310:14
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 313 |              option: WriteOption) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 313 |              option: WriteOption) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:316:19
[INFO] [stdout]     |
[INFO] [stdout] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool>;
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool>;
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:319:31
[INFO] [stdout]     |
[INFO] [stdout] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:322:20
[INFO] [stdout]     |
[INFO] [stdout] 322 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 323 |         -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 323 |         -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:329:18
[INFO] [stdout]     |
[INFO] [stdout] 329 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>>;
[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] 329 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>>;
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:314:20
[INFO] [stdout]     |
[INFO] [stdout] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation> {
[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] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation> {
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>> {
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:418:14
[INFO] [stdout]     |
[INFO] [stdout] 418 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 421 |              _option: WriteOption) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 421 |              _option: WriteOption) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:466:19
[INFO] [stdout]     |
[INFO] [stdout] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool> {
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:479:31
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:550:20
[INFO] [stdout]     |
[INFO] [stdout] 550 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 551 |                    -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 551 |                    -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:562:18
[INFO] [stdout]     |
[INFO] [stdout] 562 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>> {
[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] 562 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:570:9
[INFO] [stdout]     |
[INFO] [stdout] 570 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 570 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:924:9
[INFO] [stdout]     |
[INFO] [stdout] 924 |         (self.callback)(None);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 924 |         let _ = (self.callback)(None);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.09s
[INFO] running `Command { std: "docker" "inspect" "63fa722c2abfd0dae50bc71a6a1f346f17737fe963e1e409c21538f38ebf51c2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "63fa722c2abfd0dae50bc71a6a1f346f17737fe963e1e409c21538f38ebf51c2", kill_on_drop: false }`
[INFO] [stdout] 63fa722c2abfd0dae50bc71a6a1f346f17737fe963e1e409c21538f38ebf51c2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c2e32f1c9652b13ed99608599c1e855462f421f3" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 0b4eafd30d6795651cea8bcbb6552b3f0d53eea77b47e46c67266c775adafdd9
[INFO] running `Command { std: "docker" "start" "-a" "0b4eafd30d6795651cea8bcbb6552b3f0d53eea77b47e46c67266c775adafdd9", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling redb v2.2.0
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling fs2 v0.4.3
[INFO] [stderr]    Compiling data-encoding v2.9.0
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling unsigned-varint v0.8.0
[INFO] [stderr]    Compiling linked-hash-map v0.5.6
[INFO] [stderr]    Compiling crc v3.2.1
[INFO] [stderr]    Compiling humantime v2.2.0
[INFO] [stderr]    Compiling twox-hash v1.6.3
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling zigzag v0.1.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling persy v1.6.0
[INFO] [stderr]    Compiling pi_hash v0.1.1
[INFO] [stderr]    Compiling pi-async-rt v0.2.5
[INFO] [stderr]    Compiling pi_cache v0.4.3
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling pi_async_file v0.7.0
[INFO] [stderr]    Compiling pi_assets v0.15.1
[INFO] [stderr]    Compiling pi_bon v0.3.0
[INFO] [stderr]    Compiling pi_atom v0.6.1
[INFO] [stderr]    Compiling pi_async_transaction v0.10.0
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling env_logger v0.9.3
[INFO] [stderr]    Compiling pi_store v0.8.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:382:32
[INFO] [stdout]     |
[INFO] [stdout] 382 |                     return Err((key));
[INFO] [stdout]     |                                ^   ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 382 -                     return Err((key));
[INFO] [stdout] 382 +                     return Err(key );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:803:29
[INFO] [stdout]     |
[INFO] [stdout] 803 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 803 -                 let waits = (&mut *mutex);
[INFO] [stdout] 803 +                 let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:826:37
[INFO] [stdout]     |
[INFO] [stdout] 826 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 826 -                         let waits = (&mut *mutex);
[INFO] [stdout] 826 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:845:37
[INFO] [stdout]     |
[INFO] [stdout] 845 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 845 -                         let waits = (&mut *mutex);
[INFO] [stdout] 845 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use bytes::{Buf, BufMut};
[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: `BytesMut`
[INFO] [stdout]   --> src/vpm/page_manager.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` and `VirtualPageTableIteratorItem`
[INFO] [stdout]   --> src/vpm/page_manager.rs:21:30
[INFO] [stdout]    |
[INFO] [stdout] 21 | ...E, VIRTUAL_PAGE_MANAGER_DEVICES_INDEX, VirtualPageWriteDelta, VirtualPageBuf, PageId, VirtualPageWriteCmd, WriteIndex, VirtualPageEncoding, DefaultVirtualPageEncoder, page_cache::{VirtualPageLFUCache, VirtualPageLFUCacheDirtyIterator}, page_table::{VirtualPageTable, VirtualPageTableIteratorItem}, ...
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:539:13
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let mut offset = None;
[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/log_store/log_file.rs:568:18
[INFO] [stdout]     |
[INFO] [stdout] 568 |             Some(mut i) => {
[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/log_store/log_file.rs:609:13
[INFO] [stdout]     |
[INFO] [stdout] 609 |         let mut offset = None;
[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/log_store/log_file.rs:632:21
[INFO] [stdout]     |
[INFO] [stdout] 632 |         if let Some(mut i) = log_index {
[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/log_store/log_file.rs:704:21
[INFO] [stdout]     |
[INFO] [stdout] 704 |         if let Some(mut i) = log_index {
[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/log_store/log_file.rs:1145:31
[INFO] [stdout]      |
[INFO] [stdout] 1145 | ...                   mut remove_paths: Vec<PathBuf>,
[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/vpm/page_manager.rs:231:24
[INFO] [stdout]     |
[INFO] [stdout] 231 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[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/vpm/page_manager.rs:862:32
[INFO] [stdout]     |
[INFO] [stdout] 862 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[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/vpm/page_manager.rs:1531:9
[INFO] [stdout]      |
[INFO] [stdout] 1531 |     let mut locked = write_cmd_buffer
[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/commit_logger.rs:132:24
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/vpm/page_manager.rs:7:41
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{Error, Result, ErrorKind, Read};
[INFO] [stdout]   |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:364:26
[INFO] [stdout]     |
[INFO] [stdout] 364 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:365:26
[INFO] [stdout]     |
[INFO] [stdout] 365 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:366:26
[INFO] [stdout]     |
[INFO] [stdout] 366 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:464:26
[INFO] [stdout]     |
[INFO] [stdout] 464 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:465:26
[INFO] [stdout]     |
[INFO] [stdout] 465 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:692:13
[INFO] [stdout]     |
[INFO] [stdout] 692 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:853:9
[INFO] [stdout]     |
[INFO] [stdout] 853 |     let mut index = node.index(key);
[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/free_lock/b_plus_tree.rs:935:43
[INFO] [stdout]     |
[INFO] [stdout] 935 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[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/free_lock/b_plus_tree.rs:979:25
[INFO] [stdout]     |
[INFO] [stdout] 979 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[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/free_lock/b_plus_tree.rs:1054:29
[INFO] [stdout]      |
[INFO] [stdout] 1054 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[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/free_lock/b_plus_tree.rs:1192:47
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                               ----^^^^^^^^
[INFO] [stdout]      |                                               |
[INFO] [stdout]      |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1192:62
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1230:25
[INFO] [stdout]      |
[INFO] [stdout] 1230 |                         mut leaf: Arc<Leaf<K, V>>,
[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/free_lock/b_plus_tree.rs:1424:29
[INFO] [stdout]      |
[INFO] [stdout] 1424 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[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/free_lock/b_plus_tree.rs:1439:27
[INFO] [stdout]      |
[INFO] [stdout] 1439 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:869:41
[INFO] [stdout]     |
[INFO] [stdout] 819 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 869 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1029:28
[INFO] [stdout]      |
[INFO] [stdout] 1029 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]      |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1038:34
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]      |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:458:105
[INFO] [stdout]     |
[INFO] [stdout] 458 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |     fn is_freed(&self, location: &BlockLocation) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:261:26
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn block_size(&self, location: &BlockLocation) -> usize {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:444:17
[INFO] [stdout]     |
[INFO] [stdout] 444 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut logger = self.clone();
[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/commit_logger.rs:350:17
[INFO] [stdout]     |
[INFO] [stdout] 350 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:317:34
[INFO] [stdout]     |
[INFO] [stdout] 317 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[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/commit_logger.rs:617:17
[INFO] [stdout]     |
[INFO] [stdout] 617 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:577:38
[INFO] [stdout]     |
[INFO] [stdout] 577 |     fn start_replay_ext<B, F>(&self, mut callback: Arc<F>)
[INFO] [stdout]     |                                      ----^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1752:8
[INFO] [stdout]      |
[INFO] [stdout] 1736 | / impl<
[INFO] [stdout] 1737 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1738 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1739 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1752 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1807 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1824:5
[INFO] [stdout]      |
[INFO] [stdout] 1818 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1824 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2033:5
[INFO] [stdout]      |
[INFO] [stdout] 2032 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 2033 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2034 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2095:8
[INFO] [stdout]      |
[INFO] [stdout] 2047 | / impl<
[INFO] [stdout] 2048 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 2049 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 2050 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2095 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2105 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2247:5
[INFO] [stdout]      |
[INFO] [stdout] 2240 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2247 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2248 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2320:5
[INFO] [stdout]      |
[INFO] [stdout] 2315 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2320 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2344:5
[INFO] [stdout]      |
[INFO] [stdout] 2339 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2344 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2416:5
[INFO] [stdout]      |
[INFO] [stdout] 2411 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2416 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2628:5
[INFO] [stdout]      |
[INFO] [stdout] 2623 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2628 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2893:5
[INFO] [stdout]      |
[INFO] [stdout] 2888 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2893 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3103:5
[INFO] [stdout]      |
[INFO] [stdout] 3098 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3103 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3369:5
[INFO] [stdout]      |
[INFO] [stdout] 3364 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3369 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3388:8
[INFO] [stdout]      |
[INFO] [stdout] 3383 | / impl<
[INFO] [stdout] 3384 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3385 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3386 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3387 |       // 构建手动提交对树的修改
[INFO] [stdout] 3388 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1470:4
[INFO] [stdout]      |
[INFO] [stdout] 1470 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1482:4
[INFO] [stdout]      |
[INFO] [stdout] 1482 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u32 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MIN_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const RESERVED_MIN_PAGE_UID: PageId = PageId(EMPTY_PAGE);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MAX_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const RESERVED_MAX_PAGE_UID: PageId = PageId(u64::MAX as u128);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:332:5
[INFO] [stdout]     |
[INFO] [stdout] 323 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 332 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_table.rs:566:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 566 |     rt:                             MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 166 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 167 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 168 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 169 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 170 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 171 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 172 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 173 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 174 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 175 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 176 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 178 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 182 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 184 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 185 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 186 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 187 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 188 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 189 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 190 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:771:17
[INFO] [stdout]     |
[INFO] [stdout] 771 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 771 -                 drop(writable); //避免无法释放
[INFO] [stdout] 771 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 791 -                 drop(writable); //避免无法释放
[INFO] [stdout] 791 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:992:5
[INFO] [stdout]     |
[INFO] [stdout] 992 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 992 -     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout] 992 +     let _ = leaf_mut; //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1069:5
[INFO] [stdout]      |
[INFO] [stdout] 1069 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |     ^^^^^------------^
[INFO] [stdout]      |          |
[INFO] [stdout]      |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1069 -     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout] 1069 +     let _ = non_leaf_mut; //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:397:9
[INFO] [stdout]     |
[INFO] [stdout] 397 |         Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let _ = Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 557 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:629:9
[INFO] [stdout]     |
[INFO] [stdout] 629 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 629 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:701:9
[INFO] [stdout]     |
[INFO] [stdout] 701 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:833:25
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         let _ = Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:863:41
[INFO] [stdout]     |
[INFO] [stdout] 863 | ...                   Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |                                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:887:25
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/log_store/log_file.rs:903:25
[INFO] [stdout]     |
[INFO] [stdout] 903 |     pub fn delay_commit(&self,
[INFO] [stdout]     |                         ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 906 |                         timeout: usize) -> BoxFuture<Result<()>> {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 906 |                         timeout: usize) -> BoxFuture<'_, Result<()>> {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1032:13
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1040:9
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1133:21
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1302:21
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1594:13
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1612:13
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1696:13
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1714:13
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2200:13
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2218:13
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/vpm/page_manager.rs:575:9
[INFO] [stdout]     |
[INFO] [stdout] 575 | /         self.0.rt.spawn(async move {
[INFO] [stdout] 576 | |             loop {
[INFO] [stdout] 577 | |                 manager
[INFO] [stdout] 578 | |                     .0
[INFO] [stdout] ...   |
[INFO] [stdout] 595 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let _ = self.0.rt.spawn(async move {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:152:13
[INFO] [stdout]     |
[INFO] [stdout] 152 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:231:25
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:304:20
[INFO] [stdout]     |
[INFO] [stdout] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation>;
[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] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation>;
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:307:13
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>>;
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>>;
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:310:14
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 313 |              option: WriteOption) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 313 |              option: WriteOption) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:316:19
[INFO] [stdout]     |
[INFO] [stdout] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool>;
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool>;
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:319:31
[INFO] [stdout]     |
[INFO] [stdout] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:322:20
[INFO] [stdout]     |
[INFO] [stdout] 322 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 323 |         -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 323 |         -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:329:18
[INFO] [stdout]     |
[INFO] [stdout] 329 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>>;
[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] 329 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>>;
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:314:20
[INFO] [stdout]     |
[INFO] [stdout] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation> {
[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] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation> {
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>> {
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:418:14
[INFO] [stdout]     |
[INFO] [stdout] 418 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 421 |              _option: WriteOption) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 421 |              _option: WriteOption) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:466:19
[INFO] [stdout]     |
[INFO] [stdout] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool> {
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:479:31
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:550:20
[INFO] [stdout]     |
[INFO] [stdout] 550 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 551 |                    -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 551 |                    -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:562:18
[INFO] [stdout]     |
[INFO] [stdout] 562 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>> {
[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] 562 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:570:9
[INFO] [stdout]     |
[INFO] [stdout] 570 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 570 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:924:9
[INFO] [stdout]     |
[INFO] [stdout] 924 |         (self.callback)(None);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 924 |         let _ = (self.callback)(None);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling lz4 v1.25.0
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `pi_blocks_allocator`
[INFO] [stdout]   --> tests/test_vpm.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use pi_blocks_allocator::device::{BuddyBlocksDeviceBuilder, BuddyBlocksDevice};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `pi_blocks_allocator`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `pi_blocks_allocator`, use `cargo add pi_blocks_allocator` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Binary` and `SimpleDevice`
[INFO] [stdout]   --> tests/test_vpm.rs:35:41
[INFO] [stdout]    |
[INFO] [stdout] 35 |                devices::simple_device::{Binary, SimpleDevice}};
[INFO] [stdout]    |                                         ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `pi_blocks_allocator`
[INFO] [stdout]   --> tests/test_devices.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use pi_blocks_allocator::device::{BuddyBlocksDeviceBuilder, BuddyBlocksDevice};
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^ use of unresolved module or unlinked crate `pi_blocks_allocator`
[INFO] [stdout]    |
[INFO] [stdout]    = help: if you wanted to use a crate named `pi_blocks_allocator`, use `cargo add pi_blocks_allocator` to add it to your `Cargo.toml`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> tests/test_log_file.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{BTreeMap, VecDeque};
[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: `AtomicBool`
[INFO] [stdout]  --> tests/test_log_file.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_lock::Mutex`
[INFO] [stdout]  --> tests/test_log_file.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_lock::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MultiTaskRuntime`
[INFO] [stdout]   --> tests/test_log_file.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 |                       multi_thread::{MultiTaskRuntime, MultiTaskRuntimeBuilder}};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_log_file_block` and `read_log_file`
[INFO] [stdout]   --> tests/test_log_file.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     read_log_file, read_log_file_block, LogFile, LogMethod, PairLoader,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]   --> tests/test_log_file.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::ErrorKind;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/test_devices.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::path::Path;
[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: `DeviceStatus`
[INFO] [stdout]   --> tests/test_devices.rs:10:53
[INFO] [stdout]    |
[INFO] [stdout] 10 | use pi_store::devices::{BlockDevice, BlockLocation, DeviceStatus, simple_device::{Binary, SimpleDevice}};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/test_devices.rs:28:22
[INFO] [stdout]    |
[INFO] [stdout] 28 |           let device = builder
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 29 | |             .build(rt_copy.clone())
[INFO] [stdout] 30 | |             .await
[INFO] [stdout]    | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> tests/test_devices.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 |             let block = device.alloc_block(size).await;
[INFO] [stdout]    |                 ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |                     assert!(!block.is_empty());
[INFO] [stdout]    |                              ----- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `block` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |             let block: /* Type */ = device.alloc_block(size).await;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:516:22
[INFO] [stdout]     |
[INFO] [stdout] 516 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 517 | |             .build(rt_copy.clone())
[INFO] [stdout] 518 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:382:32
[INFO] [stdout]     |
[INFO] [stdout] 382 |                     return Err((key));
[INFO] [stdout]     |                                ^   ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 382 -                     return Err((key));
[INFO] [stdout] 382 +                     return Err(key );
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:803:29
[INFO] [stdout]     |
[INFO] [stdout] 803 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 803 -                 let waits = (&mut *mutex);
[INFO] [stdout] 803 +                 let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:826:37
[INFO] [stdout]     |
[INFO] [stdout] 826 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 826 -                         let waits = (&mut *mutex);
[INFO] [stdout] 826 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:845:37
[INFO] [stdout]     |
[INFO] [stdout] 845 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 845 -                         let waits = (&mut *mutex);
[INFO] [stdout] 845 +                         let waits = &mut *mutex ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:9:13
[INFO] [stdout]   |
[INFO] [stdout] 9 | use bytes::{Buf, BufMut};
[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: `BytesMut`
[INFO] [stdout]   --> src/vpm/page_manager.rs:14:26
[INFO] [stdout]    |
[INFO] [stdout] 14 | use bytes::{Buf, BufMut, BytesMut};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` and `VirtualPageTableIteratorItem`
[INFO] [stdout]   --> src/vpm/page_manager.rs:21:30
[INFO] [stdout]    |
[INFO] [stdout] 21 | ...E, VIRTUAL_PAGE_MANAGER_DEVICES_INDEX, VirtualPageWriteDelta, VirtualPageBuf, PageId, VirtualPageWriteCmd, WriteIndex, VirtualPageEncoding, DefaultVirtualPageEncoder, page_cache::{VirtualPageLFUCache, VirtualPageLFUCacheDirtyIterator}, page_table::{VirtualPageTable, VirtualPageTableIteratorItem}, ...
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                                                                                                                                                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:81:25
[INFO] [stdout]    |
[INFO] [stdout] 81 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:83:25
[INFO] [stdout]    |
[INFO] [stdout] 83 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:84:25
[INFO] [stdout]    |
[INFO] [stdout] 84 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:85:25
[INFO] [stdout]    |
[INFO] [stdout] 85 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:265:26
[INFO] [stdout]     |
[INFO] [stdout] 265 |     fn is_require(&self, log_file: Option<&PathBuf>, key: &Vec<u8>) -> bool {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:271:9
[INFO] [stdout]     |
[INFO] [stdout] 271 |         log_file: Option<&PathBuf>,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:135:21
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 138 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 135 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_log_file.rs:620:21
[INFO] [stdout]     |
[INFO] [stdout] 620 |                 let mut count = Arc::new(AtomicUsize::new(0));
[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] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:143:21
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 146 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:590:22
[INFO] [stdout]     |
[INFO] [stdout] 590 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 591 | |             .build(rt_copy.clone())
[INFO] [stdout] 592 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:623:24
[INFO] [stdout]     |
[INFO] [stdout] 623 |                     if page_id.is_normal() {
[INFO] [stdout]     |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:228:17
[INFO] [stdout]     |
[INFO] [stdout] 228 |             let block = device.alloc_block(size).await;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |                     assert!(!block.is_empty());
[INFO] [stdout]     |                              ----- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `block` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 228 |             let block: /* Type */ = device.alloc_block(size).await;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:635:66
[INFO] [stdout]     |
[INFO] [stdout] 635 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:643:62
[INFO] [stdout]     |
[INFO] [stdout] 643 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:674:22
[INFO] [stdout]     |
[INFO] [stdout] 674 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 675 | |             .build(rt_copy.clone())
[INFO] [stdout] 676 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:707:24
[INFO] [stdout]     |
[INFO] [stdout] 707 |                     if page_id.is_normal() {
[INFO] [stdout]     |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:719:66
[INFO] [stdout]     |
[INFO] [stdout] 719 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:539:13
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let mut offset = None;
[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/log_store/log_file.rs:568:18
[INFO] [stdout]     |
[INFO] [stdout] 568 |             Some(mut i) => {
[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/log_store/log_file.rs:609:13
[INFO] [stdout]     |
[INFO] [stdout] 609 |         let mut offset = None;
[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/log_store/log_file.rs:632:21
[INFO] [stdout]     |
[INFO] [stdout] 632 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:727:62
[INFO] [stdout]     |
[INFO] [stdout] 727 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:704:21
[INFO] [stdout]     |
[INFO] [stdout] 704 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:750:31
[INFO] [stdout]     |
[INFO] [stdout] 750 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]     |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:784:22
[INFO] [stdout]     |
[INFO] [stdout] 784 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 785 | |             .build(rt_copy.clone())
[INFO] [stdout] 786 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:816:17
[INFO] [stdout]     |
[INFO] [stdout] 816 |                 page_ids.sort();
[INFO] [stdout]     |                 ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:818:24
[INFO] [stdout]     |
[INFO] [stdout] 818 |                     if page_id.is_normal() {
[INFO] [stdout]     |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:317:21
[INFO] [stdout]     |
[INFO] [stdout] 317 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 320 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 317 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:830:66
[INFO] [stdout]     |
[INFO] [stdout] 830 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/log_store/log_file.rs:1145:31
[INFO] [stdout]      |
[INFO] [stdout] 1145 | ...                   mut remove_paths: Vec<PathBuf>,
[INFO] [stdout]      |                       ----^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:325:21
[INFO] [stdout]     |
[INFO] [stdout] 325 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 328 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 325 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:838:62
[INFO] [stdout]     |
[INFO] [stdout] 838 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:872:31
[INFO] [stdout]     |
[INFO] [stdout] 872 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]     |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:907:22
[INFO] [stdout]     |
[INFO] [stdout] 907 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 908 | |             .build(rt_copy.clone())
[INFO] [stdout] 909 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:941:17
[INFO] [stdout]     |
[INFO] [stdout] 941 |                 page_ids.sort();
[INFO] [stdout]     |                 ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:943:24
[INFO] [stdout]     |
[INFO] [stdout] 943 |                     if page_id.is_normal() {
[INFO] [stdout]     |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:954:66
[INFO] [stdout]     |
[INFO] [stdout] 954 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:963:62
[INFO] [stdout]     |
[INFO] [stdout] 963 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]     |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:231:24
[INFO] [stdout]     |
[INFO] [stdout] 231 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_vpm.rs:990:31
[INFO] [stdout]     |
[INFO] [stdout] 990 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]     |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1025:22
[INFO] [stdout]      |
[INFO] [stdout] 1025 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1026 | |             .build(rt_copy.clone())
[INFO] [stdout] 1027 | |             .await
[INFO] [stdout]      | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:862:32
[INFO] [stdout]     |
[INFO] [stdout] 862 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[INFO] [stdout]     |                       ----^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1059:17
[INFO] [stdout]      |
[INFO] [stdout] 1059 |                 page_ids.sort();
[INFO] [stdout]      |                 ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1061:24
[INFO] [stdout]      |
[INFO] [stdout] 1061 |                     if page_id.is_normal() {
[INFO] [stdout]      |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1072:66
[INFO] [stdout]      |
[INFO] [stdout] 1072 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:420:22
[INFO] [stdout]     |
[INFO] [stdout] 420 |           let device = builder
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 421 | |             .build(rt_copy.clone())
[INFO] [stdout] 422 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:442:21
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 445 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:450:21
[INFO] [stdout]     |
[INFO] [stdout] 450 |                 let r = device
[INFO] [stdout]     |                     ^
[INFO] [stdout] ...
[INFO] [stdout] 453 |                 assert!(r.is_ok());
[INFO] [stdout]     |                         - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 450 |                 let r: /* Type */ = device
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:460:13
[INFO] [stdout]     |
[INFO] [stdout] 460 |         let r = device.mamually_commit_block_groups().await;
[INFO] [stdout]     |             ^
[INFO] [stdout] 461 |         assert!(r.is_ok());
[INFO] [stdout]     |                 - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 460 |         let r: /* Type */ = device.mamually_commit_block_groups().await;
[INFO] [stdout]     |              ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> tests/test_devices.rs:462:13
[INFO] [stdout]     |
[INFO] [stdout] 462 |         let r = device.mamually_commit_block_indexes().await;
[INFO] [stdout]     |             ^
[INFO] [stdout] 463 |         assert!(r.is_ok());
[INFO] [stdout]     |                 - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving `r` an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 462 |         let r: /* Type */ = device.mamually_commit_block_indexes().await;
[INFO] [stdout]     |              ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1081:62
[INFO] [stdout]      |
[INFO] [stdout] 1081 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: this function depends on never type fallback being `()`
[INFO] [stdout]    --> tests/test_devices.rs:410:1
[INFO] [stdout]     |
[INFO] [stdout] 410 | fn test_load_buddy_blocks_device_after_crashed() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/never-type-fallback.html>
[INFO] [stdout]     = help: specify the types explicitly
[INFO] [stdout] note: in edition 2024, the requirement `!: Default` will fail
[INFO] [stdout]    --> tests/test_devices.rs:413:19
[INFO] [stdout]     |
[INFO] [stdout] 413 |     let builder = MultiTaskRuntimeBuilder::default();
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[deny(dependency_on_unit_never_type_fallback)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1108:31
[INFO] [stdout]      |
[INFO] [stdout] 1108 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]      |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_devices.rs:488:30
[INFO] [stdout]     |
[INFO] [stdout] 488 |                   match device.write(&location,
[INFO] [stdout]     |  ______________________________^^^^^-
[INFO] [stdout] 489 | |                                    &Binary::new("Hello Simple device".to_string().into_bytes())).await {
[INFO] [stdout]     | |________________________________________________________________________________________________- argument #3 of type `WriteOption` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/workdir/src/devices/mod.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn write(&self,
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 488 ~                 match device.write(
[INFO] [stdout] 489 +                 &location,
[INFO] [stdout] 490 +                                    &Binary::new("Hello Simple device".to_string().into_bytes()),
[INFO] [stdout] 491 +                 /* WriteOption */,
[INFO] [stdout] 492 ~                 ).await {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/vpm/page_manager.rs:1531:9
[INFO] [stdout]      |
[INFO] [stdout] 1531 |     let mut locked = write_cmd_buffer
[INFO] [stdout]      |         ----^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1122:66
[INFO] [stdout]      |
[INFO] [stdout] 1122 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1155:22
[INFO] [stdout]      |
[INFO] [stdout] 1155 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1156 | |             .build(rt_copy.clone())
[INFO] [stdout] 1157 | |             .await
[INFO] [stdout]      | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_devices.rs:532:30
[INFO] [stdout]     |
[INFO] [stdout] 532 |                   match device.write(&location,
[INFO] [stdout]     |  ______________________________^^^^^-
[INFO] [stdout] 533 | |                                    &Binary::new("Hello Simple device".to_string().into_bytes())).await {
[INFO] [stdout]     | |________________________________________________________________________________________________- argument #3 of type `WriteOption` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/workdir/src/devices/mod.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn write(&self,
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 532 ~                 match device.write(
[INFO] [stdout] 533 +                 &location,
[INFO] [stdout] 534 +                                    &Binary::new("Hello Simple device".to_string().into_bytes()),
[INFO] [stdout] 535 +                 /* WriteOption */,
[INFO] [stdout] 536 ~                 ).await {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0282, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1190:17
[INFO] [stdout]      |
[INFO] [stdout] 1190 |                 page_ids.sort();
[INFO] [stdout]      |                 ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1192:24
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                     if page_id.is_normal() {
[INFO] [stdout]      |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_devices") due to 17 previous errors; 2 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1203:66
[INFO] [stdout]      |
[INFO] [stdout] 1203 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1212:62
[INFO] [stdout]      |
[INFO] [stdout] 1212 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ReadableTable`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use redb::{ReadableTable, Builder, StorageBackend, TableDefinition, Table, ReadOnlyTable, Durability};
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StorageBackend`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:8:36
[INFO] [stdout]   |
[INFO] [stdout] 8 | use redb::{ReadableTable, Builder, StorageBackend, TableDefinition, Table, ReadOnlyTable, Durability};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1240:31
[INFO] [stdout]      |
[INFO] [stdout] 1240 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]      |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     let mut db = Builder::new()
[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]   --> tests/test_b_plus_tree.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |     let mut db = Builder::new()
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let mut tr = db.begin_write().unwrap(); //默认Durability::Immediate
[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]    --> tests/test_b_plus_tree.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let mut tr = db.begin_write().unwrap(); //默认Durability::Immediate
[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]    --> tests/test_b_plus_tree.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |     let mut tr = db.begin_write().unwrap();
[INFO] [stdout]     |         ----^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1294:22
[INFO] [stdout]      |
[INFO] [stdout] 1294 |           let device = BuddyBlocksDeviceBuilder::new("./device")
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1295 | |             .build(rt_copy.clone())
[INFO] [stdout] 1296 | |             .await
[INFO] [stdout]      | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1331:17
[INFO] [stdout]      |
[INFO] [stdout] 1331 |                 page_ids.sort();
[INFO] [stdout]      |                 ^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1333:24
[INFO] [stdout]      |
[INFO] [stdout] 1333 |                     if page_id.is_normal() {
[INFO] [stdout]      |                        ^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1344:66
[INFO] [stdout]      |
[INFO] [stdout] 1344 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:592:9
[INFO] [stdout]     |
[INFO] [stdout] 592 |     let mut iterator = map.keys(None, false);
[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]    --> tests/test_b_plus_tree.rs:618:9
[INFO] [stdout]     |
[INFO] [stdout] 618 |     let mut iterator = map.keys(Some(&0), false);
[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]    --> tests/test_b_plus_tree.rs:644:9
[INFO] [stdout]     |
[INFO] [stdout] 644 |     let mut iterator = map.keys(Some(&700), false);
[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]    --> tests/test_b_plus_tree.rs:670:9
[INFO] [stdout]     |
[INFO] [stdout] 670 |     let mut iterator = map.keys(Some(&999), false);
[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]    --> tests/test_b_plus_tree.rs:698:9
[INFO] [stdout]     |
[INFO] [stdout] 698 |     let mut iterator = map.keys(Some(&-1), false);
[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]    --> tests/test_b_plus_tree.rs:699:35
[INFO] [stdout]     |
[INFO] [stdout] 699 |     if let KeyIterator::Ascending(mut keys) = iterator {
[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]    --> tests/test_b_plus_tree.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let mut iterator = map.keys(Some(&1500), false);
[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]    --> tests/test_b_plus_tree.rs:713:35
[INFO] [stdout]     |
[INFO] [stdout] 713 |     if let KeyIterator::Ascending(mut keys) = iterator {
[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]    --> tests/test_b_plus_tree.rs:723:9
[INFO] [stdout]     |
[INFO] [stdout] 723 |     let mut iterator = map.keys(Some(&3000), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1353:62
[INFO] [stdout]      |
[INFO] [stdout] 1353 | ...                   String::from_utf8_lossy(output.as_ref()));
[INFO] [stdout]      |                                               ^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:751:9
[INFO] [stdout]     |
[INFO] [stdout] 751 |     let mut iterator = map.keys(None, true);
[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]    --> tests/test_b_plus_tree.rs:781:9
[INFO] [stdout]     |
[INFO] [stdout] 781 |     let mut iterator = map.keys(Some(&0), true);
[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]    --> tests/test_b_plus_tree.rs:806:9
[INFO] [stdout]     |
[INFO] [stdout] 806 |     let mut iterator = map.keys(Some(&700), true);
[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]    --> tests/test_b_plus_tree.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     let mut iterator = map.keys(Some(&999), true);
[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]    --> tests/test_b_plus_tree.rs:837:36
[INFO] [stdout]     |
[INFO] [stdout] 837 |     if let KeyIterator::Descending(mut keys) = iterator {
[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]    --> tests/test_b_plus_tree.rs:877:9
[INFO] [stdout]     |
[INFO] [stdout] 877 |     let mut iterator = map.keys(Some(&-1), true);
[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]    --> tests/test_b_plus_tree.rs:883:9
[INFO] [stdout]     |
[INFO] [stdout] 883 |     let mut iterator = map.keys(Some(&1500), true);
[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]    --> tests/test_b_plus_tree.rs:884:36
[INFO] [stdout]     |
[INFO] [stdout] 884 |     if let KeyIterator::Descending(mut keys) = iterator {
[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]    --> tests/test_b_plus_tree.rs:894:9
[INFO] [stdout]     |
[INFO] [stdout] 894 |     let mut iterator = map.keys(Some(&3000), true);
[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]    --> tests/test_b_plus_tree.rs:895:36
[INFO] [stdout]     |
[INFO] [stdout] 895 |     if let KeyIterator::Descending(mut keys) = iterator {
[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/commit_logger.rs:132:24
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub async fn build(mut self) -> Result<CommitLogger> {
[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]    --> tests/test_b_plus_tree.rs:926:9
[INFO] [stdout]     |
[INFO] [stdout] 926 |     let mut iterator = map.values(None, false);
[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]    --> tests/test_b_plus_tree.rs:953:9
[INFO] [stdout]     |
[INFO] [stdout] 953 |     let mut iterator = map.values(Some(&0), false);
[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]    --> tests/test_b_plus_tree.rs:981:9
[INFO] [stdout]     |
[INFO] [stdout] 981 |     let mut iterator = map.values(Some(&700), false);
[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]     --> tests/test_b_plus_tree.rs:1008:9
[INFO] [stdout]      |
[INFO] [stdout] 1008 |     let mut iterator = map.values(Some(&999), false);
[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]     --> tests/test_b_plus_tree.rs:1036:9
[INFO] [stdout]      |
[INFO] [stdout] 1036 |     let mut iterator = map.values(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:1037:38
[INFO] [stdout]      |
[INFO] [stdout] 1037 |     if let KVPairIterator::Ascending(mut values) = iterator {
[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]     --> tests/test_b_plus_tree.rs:1051:9
[INFO] [stdout]      |
[INFO] [stdout] 1051 |     let mut iterator = map.values(Some(&1500), false);
[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]     --> tests/test_b_plus_tree.rs:1052:38
[INFO] [stdout]      |
[INFO] [stdout] 1052 |     if let KVPairIterator::Ascending(mut values) = iterator {
[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]     --> tests/test_b_plus_tree.rs:1063:9
[INFO] [stdout]      |
[INFO] [stdout] 1063 |     let mut iterator = map.values(Some(&3000), false);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> tests/test_vpm.rs:1383:31
[INFO] [stdout]      |
[INFO] [stdout] 1383 |                     Err(e) if e.kind() == ErrorKind::UnexpectedEof => {
[INFO] [stdout]      |                               ^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1091:9
[INFO] [stdout]      |
[INFO] [stdout] 1091 |     let mut iterator = map.values(None, true);
[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]     --> tests/test_b_plus_tree.rs:1122:9
[INFO] [stdout]      |
[INFO] [stdout] 1122 |     let mut iterator = map.values(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:1147:9
[INFO] [stdout]      |
[INFO] [stdout] 1147 |     let mut iterator = map.values(Some(&700), true);
[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]     --> tests/test_b_plus_tree.rs:1178:9
[INFO] [stdout]      |
[INFO] [stdout] 1178 |     let mut iterator = map.values(Some(&999), true);
[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]     --> tests/test_b_plus_tree.rs:1179:39
[INFO] [stdout]      |
[INFO] [stdout] 1179 |     if let KVPairIterator::Descending(mut values) = iterator {
[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]     --> tests/test_b_plus_tree.rs:1220:9
[INFO] [stdout]      |
[INFO] [stdout] 1220 |     let mut iterator = map.values(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:1226:9
[INFO] [stdout]      |
[INFO] [stdout] 1226 |     let mut iterator = map.values(Some(&1500), true);
[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]     --> tests/test_b_plus_tree.rs:1227:39
[INFO] [stdout]      |
[INFO] [stdout] 1227 |     if let KVPairIterator::Descending(mut values) = iterator {
[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]     --> tests/test_b_plus_tree.rs:1238:9
[INFO] [stdout]      |
[INFO] [stdout] 1238 |     let mut iterator = map.values(Some(&3000), true);
[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]     --> tests/test_b_plus_tree.rs:1239:39
[INFO] [stdout]      |
[INFO] [stdout] 1239 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]      |                                       ----^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_channel::internal::SelectHandle`
[INFO] [stdout]   --> tests/test_vpm.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crossbeam_channel::internal::SelectHandle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VirtualPageCachingStrategy`
[INFO] [stdout]   --> tests/test_vpm.rs:31:34
[INFO] [stdout]    |
[INFO] [stdout] 31 |                      page_pool::{VirtualPageCachingStrategy,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::task::SpawnExt`
[INFO] [stdout]   --> tests/test_vpm.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use futures::task::SpawnExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]   --> tests/test_vpm.rs:81:21
[INFO] [stdout]    |
[INFO] [stdout] 81 |                 let r = value_clone.await;
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:2679:13
[INFO] [stdout]      |
[INFO] [stdout] 2679 |         let mut iterator = map0.keys(None, false);
[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]     --> tests/test_b_plus_tree.rs:2692:13
[INFO] [stdout]      |
[INFO] [stdout] 2692 |         let mut iterator = map1.keys(None, false);
[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]     --> tests/test_b_plus_tree.rs:2705:13
[INFO] [stdout]      |
[INFO] [stdout] 2705 |         let mut iterator = map2.keys(None, false);
[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]     --> tests/test_b_plus_tree.rs:2718:13
[INFO] [stdout]      |
[INFO] [stdout] 2718 |         let mut iterator = map3.keys(None, false);
[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]     --> tests/test_b_plus_tree.rs:2741:13
[INFO] [stdout]      |
[INFO] [stdout] 2741 |         let mut iterator = map0.keys(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:2754:13
[INFO] [stdout]      |
[INFO] [stdout] 2754 |         let mut iterator = map1.keys(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:2767:13
[INFO] [stdout]      |
[INFO] [stdout] 2767 |         let mut iterator = map2.keys(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:2780:13
[INFO] [stdout]      |
[INFO] [stdout] 2780 |         let mut iterator = map3.keys(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:2803:13
[INFO] [stdout]      |
[INFO] [stdout] 2803 |         let mut iterator = map0.keys(Some(&1), false);
[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]     --> tests/test_b_plus_tree.rs:2816:13
[INFO] [stdout]      |
[INFO] [stdout] 2816 |         let mut iterator = map1.keys(Some(&10000), false);
[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]     --> tests/test_b_plus_tree.rs:2829:13
[INFO] [stdout]      |
[INFO] [stdout] 2829 |         let mut iterator = map2.keys(Some(&90000), false);
[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]     --> tests/test_b_plus_tree.rs:2842:13
[INFO] [stdout]      |
[INFO] [stdout] 2842 |         let mut iterator = map3.keys(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:2865:13
[INFO] [stdout]      |
[INFO] [stdout] 2865 |         let mut iterator = map0.keys(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:2878:13
[INFO] [stdout]      |
[INFO] [stdout] 2878 |         let mut iterator = map1.keys(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:2891:13
[INFO] [stdout]      |
[INFO] [stdout] 2891 |         let mut iterator = map2.keys(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:2904:13
[INFO] [stdout]      |
[INFO] [stdout] 2904 |         let mut iterator = map3.keys(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:2927:13
[INFO] [stdout]      |
[INFO] [stdout] 2927 |         let mut iterator = map0.keys(Some(&-1), false);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0433.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:2940:13
[INFO] [stdout]      |
[INFO] [stdout] 2940 |         let mut iterator = map1.keys(Some(&-1), false);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:2953:13
[INFO] [stdout]      |
[INFO] [stdout] 2953 |         let mut iterator = map2.keys(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:2966:13
[INFO] [stdout]      |
[INFO] [stdout] 2966 |         let mut iterator = map3.keys(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:2989:13
[INFO] [stdout]      |
[INFO] [stdout] 2989 |         let mut iterator = map0.keys(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3002:13
[INFO] [stdout]      |
[INFO] [stdout] 3002 |         let mut iterator = map1.keys(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3015:13
[INFO] [stdout]      |
[INFO] [stdout] 3015 |         let mut iterator = map2.keys(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3028:13
[INFO] [stdout]      |
[INFO] [stdout] 3028 |         let mut iterator = map3.keys(Some(&100000), false);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_vpm") due to 42 previous errors; 5 warnings emitted
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:3126:13
[INFO] [stdout]      |
[INFO] [stdout] 3126 |         let mut iterator = map0.keys(None, true);
[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]     --> tests/test_b_plus_tree.rs:3139:13
[INFO] [stdout]      |
[INFO] [stdout] 3139 |         let mut iterator = map1.keys(None, true);
[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]     --> tests/test_b_plus_tree.rs:3152:13
[INFO] [stdout]      |
[INFO] [stdout] 3152 |         let mut iterator = map2.keys(None, true);
[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]     --> tests/test_b_plus_tree.rs:3165:13
[INFO] [stdout]      |
[INFO] [stdout] 3165 |         let mut iterator = map3.keys(None, true);
[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]     --> tests/test_b_plus_tree.rs:3188:13
[INFO] [stdout]      |
[INFO] [stdout] 3188 |         let mut iterator = map0.keys(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:3201:13
[INFO] [stdout]      |
[INFO] [stdout] 3201 |         let mut iterator = map1.keys(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:3214:13
[INFO] [stdout]      |
[INFO] [stdout] 3214 |         let mut iterator = map2.keys(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:3227:13
[INFO] [stdout]      |
[INFO] [stdout] 3227 |         let mut iterator = map3.keys(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:3250:13
[INFO] [stdout]      |
[INFO] [stdout] 3250 |         let mut iterator = map0.keys(Some(&1), true);
[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]     --> tests/test_b_plus_tree.rs:3263:13
[INFO] [stdout]      |
[INFO] [stdout] 3263 |         let mut iterator = map1.keys(Some(&10000), true);
[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]     --> tests/test_b_plus_tree.rs:3276:13
[INFO] [stdout]      |
[INFO] [stdout] 3276 |         let mut iterator = map2.keys(Some(&90000), true);
[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]     --> tests/test_b_plus_tree.rs:3289:13
[INFO] [stdout]      |
[INFO] [stdout] 3289 |         let mut iterator = map3.keys(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:3312:13
[INFO] [stdout]      |
[INFO] [stdout] 3312 |         let mut iterator = map0.keys(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:3325:13
[INFO] [stdout]      |
[INFO] [stdout] 3325 |         let mut iterator = map1.keys(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:3338:13
[INFO] [stdout]      |
[INFO] [stdout] 3338 |         let mut iterator = map2.keys(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:3351:13
[INFO] [stdout]      |
[INFO] [stdout] 3351 |         let mut iterator = map3.keys(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:3374:13
[INFO] [stdout]      |
[INFO] [stdout] 3374 |         let mut iterator = map0.keys(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:3387:13
[INFO] [stdout]      |
[INFO] [stdout] 3387 |         let mut iterator = map1.keys(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:3400:13
[INFO] [stdout]      |
[INFO] [stdout] 3400 |         let mut iterator = map2.keys(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:3413:13
[INFO] [stdout]      |
[INFO] [stdout] 3413 |         let mut iterator = map3.keys(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:3436:13
[INFO] [stdout]      |
[INFO] [stdout] 3436 |         let mut iterator = map0.keys(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:3449:13
[INFO] [stdout]      |
[INFO] [stdout] 3449 |         let mut iterator = map1.keys(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:3462:13
[INFO] [stdout]      |
[INFO] [stdout] 3462 |         let mut iterator = map2.keys(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:3475:13
[INFO] [stdout]      |
[INFO] [stdout] 3475 |         let mut iterator = map3.keys(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:3573:13
[INFO] [stdout]      |
[INFO] [stdout] 3573 |         let mut iterator = map0.values(None, false);
[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]     --> tests/test_b_plus_tree.rs:3587:13
[INFO] [stdout]      |
[INFO] [stdout] 3587 |         let mut iterator = map1.values(None, false);
[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]     --> tests/test_b_plus_tree.rs:3601:13
[INFO] [stdout]      |
[INFO] [stdout] 3601 |         let mut iterator = map2.values(None, false);
[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]     --> tests/test_b_plus_tree.rs:3615:13
[INFO] [stdout]      |
[INFO] [stdout] 3615 |         let mut iterator = map3.values(None, false);
[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]     --> tests/test_b_plus_tree.rs:3639:13
[INFO] [stdout]      |
[INFO] [stdout] 3639 |         let mut iterator = map0.values(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:3653:13
[INFO] [stdout]      |
[INFO] [stdout] 3653 |         let mut iterator = map1.values(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:3667:13
[INFO] [stdout]      |
[INFO] [stdout] 3667 |         let mut iterator = map2.values(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:3681:13
[INFO] [stdout]      |
[INFO] [stdout] 3681 |         let mut iterator = map3.values(Some(&0), false);
[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]     --> tests/test_b_plus_tree.rs:3705:13
[INFO] [stdout]      |
[INFO] [stdout] 3705 |         let mut iterator = map0.values(Some(&1), false);
[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]     --> tests/test_b_plus_tree.rs:3719:13
[INFO] [stdout]      |
[INFO] [stdout] 3719 |         let mut iterator = map1.values(Some(&10000), false);
[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]     --> tests/test_b_plus_tree.rs:3733:13
[INFO] [stdout]      |
[INFO] [stdout] 3733 |         let mut iterator = map2.values(Some(&90000), false);
[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]     --> tests/test_b_plus_tree.rs:3747:13
[INFO] [stdout]      |
[INFO] [stdout] 3747 |         let mut iterator = map3.values(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:3771:13
[INFO] [stdout]      |
[INFO] [stdout] 3771 |         let mut iterator = map0.values(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:3785:13
[INFO] [stdout]      |
[INFO] [stdout] 3785 |         let mut iterator = map1.values(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:3799:13
[INFO] [stdout]      |
[INFO] [stdout] 3799 |         let mut iterator = map2.values(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:3813:13
[INFO] [stdout]      |
[INFO] [stdout] 3813 |         let mut iterator = map3.values(Some(&99999), false);
[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]     --> tests/test_b_plus_tree.rs:3837:13
[INFO] [stdout]      |
[INFO] [stdout] 3837 |         let mut iterator = map0.values(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:3851:13
[INFO] [stdout]      |
[INFO] [stdout] 3851 |         let mut iterator = map1.values(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:3865:13
[INFO] [stdout]      |
[INFO] [stdout] 3865 |         let mut iterator = map2.values(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:3879:13
[INFO] [stdout]      |
[INFO] [stdout] 3879 |         let mut iterator = map3.values(Some(&-1), false);
[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]     --> tests/test_b_plus_tree.rs:3903:13
[INFO] [stdout]      |
[INFO] [stdout] 3903 |         let mut iterator = map0.values(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3917:13
[INFO] [stdout]      |
[INFO] [stdout] 3917 |         let mut iterator = map1.values(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3931:13
[INFO] [stdout]      |
[INFO] [stdout] 3931 |         let mut iterator = map2.values(Some(&100000), false);
[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]     --> tests/test_b_plus_tree.rs:3945:13
[INFO] [stdout]      |
[INFO] [stdout] 3945 |         let mut iterator = map3.values(Some(&100000), false);
[INFO] [stdout]      |             ----^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/vpm/page_manager.rs:7:41
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::io::{Error, Result, ErrorKind, Read};
[INFO] [stdout]   |                                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:364:26
[INFO] [stdout]     |
[INFO] [stdout] 364 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:365:26
[INFO] [stdout]     |
[INFO] [stdout] 365 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:366:26
[INFO] [stdout]     |
[INFO] [stdout] 366 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:464:26
[INFO] [stdout]     |
[INFO] [stdout] 464 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:465:26
[INFO] [stdout]     |
[INFO] [stdout] 465 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:692:13
[INFO] [stdout]     |
[INFO] [stdout] 692 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:853:9
[INFO] [stdout]     |
[INFO] [stdout] 853 |     let mut index = node.index(key);
[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/free_lock/b_plus_tree.rs:935:43
[INFO] [stdout]     |
[INFO] [stdout] 935 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[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/free_lock/b_plus_tree.rs:979:25
[INFO] [stdout]     |
[INFO] [stdout] 979 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[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/free_lock/b_plus_tree.rs:1054:29
[INFO] [stdout]      |
[INFO] [stdout] 1054 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[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]     --> tests/test_b_plus_tree.rs:4044:13
[INFO] [stdout]      |
[INFO] [stdout] 4044 |         let mut iterator = map0.values(None, true);
[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/free_lock/b_plus_tree.rs:1192:47
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                               ----^^^^^^^^
[INFO] [stdout]      |                                               |
[INFO] [stdout]      |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1192:62
[INFO] [stdout]      |
[INFO] [stdout] 1192 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]      |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4058:13
[INFO] [stdout]      |
[INFO] [stdout] 4058 |         let mut iterator = map1.values(None, true);
[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]     --> tests/test_b_plus_tree.rs:4072:13
[INFO] [stdout]      |
[INFO] [stdout] 4072 |         let mut iterator = map2.values(None, true);
[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]     --> tests/test_b_plus_tree.rs:4086:13
[INFO] [stdout]      |
[INFO] [stdout] 4086 |         let mut iterator = map3.values(None, true);
[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]     --> tests/test_b_plus_tree.rs:4110:13
[INFO] [stdout]      |
[INFO] [stdout] 4110 |         let mut iterator = map0.values(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:4124:13
[INFO] [stdout]      |
[INFO] [stdout] 4124 |         let mut iterator = map1.values(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:4138:13
[INFO] [stdout]      |
[INFO] [stdout] 4138 |         let mut iterator = map2.values(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:4152:13
[INFO] [stdout]      |
[INFO] [stdout] 4152 |         let mut iterator = map3.values(Some(&0), true);
[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]     --> tests/test_b_plus_tree.rs:4176:13
[INFO] [stdout]      |
[INFO] [stdout] 4176 |         let mut iterator = map0.values(Some(&1), true);
[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]     --> tests/test_b_plus_tree.rs:4190:13
[INFO] [stdout]      |
[INFO] [stdout] 4190 |         let mut iterator = map1.values(Some(&10000), true);
[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]     --> tests/test_b_plus_tree.rs:4204:13
[INFO] [stdout]      |
[INFO] [stdout] 4204 |         let mut iterator = map2.values(Some(&90000), true);
[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]     --> tests/test_b_plus_tree.rs:4218:13
[INFO] [stdout]      |
[INFO] [stdout] 4218 |         let mut iterator = map3.values(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:4242:13
[INFO] [stdout]      |
[INFO] [stdout] 4242 |         let mut iterator = map0.values(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:4256:13
[INFO] [stdout]      |
[INFO] [stdout] 4256 |         let mut iterator = map1.values(Some(&99999), true);
[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/free_lock/b_plus_tree.rs:1230:25
[INFO] [stdout]      |
[INFO] [stdout] 1230 |                         mut leaf: Arc<Leaf<K, V>>,
[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]     --> tests/test_b_plus_tree.rs:4270:13
[INFO] [stdout]      |
[INFO] [stdout] 4270 |         let mut iterator = map2.values(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:4284:13
[INFO] [stdout]      |
[INFO] [stdout] 4284 |         let mut iterator = map3.values(Some(&99999), true);
[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]     --> tests/test_b_plus_tree.rs:4308:13
[INFO] [stdout]      |
[INFO] [stdout] 4308 |         let mut iterator = map0.values(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:4322:13
[INFO] [stdout]      |
[INFO] [stdout] 4322 |         let mut iterator = map1.values(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:4336:13
[INFO] [stdout]      |
[INFO] [stdout] 4336 |         let mut iterator = map2.values(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:4350:13
[INFO] [stdout]      |
[INFO] [stdout] 4350 |         let mut iterator = map3.values(Some(&-1), true);
[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]     --> tests/test_b_plus_tree.rs:4374:13
[INFO] [stdout]      |
[INFO] [stdout] 4374 |         let mut iterator = map0.values(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:4388:13
[INFO] [stdout]      |
[INFO] [stdout] 4388 |         let mut iterator = map1.values(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:4402:13
[INFO] [stdout]      |
[INFO] [stdout] 4402 |         let mut iterator = map2.values(Some(&100000), true);
[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]     --> tests/test_b_plus_tree.rs:4416:13
[INFO] [stdout]      |
[INFO] [stdout] 4416 |         let mut iterator = map3.values(Some(&100000), true);
[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/free_lock/b_plus_tree.rs:1424:29
[INFO] [stdout]      |
[INFO] [stdout] 1424 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[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/free_lock/b_plus_tree.rs:1439:27
[INFO] [stdout]      |
[INFO] [stdout] 1439 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4923:17
[INFO] [stdout]      |
[INFO] [stdout] 4923 |                 start = index;
[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: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4910:17
[INFO] [stdout]      |
[INFO] [stdout] 4910 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4897:17
[INFO] [stdout]      |
[INFO] [stdout] 4897 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4884:17
[INFO] [stdout]      |
[INFO] [stdout] 4884 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4820:13
[INFO] [stdout]      |
[INFO] [stdout] 4820 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4825:21
[INFO] [stdout]      |
[INFO] [stdout] 4825 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4832:17
[INFO] [stdout]      |
[INFO] [stdout] 4832 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4803:13
[INFO] [stdout]      |
[INFO] [stdout] 4803 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4808:21
[INFO] [stdout]      |
[INFO] [stdout] 4808 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4815:17
[INFO] [stdout]      |
[INFO] [stdout] 4815 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4786:13
[INFO] [stdout]      |
[INFO] [stdout] 4786 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4791:21
[INFO] [stdout]      |
[INFO] [stdout] 4791 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4798:17
[INFO] [stdout]      |
[INFO] [stdout] 4798 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4769:13
[INFO] [stdout]      |
[INFO] [stdout] 4769 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4774:21
[INFO] [stdout]      |
[INFO] [stdout] 4774 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4781:17
[INFO] [stdout]      |
[INFO] [stdout] 4781 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4679:13
[INFO] [stdout]      |
[INFO] [stdout] 4679 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4684:21
[INFO] [stdout]      |
[INFO] [stdout] 4684 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4691:17
[INFO] [stdout]      |
[INFO] [stdout] 4691 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4662:13
[INFO] [stdout]      |
[INFO] [stdout] 4662 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4667:21
[INFO] [stdout]      |
[INFO] [stdout] 4667 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4674:17
[INFO] [stdout]      |
[INFO] [stdout] 4674 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4645:13
[INFO] [stdout]      |
[INFO] [stdout] 4645 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4650:21
[INFO] [stdout]      |
[INFO] [stdout] 4650 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4657:17
[INFO] [stdout]      |
[INFO] [stdout] 4657 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4628:13
[INFO] [stdout]      |
[INFO] [stdout] 4628 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4633:21
[INFO] [stdout]      |
[INFO] [stdout] 4633 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4640:17
[INFO] [stdout]      |
[INFO] [stdout] 4640 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4538:13
[INFO] [stdout]      |
[INFO] [stdout] 4538 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4543:21
[INFO] [stdout]      |
[INFO] [stdout] 4543 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4550:17
[INFO] [stdout]      |
[INFO] [stdout] 4550 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4521:13
[INFO] [stdout]      |
[INFO] [stdout] 4521 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4526:21
[INFO] [stdout]      |
[INFO] [stdout] 4526 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4533:17
[INFO] [stdout]      |
[INFO] [stdout] 4533 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4504:13
[INFO] [stdout]      |
[INFO] [stdout] 4504 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4509:21
[INFO] [stdout]      |
[INFO] [stdout] 4509 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4516:17
[INFO] [stdout]      |
[INFO] [stdout] 4516 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `count` is assigned to, but never used
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4487:13
[INFO] [stdout]      |
[INFO] [stdout] 4487 |         let mut count = 0;
[INFO] [stdout]      |             ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: consider using `_count` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `count` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4492:21
[INFO] [stdout]      |
[INFO] [stdout] 4492 |                     count += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `start` is never read
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:4499:17
[INFO] [stdout]      |
[INFO] [stdout] 4499 |                 start = index;
[INFO] [stdout]      |                 ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:869:41
[INFO] [stdout]     |
[INFO] [stdout] 819 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 869 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     tr.close();
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let _ = tr.close();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 82 |     tr.close();
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let _ = tr.close();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:183:5
[INFO] [stdout]     |
[INFO] [stdout] 183 |     tr.close();
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 183 |     let _ = tr.close();
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1029:28
[INFO] [stdout]      |
[INFO] [stdout] 1029 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]      |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/log_store/log_file.rs:1038:34
[INFO] [stdout]      |
[INFO] [stdout] 1038 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]      |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:458:105
[INFO] [stdout]     |
[INFO] [stdout] 458 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:237:24
[INFO] [stdout]     |
[INFO] [stdout] 237 |     fn is_freed(&self, location: &BlockLocation) -> bool {
[INFO] [stdout]     |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `location`
[INFO] [stdout]    --> src/devices/simple_device.rs:261:26
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn block_size(&self, location: &BlockLocation) -> usize {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_location`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:444:17
[INFO] [stdout]     |
[INFO] [stdout] 444 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut logger = self.clone();
[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/commit_logger.rs:350:17
[INFO] [stdout]     |
[INFO] [stdout] 350 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:317:34
[INFO] [stdout]     |
[INFO] [stdout] 317 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[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/commit_logger.rs:617:17
[INFO] [stdout]     |
[INFO] [stdout] 617 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[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/commit_logger.rs:577:38
[INFO] [stdout]     |
[INFO] [stdout] 577 |     fn start_replay_ext<B, F>(&self, mut callback: Arc<F>)
[INFO] [stdout]     |                                      ----^^^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1752:8
[INFO] [stdout]      |
[INFO] [stdout] 1736 | / impl<
[INFO] [stdout] 1737 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1738 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1739 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1752 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1807 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1824:5
[INFO] [stdout]      |
[INFO] [stdout] 1818 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1824 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2033:5
[INFO] [stdout]      |
[INFO] [stdout] 2032 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 2033 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2034 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2095:8
[INFO] [stdout]      |
[INFO] [stdout] 2047 | / impl<
[INFO] [stdout] 2048 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 2049 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 2050 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2095 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2105 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2247:5
[INFO] [stdout]      |
[INFO] [stdout] 2240 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2247 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 2248 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2320:5
[INFO] [stdout]      |
[INFO] [stdout] 2315 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2320 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2344:5
[INFO] [stdout]      |
[INFO] [stdout] 2339 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2344 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2416:5
[INFO] [stdout]      |
[INFO] [stdout] 2411 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2416 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2628:5
[INFO] [stdout]      |
[INFO] [stdout] 2623 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2628 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2893:5
[INFO] [stdout]      |
[INFO] [stdout] 2888 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2893 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3103:5
[INFO] [stdout]      |
[INFO] [stdout] 3098 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3103 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3369:5
[INFO] [stdout]      |
[INFO] [stdout] 3364 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3369 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3388:8
[INFO] [stdout]      |
[INFO] [stdout] 3383 | / impl<
[INFO] [stdout] 3384 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3385 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3386 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3387 |       // 构建手动提交对树的修改
[INFO] [stdout] 3388 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1470:4
[INFO] [stdout]      |
[INFO] [stdout] 1470 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1482:4
[INFO] [stdout]      |
[INFO] [stdout] 1482 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u32 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MIN_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const RESERVED_MIN_PAGE_UID: PageId = PageId(EMPTY_PAGE);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESERVED_MAX_PAGE_UID` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:41:7
[INFO] [stdout]    |
[INFO] [stdout] 41 | const RESERVED_MAX_PAGE_UID: PageId = PageId(u64::MAX as u128);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:76:7
[INFO] [stdout]    |
[INFO] [stdout] 76 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:332:5
[INFO] [stdout]     |
[INFO] [stdout] 323 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 332 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_table.rs:566:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- field in this struct
[INFO] [stdout] 566 |     rt:                             MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:166:5
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 166 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 167 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 168 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 169 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 170 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 171 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 172 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 173 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 174 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 175 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 176 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 178 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 180 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 182 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 184 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 185 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 186 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 187 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 188 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 189 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 190 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:87:13
[INFO] [stdout]    |
[INFO] [stdout] 87 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 87 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:771:17
[INFO] [stdout]     |
[INFO] [stdout] 771 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_copy_types)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 771 -                 drop(writable); //避免无法释放
[INFO] [stdout] 771 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a value that implements `Copy` does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:791:17
[INFO] [stdout]     |
[INFO] [stdout] 791 |                 drop(writable); //避免无法释放
[INFO] [stdout]     |                 ^^^^^--------^
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      argument has type `bool`
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 791 -                 drop(writable); //避免无法释放
[INFO] [stdout] 791 +                 let _ = writable; //避免无法释放
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:992:5
[INFO] [stdout]     |
[INFO] [stdout] 992 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 992 -     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout] 992 +     let _ = leaf_mut; //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1069:5
[INFO] [stdout]      |
[INFO] [stdout] 1069 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |     ^^^^^------------^
[INFO] [stdout]      |          |
[INFO] [stdout]      |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]      |
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]      |
[INFO] [stdout] 1069 -     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout] 1069 +     let _ = non_leaf_mut; //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:397:9
[INFO] [stdout]     |
[INFO] [stdout] 397 |         Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let _ = Box::into_raw(writable); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 557 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:629:9
[INFO] [stdout]     |
[INFO] [stdout] 629 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 629 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:701:9
[INFO] [stdout]     |
[INFO] [stdout] 701 |         Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 701 |         let _ = Box::into_raw(readable_box); //避免被提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:833:25
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 833 |                         let _ = Box::into_raw(async_file); //避免被释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:863:41
[INFO] [stdout]     |
[INFO] [stdout] 863 | ...                   Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 863 |                                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/log_store/log_file.rs:887:25
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 887 |                         let _ = Box::into_raw(async_file); //避免释放可写文件
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/log_store/log_file.rs:903:25
[INFO] [stdout]     |
[INFO] [stdout] 903 |     pub fn delay_commit(&self,
[INFO] [stdout]     |                         ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 906 |                         timeout: usize) -> BoxFuture<Result<()>> {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 906 |                         timeout: usize) -> BoxFuture<'_, Result<()>> {
[INFO] [stdout]     |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1032:13
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1032 |             let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1040:9
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1133:21
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1133 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1302:21
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1302 |                     let _ = Box::into_raw(readable_box); //避免被回收
[INFO] [stdout]      |                     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1594:13
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1594 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1612:13
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1612 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1696:13
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1696 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:1714:13
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 1714 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2200:13
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2200 |             let _ = Box::into_raw(readable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]     --> src/log_store/log_file.rs:2218:13
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]      |
[INFO] [stdout] 2218 |             let _ = Box::into_raw(writable); //避免被回收
[INFO] [stdout]      |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/vpm/page_manager.rs:575:9
[INFO] [stdout]     |
[INFO] [stdout] 575 | /         self.0.rt.spawn(async move {
[INFO] [stdout] 576 | |             loop {
[INFO] [stdout] 577 | |                 manager
[INFO] [stdout] 578 | |                     .0
[INFO] [stdout] ...   |
[INFO] [stdout] 595 | |         });
[INFO] [stdout]     | |__________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 575 |         let _ = self.0.rt.spawn(async move {
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:152:13
[INFO] [stdout]     |
[INFO] [stdout] 152 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 152 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_table.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |             Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 187 |             let _ = Box::into_raw(iterator); //还未迭代完成，则需要避免迭代器被提前释放
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 103 |         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:228:25
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 228 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Box::<T>::into_raw` that must be used
[INFO] [stdout]    --> src/vpm/page_cache.rs:231:25
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: losing the pointer will leak memory
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 231 |                         let _ = Box::into_raw(boxed); //避免提前释放
[INFO] [stdout]     |                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:304:20
[INFO] [stdout]     |
[INFO] [stdout] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation>;
[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] 304 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation>;
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:307:13
[INFO] [stdout]     |
[INFO] [stdout] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>>;
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 307 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>>;
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:310:14
[INFO] [stdout]     |
[INFO] [stdout] 310 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 313 |              option: WriteOption) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 313 |              option: WriteOption) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:316:19
[INFO] [stdout]     |
[INFO] [stdout] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool>;
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 316 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool>;
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:319:31
[INFO] [stdout]     |
[INFO] [stdout] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>>;
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 319 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>>;
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:322:20
[INFO] [stdout]     |
[INFO] [stdout] 322 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 323 |         -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 323 |         -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>>;
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/mod.rs:329:18
[INFO] [stdout]     |
[INFO] [stdout] 329 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>>;
[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] 329 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>>;
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:314:20
[INFO] [stdout]     |
[INFO] [stdout] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<BlockLocation> {
[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] 314 |     fn alloc_block(&self, size: usize) -> BoxFuture<'_, BlockLocation> {
[INFO] [stdout]     |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<Result<Self::Buf>> {
[INFO] [stdout]     |             ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 383 |     fn read(&self, location: &BlockLocation) -> BoxFuture<'_, Result<Self::Buf>> {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:418:14
[INFO] [stdout]     |
[INFO] [stdout] 418 |     fn write(&self,
[INFO] [stdout]     |              ^^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 421 |              _option: WriteOption) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 421 |              _option: WriteOption) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:466:19
[INFO] [stdout]     |
[INFO] [stdout] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<bool> {
[INFO] [stdout]     |                   ^^^^^ the lifetime is elided here   ^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 466 |     fn free_block(&self, location: &BlockLocation) -> BoxFuture<'_, bool> {
[INFO] [stdout]     |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:479:31
[INFO] [stdout]     |
[INFO] [stdout] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<Result<usize>> {
[INFO] [stdout]     |                               ^^^^^ the lifetime is elided here    ^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 479 |     fn collect_alloced_blocks(&self, alloced: &[BlockLocation]) -> BoxFuture<'_, Result<usize>> {
[INFO] [stdout]     |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:550:20
[INFO] [stdout]     |
[INFO] [stdout] 550 |     fn blocks_iter(&self)
[INFO] [stdout]     |                    ^^^^^ the lifetime is elided here
[INFO] [stdout] 551 |                    -> BoxFuture<Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden 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] 551 |                    -> BoxFuture<'_, Option<Box<dyn DoubleEndedIterator<Item = BlockLocation>>>> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/devices/simple_device.rs:562:18
[INFO] [stdout]     |
[INFO] [stdout] 562 |     fn on_commit(&self) -> BoxFuture<Result<Box<dyn CommitEvent>>> {
[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] 562 |     fn on_commit(&self) -> BoxFuture<'_, Result<Box<dyn CommitEvent>>> {
[INFO] [stdout]     |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:570:9
[INFO] [stdout]     |
[INFO] [stdout] 570 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 570 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:924:9
[INFO] [stdout]     |
[INFO] [stdout] 924 |         (self.callback)(None);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 924 |         let _ = (self.callback)(None);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "0b4eafd30d6795651cea8bcbb6552b3f0d53eea77b47e46c67266c775adafdd9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0b4eafd30d6795651cea8bcbb6552b3f0d53eea77b47e46c67266c775adafdd9", kill_on_drop: false }`
[INFO] [stdout] 0b4eafd30d6795651cea8bcbb6552b3f0d53eea77b47e46c67266c775adafdd9
