[INFO] cloning repository https://github.com/MarshallSigumd/mini-lsm
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/MarshallSigumd/mini-lsm" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarshallSigumd%2Fmini-lsm", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarshallSigumd%2Fmini-lsm'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 99a13d0dcdd216cc60faffa67686f2e2ba9f8212
[INFO] checking MarshallSigumd/mini-lsm against 79c0559184f27f4433a6fbc260b950d06d4a4889 for pr-162233-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMarshallSigumd%2Fmini-lsm" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-6-tc2/source/.cargo/config.toml
[INFO] removed /workspace/builds/worker-6-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/MarshallSigumd/mini-lsm
[INFO] finished tweaking git repo https://github.com/MarshallSigumd/mini-lsm
[INFO] tweaked toml for git repo https://github.com/MarshallSigumd/mini-lsm written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/MarshallSigumd/mini-lsm on toolchain 79c0559184f27f4433a6fbc260b950d06d4a4889
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/MarshallSigumd/mini-lsm 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" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused workspace dependency `anyhow`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | anyhow = "1"
[INFO] [stderr]   | ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `anyhow`
[INFO] [stderr] warning: unused workspace dependency `bytes`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | bytes = "1"
[INFO] [stderr]   | ^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the workspace dependency `bytes`
[INFO] [stderr] warning: workspace (manifest) generated 2 warnings
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> mini-lsm/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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` (manifest) generated 1 warning
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> mini-lsm-mvcc/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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-mvcc` (manifest) generated 1 warning
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> xtask/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/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] 17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9
[INFO] running `Command { std: "docker" "start" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9", 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" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9", 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" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: unused workspace dependency `anyhow`
[INFO] [stderr]  --> Cargo.toml:6:1
[INFO] [stderr]   |
[INFO] [stderr] 6 | anyhow = "1"
[INFO] [stderr]   | ^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_workspace_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the workspace dependency `anyhow`
[INFO] [stderr] warning: unused workspace dependency `bytes`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | bytes = "1"
[INFO] [stderr]   | ^^^^^
[INFO] [stderr]   |
[INFO] [stderr] help: consider removing the workspace dependency `bytes`
[INFO] [stderr] warning: workspace (manifest) generated 2 warnings
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> mini-lsm/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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` (manifest) generated 1 warning
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> mini-lsm-mvcc/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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-mvcc` (manifest) generated 1 warning
[INFO] [stderr] warning: `package.homepage` is redundant with `package.repository`
[INFO] [stderr]  --> xtask/Cargo.toml:5:12
[INFO] [stderr]   |
[INFO] [stderr] 5 | homepage = { workspace = true }
[INFO] [stderr]   |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[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]     Checking bitflags v2.10.0
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling yansi v1.0.1
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking raw-cpuid v10.7.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]    Compiling moka v0.9.9
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking triomphe v0.1.15
[INFO] [stderr]     Checking crossbeam-skiplist v0.1.3
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking clap_builder v4.5.51
[INFO] [stderr]     Checking farmhash v1.1.5
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling syn v2.0.108
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking os_pipe v1.2.3
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking scheduled-thread-pool v0.2.7
[INFO] [stderr]     Checking sigchld v0.2.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking shared_child v1.1.1
[INFO] [stderr]     Checking duct v0.13.7
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking quanta v0.11.1
[INFO] [stderr]     Checking fd-lock v4.0.4
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking rustyline v13.0.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling ouroboros_macro v0.18.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ouroboros v0.18.5
[INFO] [stderr]     Checking clap v4.5.51
[INFO] [stderr]     Checking mini-lsm-xtask v0.2.0 (/opt/rustwide/workdir/xtask)
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking mini-lsm v0.2.0 (/opt/rustwide/workdir/mini-lsm)
[INFO] [stderr]     Checking mini-lsm-starter v0.2.0 (/opt/rustwide/workdir/mini-lsm-starter)
[INFO] [stderr]     Checking mini-lsm-mvcc v0.2.0 (/opt/rustwide/workdir/mini-lsm-mvcc)
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-mvcc/src/tests/harness.rs:110:32
[INFO] [stdout]     |
[INFO] [stdout] 110 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-mvcc/src/tests/harness.rs:138:32
[INFO] [stdout]     |
[INFO] [stdout] 138 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-mvcc/src/tests/harness.rs:168:32
[INFO] [stdout]     |
[INFO] [stdout] 168 |     I: for<'a> StorageIterator<KeyType<'a> = &'a [u8]>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::AsRef`
[INFO] [stdout]   --> mini-lsm-starter/src/block/builder.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::convert::AsRef;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::compact`
[INFO] [stdout]   --> mini-lsm-starter/src/compact.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | use crate::compact;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> mini-lsm-starter/src/iterators/two_merge_iterator.rs:48:16
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if (self.b.is_valid() && self.a.key() == self.b.key()) {
[INFO] [stdout]    |                ^                                                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 48 -             if (self.b.is_valid() && self.a.key() == self.b.key()) {
[INFO] [stdout] 48 +             if self.b.is_valid() && self.a.key() == self.b.key() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_iterator.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | / ...   ///在 move_to_non_delete 方法中，循环条件是 while self.is_valid() && self.inner.value().is_empty()。当遇到墓碑记录（空值）...
[INFO] [stdout] 85 | | ...   ///
[INFO] [stdout] 86 | | ...   ///move_to_non_delete 方法需要在使用 next() 后检查 self.inner 是否仍然有效，并相应地更新 self.is_valid
[INFO] [stdout]    | |____________________________________________________________________________________________________________^
[INFO] [stdout] 87 |   ...   Ok(())
[INFO] [stdout]    |         ------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `farmhash::fingerprint32`
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_storage.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use farmhash::fingerprint32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_storage.rs:36:40
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::iterators::merge_iterator::{self, MergeIterator};
[INFO] [stdout]    |                                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Block`
[INFO] [stdout]   --> mini-lsm-starter/src/table/builder.rs:34:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |     block::{Block, BlockBuilder},
[INFO] [stdout]    |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::NonEmptyStringValueParser`
[INFO] [stdout]   --> mini-lsm-starter/src/table.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use clap::builder::NonEmptyStringValueParser;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::AsRef`
[INFO] [stdout]   --> mini-lsm-starter/src/block/builder.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::convert::AsRef;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::compact`
[INFO] [stdout]   --> mini-lsm-starter/src/compact.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | use crate::compact;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> mini-lsm-starter/src/iterators/two_merge_iterator.rs:48:16
[INFO] [stdout]    |
[INFO] [stdout] 48 |             if (self.b.is_valid() && self.a.key() == self.b.key()) {
[INFO] [stdout]    |                ^                                                 ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 48 -             if (self.b.is_valid() && self.a.key() == self.b.key()) {
[INFO] [stdout] 48 +             if self.b.is_valid() && self.a.key() == self.b.key() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_iterator.rs:84:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | / ...   ///在 move_to_non_delete 方法中，循环条件是 while self.is_valid() && self.inner.value().is_empty()。当遇到墓碑记录（空值）...
[INFO] [stdout] 85 | | ...   ///
[INFO] [stdout] 86 | | ...   ///move_to_non_delete 方法需要在使用 next() 后检查 self.inner 是否仍然有效，并相应地更新 self.is_valid
[INFO] [stdout]    | |____________________________________________________________________________________________________________^
[INFO] [stdout] 87 |   ...   Ok(())
[INFO] [stdout]    |         ------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `farmhash::fingerprint32`
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_storage.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use farmhash::fingerprint32;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> mini-lsm-starter/src/lsm_storage.rs:36:40
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::iterators::merge_iterator::{self, MergeIterator};
[INFO] [stdout]    |                                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Block`
[INFO] [stdout]   --> mini-lsm-starter/src/table/builder.rs:34:13
[INFO] [stdout]    |
[INFO] [stdout] 34 |     block::{Block, BlockBuilder},
[INFO] [stdout]    |             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `clap::builder::NonEmptyStringValueParser`
[INFO] [stdout]   --> mini-lsm-starter/src/table.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use clap::builder::NonEmptyStringValueParser;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-starter/src/tests/harness.rs:110:32
[INFO] [stdout]     |
[INFO] [stdout] 110 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-starter/src/tests/harness.rs:138:32
[INFO] [stdout]     |
[INFO] [stdout] 138 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm-starter/src/tests/harness.rs:168:32
[INFO] [stdout]     |
[INFO] [stdout] 168 |     I: for<'a> StorageIterator<KeyType<'a> = &'a [u8]>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm/src/tests/harness.rs:110:32
[INFO] [stdout]     |
[INFO] [stdout] 110 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm/src/tests/harness.rs:138:32
[INFO] [stdout]     |
[INFO] [stdout] 138 |     I: for<'a> StorageIterator<KeyType<'a> = KeySlice<'a>>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0311]: the parameter type `I` may not live long enough
[INFO] [stdout]    --> mini-lsm/src/tests/harness.rs:168:32
[INFO] [stdout]     |
[INFO] [stdout] 168 |     I: for<'a> StorageIterator<KeyType<'a> = &'a [u8]>,
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                the parameter type `I` must be valid for lifetime `'a`...
[INFO] [stdout]     |                                ...so that the type `I` will meet its required lifetime bounds
[INFO] [stdout]     |
[INFO] [stdout]     = help: consider adding an explicit lifetime bound `I: 'a`...
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-starter/src/block/iterator.rs:77:16
[INFO] [stdout]    |
[INFO] [stdout] 77 |     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] 77 |     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]    --> mini-lsm-starter/src/iterators/concat_iterator.rs:118:12
[INFO] [stdout]     |
[INFO] [stdout] 118 |     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] 118 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> mini-lsm-starter/src/iterators/merge_iterator.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 |     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] 101 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-starter/src/key.rs:71:25
[INFO] [stdout]    |
[INFO] [stdout] 71 |     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] 71 |     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]   --> mini-lsm-starter/src/key.rs:94:25
[INFO] [stdout]    |
[INFO] [stdout] 94 |     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] 94 |     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]    --> mini-lsm-starter/src/mem_table.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 199 |     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] 199 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> mini-lsm-starter/src/table/iterator.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 |     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] 100 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm/src/block/iterator.rs:76:16
[INFO] [stdout]    |
[INFO] [stdout] 76 |     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] 76 |     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]    --> mini-lsm/src/iterators/concat_iterator.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 |     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] 111 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm/src/iterators/merge_iterator.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 |     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] 97 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm/src/key.rs:71:25
[INFO] [stdout]    |
[INFO] [stdout] 71 |     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] 71 |     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]   --> mini-lsm/src/key.rs:94:25
[INFO] [stdout]    |
[INFO] [stdout] 94 |     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] 94 |     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]    --> mini-lsm/src/mem_table.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout] 206 |     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] 206 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm/src/table/iterator.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 |     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] 99 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-mvcc/src/block/iterator.rs:77:16
[INFO] [stdout]    |
[INFO] [stdout] 77 |     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] 77 |     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]    --> mini-lsm-mvcc/src/iterators/concat_iterator.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 |     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] 111 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-mvcc/src/iterators/merge_iterator.rs:97:12
[INFO] [stdout]    |
[INFO] [stdout] 97 |     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] 97 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-mvcc/src/key.rs:89:25
[INFO] [stdout]    |
[INFO] [stdout] 89 |     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] 89 |     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]    --> mini-lsm-mvcc/src/key.rs:119:25
[INFO] [stdout]     |
[INFO] [stdout] 119 |     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] 119 |     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]    --> mini-lsm-mvcc/src/mem_table.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 260 |     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] 260 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]     |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> mini-lsm-mvcc/src/table/iterator.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 |     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] 99 |     fn key(&self) -> KeySlice<'_> {
[INFO] [stdout]    |                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0311`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mini-lsm-mvcc` (lib test) due to 3 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about this error, try `rustc --explain E0311`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mini-lsm-starter` (lib test) due to 3 previous errors; 8 warnings emitted
[INFO] [stdout] For more information about this error, try `rustc --explain E0311`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `mini-lsm` (lib test) due to 3 previous errors
[INFO] [stderr] warning: unused dependency `arc-swap`
[INFO] [stderr]   --> mini-lsm/Cargo.toml:14:1
[INFO] [stderr]    |
[INFO] [stderr] 14 | arc-swap = "1"
[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: `mini-lsm` (manifest) generated 1 warning
[INFO] [stderr] warning: unused dependency `arc-swap`
[INFO] [stderr]  --> mini-lsm-starter/Cargo.toml:9:1
[INFO] [stderr]   |
[INFO] [stderr] 9 | arc-swap = "1"
[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 `crc32fast`
[INFO] [stderr]   --> mini-lsm-starter/Cargo.toml:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | crc32fast = "1.3.2"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `crc32fast`
[INFO] [stderr] warning: unused dependency `serde_json`
[INFO] [stderr]   --> mini-lsm-starter/Cargo.toml:19:1
[INFO] [stderr]    |
[INFO] [stderr] 19 | serde_json = { version = "1.0" }
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `serde_json`
[INFO] [stderr] warning: `mini-lsm-starter` (manifest) generated 3 warnings
[INFO] running `Command { std: "docker" "inspect" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9", kill_on_drop: false }`
[INFO] [stdout] 17306cbcd8c36bd400c651c16616e533ff585072aefa1639613c4b4cfb8653b9
