[INFO] cloning repository https://github.com/gqinghua/flysolosdb
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gqinghua/flysolosdb" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgqinghua%2Fflysolosdb", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgqinghua%2Fflysolosdb'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ed4389b3f557641a5502de393621ca4a5afe0f33
[INFO] checking gqinghua/flysolosdb/ed4389b3f557641a5502de393621ca4a5afe0f33 against master#217cb73577ed6f30a2005dd75bab01d23ec4cd60 for pr-148939
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgqinghua%2Fflysolosdb" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/gqinghua/flysolosdb
[INFO] finished tweaking git repo https://github.com/gqinghua/flysolosdb
[INFO] tweaked toml for git repo https://github.com/gqinghua/flysolosdb written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gqinghua/flysolosdb on toolchain 217cb73577ed6f30a2005dd75bab01d23ec4cd60
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+217cb73577ed6f30a2005dd75bab01d23ec4cd60" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+217cb73577ed6f30a2005dd75bab01d23ec4cd60" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 138 packages to latest compatible versions
[INFO] [stderr]       Adding moka v0.10.4 (available: v0.12.11)
[INFO] [stderr]       Adding ouroboros v0.16.0 (available: v0.18.5)
[INFO] [stderr]       Adding rand v0.8.5 (available: v0.9.2)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+217cb73577ed6f30a2005dd75bab01d23ec4cd60" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded bytecount v0.6.9
[INFO] [stderr]   Downloaded quanta v0.11.1
[INFO] [stderr]   Downloaded clap v4.5.53
[INFO] [stderr]   Downloaded crossbeam-skiplist v0.1.3
[INFO] [stderr]   Downloaded ouroboros v0.16.0
[INFO] [stderr]   Downloaded ouroboros_macro v0.16.0
[INFO] [stderr]   Downloaded clap_builder v4.5.53
[INFO] [stderr]   Downloaded moka v0.10.4
[INFO] [stderr]   Downloaded farmhash v1.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+217cb73577ed6f30a2005dd75bab01d23ec4cd60" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c4c105d0afe6b1ea70bd7b2bf48929cc21d57303c65c7c4727879e504950a9ed
[INFO] running `Command { std: "docker" "start" "-a" "c4c105d0afe6b1ea70bd7b2bf48929cc21d57303c65c7c4727879e504950a9ed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c4c105d0afe6b1ea70bd7b2bf48929cc21d57303c65c7c4727879e504950a9ed", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c4c105d0afe6b1ea70bd7b2bf48929cc21d57303c65c7c4727879e504950a9ed", kill_on_drop: false }`
[INFO] [stdout] c4c105d0afe6b1ea70bd7b2bf48929cc21d57303c65c7c4727879e504950a9ed
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+217cb73577ed6f30a2005dd75bab01d23ec4cd60" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f34602c5f43473fb2844f0f7b43ce5f205b16ce220988dc85ca59a6b102217ec
[INFO] running `Command { std: "docker" "start" "-a" "f34602c5f43473fb2844f0f7b43ce5f205b16ce220988dc85ca59a6b102217ec", kill_on_drop: false }`
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.2
[INFO] [stderr]     Checking anstyle-query v1.1.5
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking raw-cpuid v10.7.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling moka v0.10.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking tagptr v0.2.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking scheduled-thread-pool v0.2.7
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking triomphe v0.1.15
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.20
[INFO] [stderr]     Checking quanta v0.11.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]     Checking crossbeam-skiplist v0.1.3
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking farmhash v1.1.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling ouroboros_macro v0.16.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking ouroboros v0.16.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking serverCopy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/compact.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `anyhow` and `bail`
[INFO] [stdout]  --> src/iterators.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{anyhow, bail, Result};
[INFO] [stdout]   |              ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyVec`, `SIZEOF_U16`, and `two_merge_iterator::TwoMergeIterator`
[INFO] [stdout]   --> src/lsm_storage.rs:18:35
[INFO] [stdout]    |
[INFO] [stdout] 18 | ...rator, SIZEOF_U16}, compact::{
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 | ...tIterator, StorageIterator}, key::{KeySlice, KeyVec}, sstable::{FileObject, SsTable}, two_merge_iterator::TwoMergeIterator, MemTable
[INFO] [stdout]    |                                                 ^^^^^^                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `bail`
[INFO] [stdout]  --> src/minilsm.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |              ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/memtable.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::path::{self, Path};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt`, `layer::SubscriberExt`, and `util::SubscriberInitExt`
[INFO] [stdout]   --> src/memtable.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt};
[INFO] [stdout]    |                          ^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::tempdir`
[INFO] [stdout]   --> src/memtable.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tempfile::tempdir;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]   --> src/main.rs:12:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Bytes`
[INFO] [stdout]   --> src/main.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use bytes::{BufMut, Bytes};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_skiplist::SkipMap`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crossbeam_skiplist::SkipMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokenize::parse`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use tokenize::parse;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `OpenOptions`
[INFO] [stdout]   --> src/main.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::fs::{File, OpenOptions};
[INFO] [stdout]    |               ^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hasher`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::hash::Hasher;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufWriter` and `Write`
[INFO] [stdout]   --> src/main.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{BufWriter, Read, Write};
[INFO] [stdout]    |               ^^^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Path` and `self`
[INFO] [stdout]   --> src/main.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::path::{self, Path};
[INFO] [stdout]    |                 ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tokenize::tokenize as tk`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::tokenize::tokenize as tk;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::bail`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use anyhow::bail;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Buf`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use bytes::Buf;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::Mutex`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use parking_lot::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicUsize`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use std::sync::atomic::AtomicUsize;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/compact.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `anyhow` and `bail`
[INFO] [stdout]  --> src/iterators.rs:2:14
[INFO] [stdout]   |
[INFO] [stdout] 2 | use anyhow::{anyhow, bail, Result};
[INFO] [stdout]   |              ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `KeyVec`, `SIZEOF_U16`, and `two_merge_iterator::TwoMergeIterator`
[INFO] [stdout]   --> src/lsm_storage.rs:18:35
[INFO] [stdout]    |
[INFO] [stdout] 18 | ...rator, SIZEOF_U16}, compact::{
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 | ...tIterator, StorageIterator}, key::{KeySlice, KeyVec}, sstable::{FileObject, SsTable}, two_merge_iterator::TwoMergeIterator, MemTable
[INFO] [stdout]    |                                                 ^^^^^^                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `bail`
[INFO] [stdout]  --> src/minilsm.rs:4:14
[INFO] [stdout]   |
[INFO] [stdout] 4 | use anyhow::{bail, Context, Result};
[INFO] [stdout]   |              ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/memtable.rs:10:17
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::path::{self, Path};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fmt`, `layer::SubscriberExt`, and `util::SubscriberInitExt`
[INFO] [stdout]   --> src/memtable.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 | use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt};
[INFO] [stdout]    |                          ^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::tempdir`
[INFO] [stdout]   --> src/memtable.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tempfile::tempdir;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `Result`
[INFO] [stdout]   --> src/main.rs:12:14
[INFO] [stdout]    |
[INFO] [stdout] 12 | use anyhow::{Context, Result};
[INFO] [stdout]    |              ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Bytes`
[INFO] [stdout]   --> src/main.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | use bytes::{BufMut, Bytes};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_skiplist::SkipMap`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crossbeam_skiplist::SkipMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `OpenOptions`
[INFO] [stdout]   --> src/main.rs:19:15
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::fs::{File, OpenOptions};
[INFO] [stdout]    |               ^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hasher`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::hash::Hasher;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufWriter` and `Write`
[INFO] [stdout]   --> src/main.rs:21:15
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{BufWriter, Read, Write};
[INFO] [stdout]    |               ^^^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Path` and `self`
[INFO] [stdout]   --> src/main.rs:22:17
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::path::{self, Path};
[INFO] [stdout]    |                 ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow::bail`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use anyhow::bail;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bytes::Buf`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use bytes::Buf;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::Mutex`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use parking_lot::Mutex;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicUsize`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use std::sync::atomic::AtomicUsize;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufMut`
[INFO] [stdout]   --> src/main.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use bytes::{BufMut, Bytes};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]   --> src/main.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{BufWriter, Read, Write};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticker`
[INFO] [stdout]   --> src/compact.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let ticker = crossbeam_channel::tick(Duration::from_millis(50));
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticker`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this`
[INFO] [stdout]   --> src/compact.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let this = self.clone();
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_this`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticker`
[INFO] [stdout]    --> src/compact.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let ticker = crossbeam_channel::tick(Duration::from_millis(50));
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this`
[INFO] [stdout]    --> src/compact.rs:101:13
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let this = self.clone();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_this`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_data`
[INFO] [stdout]    --> src/lsm_storage.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let clone_data = memtable.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l0_iter`
[INFO] [stdout]    --> src/lsm_storage.rs:428:13
[INFO] [stdout]     |
[INFO] [stdout] 428 |         let l0_iter = MergeIterator::create(l0_iters);
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_l0_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/lsm_storage.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let text: &str = "a.txt";
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `raw_bloom`
[INFO] [stdout]   --> src/sstable.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let raw_bloom = file.read(bloom_offset, len - 4 - bloom_offset)?;
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_raw_bloom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sstable.rs:186:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let mut data = vec![0; len as usize];
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/sstable.rs:185:24
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn read(&self, offset: u64, len: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/main.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let dir = tempdir().unwrap();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/main.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let path = r"E:\tmp\a";
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `some_function` is never used
[INFO] [stdout]    --> src/main.rs:117:4
[INFO] [stdout]     |
[INFO] [stdout] 117 | fn some_function(num: i32) -> i32 {
[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 `0` is never read
[INFO] [stdout]   --> src/compact.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Leveled(LeveledCompactionController),
[INFO] [stdout]    |     ------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 29 -     Leveled(LeveledCompactionController),
[INFO] [stdout] 29 +     Leveled(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/compact.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Tiered(TieredCompactionController),
[INFO] [stdout]    |     ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 -     Tiered(TieredCompactionController),
[INFO] [stdout] 30 +     Tiered(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/compact.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Simple(SimpleLeveledCompactionController),
[INFO] [stdout]    |     ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 31 -     Simple(SimpleLeveledCompactionController),
[INFO] [stdout] 31 +     Simple(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct LeveledCompactionController {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] 45 |     options: LeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct TieredCompactionController {
[INFO] [stdout]    |            -------------------------- field in this struct
[INFO] [stdout] 54 |     options: TieredCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct SimpleLeveledCompactionController {
[INFO] [stdout]    |            --------------------------------- field in this struct
[INFO] [stdout] 63 |     options: SimpleLeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_cache` and `compaction_controller` are never read
[INFO] [stdout]   --> src/lsm_storage.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub(crate) struct LsmStorageInner {
[INFO] [stdout]    |                   --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub(crate) block_cache: Arc<BlockCache>,
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) compaction_controller: CompactionController,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete` and `sync_dir` are never used
[INFO] [stdout]    --> src/lsm_storage.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 270 |        pub fn delete(&self, key: &[u8]) -> Result<()> {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub(super) fn sync_dir(&self) -> Result<()> {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `iters` and `current` are never read
[INFO] [stdout]    --> src/lsm_storage.rs:506:5
[INFO] [stdout]     |
[INFO] [stdout] 505 | pub struct MergeIterator<I: StorageIterator> {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 506 |     iters: BinaryHeap<HeapWrapper<I>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 507 |     current: Option<HeapWrapper<I>>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/sstable.rs:182:23
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct FileObject(Option<File>, u64);
[INFO] [stdout]     |            ---------- ^^^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout]     |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 182 - pub struct FileObject(Option<File>, u64);
[INFO] [stdout] 182 + pub struct FileObject((), u64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `inner`, `flush_thread`, and `compaction_thread` are never read
[INFO] [stdout]   --> src/minilsm.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct MiniLsm {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 10 |     pub(crate) inner: Arc<LsmStorageInner>,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     flush_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     compaction_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/block.rs:111:16
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn key(&self) -> KeySlice {
[INFO] [stdout]     |                ^^^^^     ^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/iterators.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn key(&self) -> KeySlice {
[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] 94 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/key.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn as_key_slice(&self) -> KeySlice {
[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] 57 |     pub fn as_key_slice(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/key.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn as_key_slice(&self) -> KeySlice {
[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] 80 |     pub fn as_key_slice(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/lsm_storage.rs:482:12
[INFO] [stdout]     |
[INFO] [stdout] 482 |     fn key(&self) -> KeySlice {
[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] 482 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/memtable.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 |     fn key(&self) -> KeySlice {
[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] 221 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]   --> src/main.rs:21:26
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::io::{BufWriter, Read, Write};
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufMut`
[INFO] [stdout]   --> src/main.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use bytes::{BufMut, Bytes};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticker`
[INFO] [stdout]   --> src/compact.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let ticker = crossbeam_channel::tick(Duration::from_millis(50));
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticker`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this`
[INFO] [stdout]   --> src/compact.rs:81:17
[INFO] [stdout]    |
[INFO] [stdout] 81 |             let this = self.clone();
[INFO] [stdout]    |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_this`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ticker`
[INFO] [stdout]    --> src/compact.rs:103:17
[INFO] [stdout]     |
[INFO] [stdout] 103 |             let ticker = crossbeam_channel::tick(Duration::from_millis(50));
[INFO] [stdout]     |                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ticker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `this`
[INFO] [stdout]    --> src/compact.rs:101:13
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let this = self.clone();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_this`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `clone_data`
[INFO] [stdout]    --> src/lsm_storage.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let clone_data = memtable.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_clone_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l0_iter`
[INFO] [stdout]    --> src/lsm_storage.rs:428:13
[INFO] [stdout]     |
[INFO] [stdout] 428 |         let l0_iter = MergeIterator::create(l0_iters);
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_l0_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `text`
[INFO] [stdout]    --> src/lsm_storage.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let text: &str = "a.txt";
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `raw_bloom`
[INFO] [stdout]   --> src/sstable.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let raw_bloom = file.read(bloom_offset, len - 4 - bloom_offset)?;
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_raw_bloom`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sstable.rs:186:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |         let mut data = vec![0; len as usize];
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/sstable.rs:185:24
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn read(&self, offset: u64, len: u64) -> Result<Vec<u8>> {
[INFO] [stdout]     |                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/main.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     let dir = tempdir().unwrap();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/main.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let path = r"E:\tmp\a";
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/compact.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |     Leveled(LeveledCompactionController),
[INFO] [stdout]    |     ------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 29 -     Leveled(LeveledCompactionController),
[INFO] [stdout] 29 +     Leveled(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/compact.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 |     Tiered(TieredCompactionController),
[INFO] [stdout]    |     ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 30 -     Tiered(TieredCompactionController),
[INFO] [stdout] 30 +     Tiered(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/compact.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 |     Simple(SimpleLeveledCompactionController),
[INFO] [stdout]    |     ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 31 -     Simple(SimpleLeveledCompactionController),
[INFO] [stdout] 31 +     Simple(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct LeveledCompactionController {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] 45 |     options: LeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct TieredCompactionController {
[INFO] [stdout]    |            -------------------------- field in this struct
[INFO] [stdout] 54 |     options: TieredCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> src/compact.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct SimpleLeveledCompactionController {
[INFO] [stdout]    |            --------------------------------- field in this struct
[INFO] [stdout] 63 |     options: SimpleLeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_cache` and `compaction_controller` are never read
[INFO] [stdout]   --> src/lsm_storage.rs:33:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub(crate) struct LsmStorageInner {
[INFO] [stdout]    |                   --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub(crate) block_cache: Arc<BlockCache>,
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub(crate) compaction_controller: CompactionController,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `delete` and `sync_dir` are never used
[INFO] [stdout]    --> src/lsm_storage.rs:270:15
[INFO] [stdout]     |
[INFO] [stdout] 123 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 270 |        pub fn delete(&self, key: &[u8]) -> Result<()> {
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub(super) fn sync_dir(&self) -> Result<()> {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `iters` and `current` are never read
[INFO] [stdout]    --> src/lsm_storage.rs:506:5
[INFO] [stdout]     |
[INFO] [stdout] 505 | pub struct MergeIterator<I: StorageIterator> {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 506 |     iters: BinaryHeap<HeapWrapper<I>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 507 |     current: Option<HeapWrapper<I>>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/sstable.rs:182:23
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct FileObject(Option<File>, u64);
[INFO] [stdout]     |            ---------- ^^^^^^^^^^^^
[INFO] [stdout]     |            |
[INFO] [stdout]     |            field in this struct
[INFO] [stdout]     |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 182 - pub struct FileObject(Option<File>, u64);
[INFO] [stdout] 182 + pub struct FileObject((), u64);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `inner`, `flush_thread`, and `compaction_thread` are never read
[INFO] [stdout]   --> src/minilsm.rs:10:16
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct MiniLsm {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 10 |     pub(crate) inner: Arc<LsmStorageInner>,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     flush_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     compaction_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/block.rs:111:16
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn key(&self) -> KeySlice {
[INFO] [stdout]     |                ^^^^^     ^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                |
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/iterators.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 |     fn key(&self) -> KeySlice {
[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] 94 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/key.rs:57:25
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn as_key_slice(&self) -> KeySlice {
[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] 57 |     pub fn as_key_slice(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/key.rs:80:25
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn as_key_slice(&self) -> KeySlice {
[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] 80 |     pub fn as_key_slice(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/lsm_storage.rs:482:12
[INFO] [stdout]     |
[INFO] [stdout] 482 |     fn key(&self) -> KeySlice {
[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] 482 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/memtable.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 |     fn key(&self) -> KeySlice {
[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] 221 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.23s
[INFO] running `Command { std: "docker" "inspect" "f34602c5f43473fb2844f0f7b43ce5f205b16ce220988dc85ca59a6b102217ec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f34602c5f43473fb2844f0f7b43ce5f205b16ce220988dc85ca59a6b102217ec", kill_on_drop: false }`
[INFO] [stdout] f34602c5f43473fb2844f0f7b43ce5f205b16ce220988dc85ca59a6b102217ec
