[INFO] cloning repository https://github.com/daprabowo/mini-lsm-trees
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/daprabowo/mini-lsm-trees" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaprabowo%2Fmini-lsm-trees", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaprabowo%2Fmini-lsm-trees'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d63798caa9e9fc82421061c359a9da7f50f403af
[INFO] checking daprabowo/mini-lsm-trees against 4fcf39725a9c99bd495d8c73af83628a256ff9a9 for pr-162233-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaprabowo%2Fmini-lsm-trees" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-3-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/daprabowo/mini-lsm-trees
[INFO] finished tweaking git repo https://github.com/daprabowo/mini-lsm-trees
[INFO] tweaked toml for git repo https://github.com/daprabowo/mini-lsm-trees written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/daprabowo/mini-lsm-trees on toolchain 4fcf39725a9c99bd495d8c73af83628a256ff9a9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4fcf39725a9c99bd495d8c73af83628a256ff9a9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/daprabowo/mini-lsm-trees 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" "+4fcf39725a9c99bd495d8c73af83628a256ff9a9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> xtask/Cargo.toml:6:17
[INFO] [stderr]   |
[INFO] [stderr] 6 | homepage      = { workspace = true }
[INFO] [stderr]   |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 7 | keywords      = { workspace = true }
[INFO] [stderr] 8 | repository    = { workspace = true }
[INFO] [stderr]   |                 --------------------
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `mini-lsm-xtask` (manifest) generated 1 warning
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded duct v1.1.1
[INFO] [stderr]   Downloaded sigchld v0.2.4
[INFO] [stderr]   Downloaded os_pipe v1.2.3
[INFO] [stderr]   Downloaded shared_thread v0.2.0
[INFO] [stderr]   Downloaded shared_child v1.1.1
[INFO] [stderr]   Downloaded endian-type v0.2.0
[INFO] [stderr]   Downloaded nibble_vec v0.1.0
[INFO] [stderr]   Downloaded ouroboros v0.18.5
[INFO] [stderr]   Downloaded tagptr v0.2.0
[INFO] [stderr]   Downloaded ouroboros_macro v0.18.5
[INFO] [stderr]   Downloaded clap v4.6.5
[INFO] [stderr]   Downloaded crossbeam-skiplist v0.1.3
[INFO] [stderr]   Downloaded clap_builder v4.6.5
[INFO] [stderr]   Downloaded moka v0.12.15
[INFO] [stderr]   Downloaded rustyline v18.0.1
[INFO] [stderr]   Downloaded radix_trie v0.3.0
[INFO] [stderr]   Downloaded farmhash v1.1.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879
[INFO] running `Command { std: "docker" "start" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879" "/opt/rustwide/cargo-home/bin/cargo" "+4fcf39725a9c99bd495d8c73af83628a256ff9a9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879" "/opt/rustwide/cargo-home/bin/cargo" "+4fcf39725a9c99bd495d8c73af83628a256ff9a9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> xtask/Cargo.toml:6:17
[INFO] [stderr]   |
[INFO] [stderr] 6 | homepage      = { workspace = true }
[INFO] [stderr]   |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 7 | keywords      = { workspace = true }
[INFO] [stderr] 8 | repository    = { workspace = true }
[INFO] [stderr]   |                 --------------------
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::redundant_homepage` is set to `warn` by default
[INFO] [stderr] help: consider removing `package.homepage`
[INFO] [stderr] warning: `mini-lsm-xtask` (manifest) generated 1 warning
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking colorchoice v1.0.5
[INFO] [stderr]     Checking anstyle v1.0.14
[INFO] [stderr]     Checking anstyle-parse v1.0.0
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling cfg_aliases v0.2.2
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]     Checking clap_lex v1.1.0
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]     Checking shared_thread v0.2.0
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking cpufeatures v0.3.0
[INFO] [stderr]     Checking endian-type v0.2.0
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking radix_trie v0.3.0
[INFO] [stderr]     Checking chacha20 v0.10.1
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking clap_builder v4.6.5
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]     Checking aliasable v0.1.3
[INFO] [stderr]     Checking tagptr v0.2.0
[INFO] [stderr]     Checking unicode-segmentation v1.13.3
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking itoa v1.0.18
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]     Checking farmhash v1.1.5
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]     Checking fastrand v2.5.0
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]     Checking crossbeam-skiplist v0.1.3
[INFO] [stderr]     Checking arc-swap v1.9.2
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking os_pipe v1.2.3
[INFO] [stderr]     Checking console v0.16.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking rand v0.10.2
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking sigchld v0.2.4
[INFO] [stderr]     Checking shared_child v1.1.1
[INFO] [stderr]     Checking duct v1.1.1
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking moka v0.12.15
[INFO] [stderr]     Checking rustyline v18.0.1
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling ouroboros_macro v0.18.5
[INFO] [stderr]     Checking ouroboros v0.18.5
[INFO] [stderr]     Checking clap v4.6.5
[INFO] [stderr]     Checking mini-lsm-xtask v0.1.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]     Checking mini-lsm v0.1.0 (/opt/rustwide/workdir/mini-lsm)
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> mini-lsm/src/key.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::{Buf, Bytes};
[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: `map_bound`
[INFO] [stdout]   --> mini-lsm/src/lsm_storage.rs:22:45
[INFO] [stdout]    |
[INFO] [stdout] 22 |     mem_table::{MemTable, MemTableIterator, map_bound},
[INFO] [stdout]    |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `anyhow` and `bail`
[INFO] [stdout]   --> mini-lsm/src/mem_table.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use anyhow::{Result, anyhow, bail};
[INFO] [stdout]    |                      ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Bytes`
[INFO] [stdout]  --> mini-lsm/src/table/builder.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use bytes::{BufMut, Bytes};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> mini-lsm/src/tests/week1_day3.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use bytes::{Buf, Bytes};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> mini-lsm/src/key.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use bytes::{Buf, Bytes};
[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: `map_bound`
[INFO] [stdout]   --> mini-lsm/src/lsm_storage.rs:22:45
[INFO] [stdout]    |
[INFO] [stdout] 22 |     mem_table::{MemTable, MemTableIterator, map_bound},
[INFO] [stdout]    |                                             ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `anyhow` and `bail`
[INFO] [stdout]   --> mini-lsm/src/mem_table.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout] 10 | use anyhow::{Result, anyhow, bail};
[INFO] [stdout]    |                      ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Bytes`
[INFO] [stdout]  --> mini-lsm/src/table/builder.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use bytes::{BufMut, Bytes};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `std::u16`: all constants in this module replaced by associated constants on the type
[INFO] [stdout]  --> mini-lsm/src/block/mod.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{sync::Arc, u16};
[INFO] [stdout]   |                      ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated module `std::u16`: all constants in this module replaced by associated constants on the type
[INFO] [stdout]  --> mini-lsm/src/block/mod.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::{sync::Arc, u16};
[INFO] [stdout]   |                      ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RangeBounds`
[INFO] [stdout]  --> mini-lsm/src/lsm_storage.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Bound, RangeBounds},
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sstables`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn create_and_seek_to_first(sstables: Vec<Arc<SsTable>>) -> Result<Self> {
[INFO] [stdout]    |                                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sstables`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sstables`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn create_and_seek_to_key(sstables: Vec<Arc<SsTable>>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sstables`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:24:64
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn create_and_seek_to_key(sstables: Vec<Arc<SsTable>>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                                                ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn create(lhs: L, rhs: R) -> Result<Self> {
[INFO] [stdout]    |                   ^^^ help: if this is intentional, prefix it with an underscore: `_lhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn create(lhs: L, rhs: R) -> Result<Self> {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_rhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RangeBounds`
[INFO] [stdout]  --> mini-lsm/src/lsm_storage.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Bound, RangeBounds},
[INFO] [stdout]   |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> mini-lsm/src/mem_table.rs:99:29
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn put_batch(&self, data: &[(KeySlice, &[u8])]) -> Result<()> {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `builder`
[INFO] [stdout]    --> mini-lsm/src/mem_table.rs:121:25
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn flush(&self, builder: &mut SsTableBuilder) -> Result<()> {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_builder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:29:23
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn get(&self, key: &[u8]) -> Result<Option<Bytes>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:33:23
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn put(&self, key: &[u8]) {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn delete(&self, key: &[u8]) {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lower`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:41:24
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn scan(&self, lower: Bound<&[u8]>, upper: Bound<&[u8]>) -> Result<TxnIterator> {
[INFO] [stdout]    |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_lower`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:41:45
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn scan(&self, lower: Bound<&[u8]>, upper: Bound<&[u8]>) -> Result<TxnIterator> {
[INFO] [stdout]    |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:45:26
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn commit(&self, key: &[u8]) -> Result<()> {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `txn`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |         txn: Arc<Transaction>,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_txn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         iter: TwoMergeIterator<TxnLocalIterator, FusedIterator<LsmIterator>>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> mini-lsm/src/mvcc/watermark.rs:20:34
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn add_reader(&mut self, ts: u64) {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> mini-lsm/src/mvcc/watermark.rs:24:37
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn remove_reader(&mut self, ts: u64) {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner`
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:53:27
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `serializable`
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:53:56
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_serializable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nbits`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let nbits = nbytes * 8;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_nbits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nbits`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |             let nbits = self.filter.bit_len();
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_nbits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |             let delta = h.rotate_left(15);
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `table`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:17:37
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn create_and_seek_to_first(table: Arc<SsTable>) -> Result<Self> {
[INFO] [stdout]    |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_table`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `table`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn create_and_seek_to_key(table: Arc<SsTable>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_table`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:27:56
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn create_and_seek_to_key(table: Arc<SsTable>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                                        ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:32:35
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn seek_to_key(&mut self, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_key_len`
[INFO] [stdout]   --> mini-lsm/src/table/mod.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let last_key_len = buf.get_u16() as usize;
[INFO] [stdout]    |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_key_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_cache`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_cache`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:66
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_idx`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:171:30
[INFO] [stdout]     |
[INFO] [stdout] 171 |     pub fn read_block(&self, block_idx: usize) -> Result<Arc<Block>> {
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_idx`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:176:37
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub fn read_block_cached(&self, block_idx: usize) -> Result<Arc<Block>> {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:181:34
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn find_block_idx(&self, key: KeySlice) -> usize {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compact_to_bottom_level` is never used
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl CompactionTask {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 33 |     fn compact_to_bottom_level(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |     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] 44 -     Leveled(LeveledCompactionController),
[INFO] [stdout] 44 +     Leveled(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |     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] 45 -     Tiered(TieredCompactionController),
[INFO] [stdout] 45 +     Tiered(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     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] 46 -     Simple(SimpleLeveledCompactionController),
[INFO] [stdout] 46 +     Simple(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_compaction_task` and `apply_compaction_result` are never used
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl CompactionController {
[INFO] [stdout]    | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn generate_compaction_task(&self, snapshot: &LsmStorageState) -> Option<CompactionTask> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn apply_compaction_result(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flush_to_l0` is never used
[INFO] [stdout]    --> mini-lsm/src/compact/mod.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl CompactionController {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 101 |     pub fn flush_to_l0(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compact` is never used
[INFO] [stdout]    --> mini-lsm/src/compact/mod.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 123 |     fn compact(&self, _task: &CompactionTask) -> Result<Vec<Arc<SsTable>>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/leveled.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct LeveledCompactionController {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] 24 |     options: LeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_overlapping_ssts` is never used
[INFO] [stdout]   --> mini-lsm/src/compact/leveled.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl LeveledCompactionController {
[INFO] [stdout]    | -------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn find_overlapping_ssts(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/simple_leveled.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct SimpleLeveledCompactionController {
[INFO] [stdout]    |            --------------------------------- field in this struct
[INFO] [stdout] 23 |     options: SimpleLeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/tiered.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct TieredCompactionController {
[INFO] [stdout]    |            -------------------------- field in this struct
[INFO] [stdout] 21 |     options: TieredCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current`, `next_sst_idx`, and `sstables` are never read
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SstConcatIterator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 14 |     current: Option<SsTableIterator>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 15 |     next_sst_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 16 |     sstables: Vec<Arc<SsTable>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lhs` and `rhs` are never read
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct TwoMergeIterator<L, R>
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     lhs: L,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     rhs: R,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_cache`, `manifest`, `mvcc`, and `compaction_controller` are never read
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:128:16
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) struct LsmStorageInner {
[INFO] [stdout]     |                   --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub(crate) block_cache: Arc<BlockCache>,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub(crate) manifest: Option<Manifest>,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 132 |     pub(crate) mvcc: Option<LsmMvccInner>,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 133 |     pub(crate) compaction_controller: CompactionController,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `mvcc`, `sst_path_static`, `sst_path`, and `sync_dir` are never used
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn mvcc(&self) -> &LsmMvccInner {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub(crate) fn sst_path_static<P>(path: P, id: usize) -> PathBuf
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub(crate) fn sst_path(&self, id: usize) -> PathBuf {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub(super) fn sync_dir(&self) -> Result<()> {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compaction_thread` and `flush_thread` are never read
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:324:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub struct MiniLsm {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 324 |     compaction_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     flush_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file` is never read
[INFO] [stdout]   --> mini-lsm/src/manifest.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Manifest {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 10 |     file: Arc<Mutex<File>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key_hashes`, `read_ts`, and `commit_ts` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) struct CommittedTxnData {
[INFO] [stdout]    |                   ---------------- fields in this struct
[INFO] [stdout] 17 |     pub(crate) key_hashes: HashSet<u32>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 18 |     pub(crate) read_ts: u64,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 19 |     pub(crate) commit_ts: u64,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `write_lock`, `commit_lock`, `ts`, and `committed_txns` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) struct LsmMvccInner {
[INFO] [stdout]    |                   ------------ fields in this struct
[INFO] [stdout] 23 |     pub(crate) write_lock: Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 24 |     pub(crate) commit_lock: Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub(crate) ts: Arc<Mutex<(u64, Watermark)>>,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 26 |     pub(crate) committed_txns: Arc<Mutex<BTreeMap<u64, CommittedTxnData>>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `latest_commit_ts`, `update_commit_ts`, `watermark`, and `new_txn` are never used
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl LsmMvccInner {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(initial_ts: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn latest_commit_ts(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn update_commit_ts(&self, ts: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn watermark(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `read_ts`, `inner`, `local_storage`, `committed`, and `key_hashes` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Transaction {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 20 |     pub(crate) read_ts: u64,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 21 |     pub(crate) inner: Arc<LsmStorageInner>,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] 22 |     pub(crate) local_storage: Arc<SkipMap<Bytes, Bytes>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub(crate) committed: Arc<AtomicBool>,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 24 |     /// Write set and read set.
[INFO] [stdout] 25 |     pub(crate) key_hashes: Option<Mutex<(HashSet<u32>, HashSet<u32>)>>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_meta_offset`, `block_cache`, and `bloom` are never read
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:129:16
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct SsTable {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub(crate) block_meta_offset: usize,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 130 |     id: usize,
[INFO] [stdout] 131 |     block_cache: Option<Arc<BlockCache>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub(crate) bloom: Option<Bloom>,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filter` and `k` are never read
[INFO] [stdout]  --> mini-lsm/src/table/bloom.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Bloom {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 6 |     /// Data of filter in bits.
[INFO] [stdout] 7 |     pub(crate) filter: Bytes,
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 8 |     /// Nuber of hash functions.
[INFO] [stdout] 9 |     pub(crate) k: u8,
[INFO] [stdout]   |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `decode`, `encode`, `bloom_bits_per_key`, `build_from_key_hashes`, and `may_contain` are never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Bloom {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 13 |     /// Decode a bloom filter
[INFO] [stdout] 14 |     pub fn decode(buf: &[u8]) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn encode(&self, buf: &mut Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn bloom_bits_per_key(entries: usize, false_positive_rate: f64) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn build_from_key_hashes(keys: &[u32], bits_per_key: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn may_contain(&self, h: u32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `BitSlice` is never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub trait BitSlice {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `BitSliceMut` is never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub trait BitSliceMut {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `table`, `block_iter`, and `block_idx` are never read
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct SsTableIterator {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 10 |     table: Arc<SsTable>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     block_iter: BlockIterator,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     block_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file` is never read
[INFO] [stdout]   --> mini-lsm/src/wal.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Wal {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 11 |     file: Arc<Mutex<BufWriter<File>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sstables`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:20:37
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn create_and_seek_to_first(sstables: Vec<Arc<SsTable>>) -> Result<Self> {
[INFO] [stdout]    |                                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sstables`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sstables`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:24:35
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn create_and_seek_to_key(sstables: Vec<Arc<SsTable>>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sstables`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:24:64
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn create_and_seek_to_key(sstables: Vec<Arc<SsTable>>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                                                ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lhs`
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn create(lhs: L, rhs: R) -> Result<Self> {
[INFO] [stdout]    |                   ^^^ help: if this is intentional, prefix it with an underscore: `_lhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rhs`
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn create(lhs: L, rhs: R) -> Result<Self> {
[INFO] [stdout]    |                           ^^^ help: if this is intentional, prefix it with an underscore: `_rhs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `BlockBuilder::add` that must be used
[INFO] [stdout]   --> mini-lsm/src/table/builder.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         self.builder.add(key, value);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: empty block builder is not allowed
[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] 59 |         let _ = self.builder.add(key, value);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]   --> mini-lsm/src/mem_table.rs:99:29
[INFO] [stdout]    |
[INFO] [stdout] 99 |     pub fn put_batch(&self, data: &[(KeySlice, &[u8])]) -> Result<()> {
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `builder`
[INFO] [stdout]    --> mini-lsm/src/mem_table.rs:121:25
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub fn flush(&self, builder: &mut SsTableBuilder) -> Result<()> {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_builder`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:29:23
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn get(&self, key: &[u8]) -> Result<Option<Bytes>> {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:33:23
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn put(&self, key: &[u8]) {
[INFO] [stdout]    |                       ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn delete(&self, key: &[u8]) {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lower`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:41:24
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn scan(&self, lower: Bound<&[u8]>, upper: Bound<&[u8]>) -> Result<TxnIterator> {
[INFO] [stdout]    |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_lower`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `upper`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:41:45
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn scan(&self, lower: Bound<&[u8]>, upper: Bound<&[u8]>) -> Result<TxnIterator> {
[INFO] [stdout]    |                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_upper`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:45:26
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn commit(&self, key: &[u8]) -> Result<()> {
[INFO] [stdout]    |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `txn`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 96 |         txn: Arc<Transaction>,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_txn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `iter`
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |         iter: TwoMergeIterator<TxnLocalIterator, FusedIterator<LsmIterator>>,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> mini-lsm/src/mvcc/watermark.rs:20:34
[INFO] [stdout]    |
[INFO] [stdout] 20 |     pub fn add_reader(&mut self, ts: u64) {
[INFO] [stdout]    |                                  ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ts`
[INFO] [stdout]   --> mini-lsm/src/mvcc/watermark.rs:24:37
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn remove_reader(&mut self, ts: u64) {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_ts`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inner`
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:53:27
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_inner`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `serializable`
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:53:56
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |                                                        ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_serializable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nbits`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let nbits = nbytes * 8;
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_nbits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nbits`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:60:17
[INFO] [stdout]    |
[INFO] [stdout] 60 |             let nbits = self.filter.bit_len();
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_nbits`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:61:17
[INFO] [stdout]    |
[INFO] [stdout] 61 |             let delta = h.rotate_left(15);
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `table`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:17:37
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn create_and_seek_to_first(table: Arc<SsTable>) -> Result<Self> {
[INFO] [stdout]    |                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_table`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `table`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:27:35
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn create_and_seek_to_key(table: Arc<SsTable>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_table`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:27:56
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn create_and_seek_to_key(table: Arc<SsTable>, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                                        ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:32:35
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn seek_to_key(&mut self, key: KeySlice) -> Result<Self> {
[INFO] [stdout]    |                                   ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_key_len`
[INFO] [stdout]   --> mini-lsm/src/table/mod.rs:76:17
[INFO] [stdout]    |
[INFO] [stdout] 76 |             let last_key_len = buf.get_u16() as usize;
[INFO] [stdout]    |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_key_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:17
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_cache`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:28
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                            ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_cache`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:146:66
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn open(id: usize, block_cache: Option<Arc<BlockCache>>, file: FileObject) -> Result<Self> {
[INFO] [stdout]     |                                                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_idx`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:171:30
[INFO] [stdout]     |
[INFO] [stdout] 171 |     pub fn read_block(&self, block_idx: usize) -> Result<Arc<Block>> {
[INFO] [stdout]     |                              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `block_idx`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:176:37
[INFO] [stdout]     |
[INFO] [stdout] 176 |     pub fn read_block_cached(&self, block_idx: usize) -> Result<Arc<Block>> {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_block_idx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:181:34
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn find_block_idx(&self, key: KeySlice) -> usize {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compact_to_bottom_level` is never used
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl CompactionTask {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 33 |     fn compact_to_bottom_level(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:44:13
[INFO] [stdout]    |
[INFO] [stdout] 44 |     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] 44 -     Leveled(LeveledCompactionController),
[INFO] [stdout] 44 +     Leveled(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |     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] 45 -     Tiered(TieredCompactionController),
[INFO] [stdout] 45 +     Tiered(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     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] 46 -     Simple(SimpleLeveledCompactionController),
[INFO] [stdout] 46 +     Simple(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `generate_compaction_task` and `apply_compaction_result` are never used
[INFO] [stdout]   --> mini-lsm/src/compact/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl CompactionController {
[INFO] [stdout]    | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn generate_compaction_task(&self, snapshot: &LsmStorageState) -> Option<CompactionTask> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn apply_compaction_result(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flush_to_l0` is never used
[INFO] [stdout]    --> mini-lsm/src/compact/mod.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl CompactionController {
[INFO] [stdout]     | ------------------------- method in this implementation
[INFO] [stdout] 101 |     pub fn flush_to_l0(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `compact` is never used
[INFO] [stdout]    --> mini-lsm/src/compact/mod.rs:123:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 123 |     fn compact(&self, _task: &CompactionTask) -> Result<Vec<Arc<SsTable>>> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/leveled.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct LeveledCompactionController {
[INFO] [stdout]    |            --------------------------- field in this struct
[INFO] [stdout] 24 |     options: LeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_overlapping_ssts` is never used
[INFO] [stdout]   --> mini-lsm/src/compact/leveled.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl LeveledCompactionController {
[INFO] [stdout]    | -------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn find_overlapping_ssts(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/simple_leveled.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct SimpleLeveledCompactionController {
[INFO] [stdout]    |            --------------------------------- field in this struct
[INFO] [stdout] 23 |     options: SimpleLeveledCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `options` is never read
[INFO] [stdout]   --> mini-lsm/src/compact/tiered.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct TieredCompactionController {
[INFO] [stdout]    |            -------------------------- field in this struct
[INFO] [stdout] 21 |     options: TieredCompactionOptions,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current`, `next_sst_idx`, and `sstables` are never read
[INFO] [stdout]   --> mini-lsm/src/iterators/concat_iterator.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SstConcatIterator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 14 |     current: Option<SsTableIterator>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 15 |     next_sst_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 16 |     sstables: Vec<Arc<SsTable>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `lhs` and `rhs` are never read
[INFO] [stdout]   --> mini-lsm/src/iterators/two_merge_iterator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct TwoMergeIterator<L, R>
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     lhs: L,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 11 |     rhs: R,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_cache`, `manifest`, `mvcc`, and `compaction_controller` are never read
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:128:16
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) struct LsmStorageInner {
[INFO] [stdout]     |                   --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub(crate) block_cache: Arc<BlockCache>,
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub(crate) manifest: Option<Manifest>,
[INFO] [stdout]     |                ^^^^^^^^
[INFO] [stdout] 132 |     pub(crate) mvcc: Option<LsmMvccInner>,
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] 133 |     pub(crate) compaction_controller: CompactionController,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `mvcc`, `sst_path_static`, `sst_path`, and `sync_dir` are never used
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:176:19
[INFO] [stdout]     |
[INFO] [stdout] 137 | impl LsmStorageInner {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub(crate) fn mvcc(&self) -> &LsmMvccInner {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub(crate) fn sst_path_static<P>(path: P, id: usize) -> PathBuf
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub(crate) fn sst_path(&self, id: usize) -> PathBuf {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub(super) fn sync_dir(&self) -> Result<()> {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `compaction_thread` and `flush_thread` are never read
[INFO] [stdout]    --> mini-lsm/src/lsm_storage.rs:324:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | pub struct MiniLsm {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 324 |     compaction_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     flush_thread: Mutex<Option<std::thread::JoinHandle<()>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file` is never read
[INFO] [stdout]   --> mini-lsm/src/manifest.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct Manifest {
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 10 |     file: Arc<Mutex<File>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key_hashes`, `read_ts`, and `commit_ts` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) struct CommittedTxnData {
[INFO] [stdout]    |                   ---------------- fields in this struct
[INFO] [stdout] 17 |     pub(crate) key_hashes: HashSet<u32>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 18 |     pub(crate) read_ts: u64,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 19 |     pub(crate) commit_ts: u64,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `write_lock`, `commit_lock`, `ts`, and `committed_txns` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:23:16
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) struct LsmMvccInner {
[INFO] [stdout]    |                   ------------ fields in this struct
[INFO] [stdout] 23 |     pub(crate) write_lock: Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 24 |     pub(crate) commit_lock: Mutex<()>,
[INFO] [stdout]    |                ^^^^^^^^^^^
[INFO] [stdout] 25 |     pub(crate) ts: Arc<Mutex<(u64, Watermark)>>,
[INFO] [stdout]    |                ^^
[INFO] [stdout] 26 |     pub(crate) committed_txns: Arc<Mutex<BTreeMap<u64, CommittedTxnData>>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `latest_commit_ts`, `update_commit_ts`, `watermark`, and `new_txn` are never used
[INFO] [stdout]   --> mini-lsm/src/mvcc/mod.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl LsmMvccInner {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(initial_ts: u64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn latest_commit_ts(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn update_commit_ts(&self, ts: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn watermark(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn new_txn(&self, inner: Arc<LsmStorageInner>, serializable: bool) -> Arc<Transaction> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `read_ts`, `inner`, `local_storage`, `committed`, and `key_hashes` are never read
[INFO] [stdout]   --> mini-lsm/src/mvcc/txn.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Transaction {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 20 |     pub(crate) read_ts: u64,
[INFO] [stdout]    |                ^^^^^^^
[INFO] [stdout] 21 |     pub(crate) inner: Arc<LsmStorageInner>,
[INFO] [stdout]    |                ^^^^^
[INFO] [stdout] 22 |     pub(crate) local_storage: Arc<SkipMap<Bytes, Bytes>>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub(crate) committed: Arc<AtomicBool>,
[INFO] [stdout]    |                ^^^^^^^^^
[INFO] [stdout] 24 |     /// Write set and read set.
[INFO] [stdout] 25 |     pub(crate) key_hashes: Option<Mutex<(HashSet<u32>, HashSet<u32>)>>,
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `block_meta_offset`, `block_cache`, and `bloom` are never read
[INFO] [stdout]    --> mini-lsm/src/table/mod.rs:129:16
[INFO] [stdout]     |
[INFO] [stdout] 123 | pub struct SsTable {
[INFO] [stdout]     |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub(crate) block_meta_offset: usize,
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 130 |     id: usize,
[INFO] [stdout] 131 |     block_cache: Option<Arc<BlockCache>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub(crate) bloom: Option<Bloom>,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `filter` and `k` are never read
[INFO] [stdout]  --> mini-lsm/src/table/bloom.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Bloom {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 6 |     /// Data of filter in bits.
[INFO] [stdout] 7 |     pub(crate) filter: Bytes,
[INFO] [stdout]   |                ^^^^^^
[INFO] [stdout] 8 |     /// Nuber of hash functions.
[INFO] [stdout] 9 |     pub(crate) k: u8,
[INFO] [stdout]   |                ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `decode`, `encode`, `bloom_bits_per_key`, `build_from_key_hashes`, and `may_contain` are never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Bloom {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 13 |     /// Decode a bloom filter
[INFO] [stdout] 14 |     pub fn decode(buf: &[u8]) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn encode(&self, buf: &mut Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn bloom_bits_per_key(entries: usize, false_positive_rate: f64) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn build_from_key_hashes(keys: &[u32], bits_per_key: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn may_contain(&self, h: u32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `BitSlice` is never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:70:11
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub trait BitSlice {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `BitSliceMut` is never used
[INFO] [stdout]   --> mini-lsm/src/table/bloom.rs:75:11
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub trait BitSliceMut {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `table`, `block_iter`, and `block_idx` are never read
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct SsTableIterator {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 10 |     table: Arc<SsTable>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 11 |     block_iter: BlockIterator,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     block_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `file` is never read
[INFO] [stdout]   --> mini-lsm/src/wal.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Wal {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] 11 |     file: Arc<Mutex<BufWriter<File>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_iter_result_by_key_and_ts` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn check_iter_result_by_key_and_ts<I>(iter: &mut I, expected: Vec<((Bytes, u64), Bytes)>)
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sst` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn generate_sst(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_sst_with_ts` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn generate_sst_with_ts(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sync` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn sync(storage: &LsmStorageInner) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compaction_bench` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:234:8
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub fn compaction_bench(storage: Arc<MiniLsm>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_compaction_ratio` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:298:8
[INFO] [stdout]     |
[INFO] [stdout] 298 | pub fn check_compaction_ratio(storage: Arc<MiniLsm>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dump_files_in_dir` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:433:8
[INFO] [stdout]     |
[INFO] [stdout] 433 | pub fn dump_files_in_dir(path: impl AsRef<Path>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `construct_merge_iterator_over_storage` is never used
[INFO] [stdout]    --> mini-lsm/src/tests/mod.rs:445:8
[INFO] [stdout]     |
[INFO] [stdout] 445 | pub fn construct_merge_iterator_over_storage(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `BlockBuilder::add` that must be used
[INFO] [stdout]   --> mini-lsm/src/table/builder.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |         self.builder.add(key, value);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: empty block builder is not allowed
[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] 59 |         let _ = self.builder.add(key, value);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> mini-lsm/src/tests/week1_day2.rs:97:5
[INFO] [stdout]    |
[INFO] [stdout] 97 |     handle.join();
[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] 97 |     let _ = handle.join();
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `arc-swap`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:10:1
[INFO] [stderr]    |
[INFO] [stderr] 10 | arc-swap            = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `arc-swap`
[INFO] [stderr] warning: unused dependency `clap`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | clap                = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `clap`
[INFO] [stderr] warning: unused dependency `console`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | console             = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `console`
[INFO] [stderr] warning: unused dependency `duct`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:17:1
[INFO] [stderr]    |
[INFO] [stderr] 17 | duct                = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `duct`
[INFO] [stderr] warning: unused dependency `farmhash`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:18:1
[INFO] [stderr]    |
[INFO] [stderr] 18 | farmhash            = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `farmhash`
[INFO] [stderr] warning: unused dependency `nom`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 | nom                 = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `nom`
[INFO] [stderr] warning: unused dependency `rand`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:23:1
[INFO] [stderr]    |
[INFO] [stderr] 23 | rand                = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rand`
[INFO] [stderr] warning: unused dependency `rustyline`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | rustyline           = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rustyline`
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:26:1
[INFO] [stderr]    |
[INFO] [stderr] 26 | serde_json          = { workspace = true }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `mini-lsm` (manifest) generated 9 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.45s
[INFO] running `Command { std: "docker" "inspect" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879", kill_on_drop: false }`
[INFO] [stdout] 98b366a7b3c0235f2c5de86b8ee3126b528f202fda87f8bcb7242b13669c4879
