[INFO] cloning repository https://github.com/ChrisBellew/bynamo
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ChrisBellew/bynamo" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChrisBellew%2Fbynamo", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChrisBellew%2Fbynamo'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5e81798c4095b70f3628b3cdcf3bfd66d3d4abe8
[INFO] testing ChrisBellew/bynamo against 1.75.0 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChrisBellew%2Fbynamo" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/ChrisBellew/bynamo on toolchain 1.75.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.75.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/ChrisBellew/bynamo
[INFO] finished tweaking git repo https://github.com/ChrisBellew/bynamo
[INFO] tweaked toml for git repo https://github.com/ChrisBellew/bynamo written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/ChrisBellew/bynamo 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" "+1.75.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded stopwatch v0.0.7
[INFO] [stderr]   Downloaded xoroshiro128 v0.3.0
[INFO] [stderr]   Downloaded console-subscriber v0.2.0
[INFO] [stderr]   Downloaded console-api v0.6.0
[INFO] [stderr]   Downloaded fasthash v0.4.0
[INFO] [stderr]   Downloaded seahash v3.0.7
[INFO] [stderr]   Downloaded hdrhistogram v7.5.4
[INFO] [stderr]   Downloaded fasthash-sys v0.3.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 16a0faea62261e9678ff6c074477d5fe9012c9a2386bfa0a1c0691a3ce4166d2
[INFO] running `Command { std: "docker" "start" "-a" "16a0faea62261e9678ff6c074477d5fe9012c9a2386bfa0a1c0691a3ce4166d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "16a0faea62261e9678ff6c074477d5fe9012c9a2386bfa0a1c0691a3ce4166d2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "16a0faea62261e9678ff6c074477d5fe9012c9a2386bfa0a1c0691a3ce4166d2", kill_on_drop: false }`
[INFO] [stdout] 16a0faea62261e9678ff6c074477d5fe9012c9a2386bfa0a1c0691a3ce4166d2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1a15ce66195fae9ba39a6c958713bb6313f873b4d24ae3c1eee8816260745f40
[INFO] running `Command { std: "docker" "start" "-a" "1a15ce66195fae9ba39a6c958713bb6313f873b4d24ae3c1eee8816260745f40", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.69
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling libc v0.2.149
[INFO] [stderr]    Compiling pin-project-lite v0.2.13
[INFO] [stderr]    Compiling once_cell v1.18.0
[INFO] [stderr]    Compiling bytes v1.5.0
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]    Compiling parking_lot_core v0.9.9
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling smallvec v1.11.1
[INFO] [stderr]    Compiling log v0.4.20
[INFO] [stderr]    Compiling futures-channel v0.3.28
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling memchr v2.6.4
[INFO] [stderr]    Compiling futures-sink v0.3.28
[INFO] [stderr]    Compiling futures-task v0.3.28
[INFO] [stderr]    Compiling futures-util v0.3.28
[INFO] [stderr]    Compiling futures-io v0.3.28
[INFO] [stderr]    Compiling itoa v1.0.9
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling base64 v0.21.5
[INFO] [stderr]    Compiling hashbrown v0.14.2
[INFO] [stderr]    Compiling httparse v1.8.0
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]    Compiling serde v1.0.193
[INFO] [stderr]    Compiling tower-service v0.3.2
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling rustversion v1.0.14
[INFO] [stderr]    Compiling http v0.2.11
[INFO] [stderr]    Compiling try-lock v0.2.4
[INFO] [stderr]    Compiling ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling percent-encoding v2.3.0
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]    Compiling indexmap v2.1.0
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling anyhow v1.0.75
[INFO] [stderr]    Compiling openssl-probe v0.1.5
[INFO] [stderr]    Compiling tinyvec v1.6.0
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling syn v2.0.38
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling socket2 v0.5.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.1
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling cc v1.0.83
[INFO] [stderr]    Compiling mio v0.8.9
[INFO] [stderr]    Compiling getrandom v0.2.10
[INFO] [stderr]    Compiling socket2 v0.4.10
[INFO] [stderr]    Compiling parking_lot v0.12.1
[INFO] [stderr]    Compiling http-body v0.4.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling async-trait v0.1.74
[INFO] [stderr]    Compiling either v1.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling openssl v0.10.59
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]    Compiling rand v0.4.6
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]    Compiling bitflags v2.4.1
[INFO] [stderr]    Compiling tower-layer v0.3.2
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]    Compiling ryu v1.0.15
[INFO] [stderr]    Compiling thiserror v1.0.50
[INFO] [stderr]    Compiling rustc-serialize v0.3.24
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling unicode-normalization v0.1.22
[INFO] [stderr]    Compiling form_urlencoded v1.2.0
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling regex-syntax v0.6.29
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling untrusted v0.7.1
[INFO] [stderr]    Compiling unicode-bidi v0.3.13
[INFO] [stderr]    Compiling rustls v0.21.9
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling gcc v0.3.55
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling regex-syntax v0.8.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.16
[INFO] [stderr]    Compiling deranged v0.3.10
[INFO] [stderr]    Compiling miniz_oxide v0.7.1
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling openssl-sys v0.9.95
[INFO] [stderr]    Compiling ring v0.17.6
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling time-core v0.1.2
[INFO] [stderr]    Compiling serde_json v1.0.108
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling url v2.4.1
[INFO] [stderr]    Compiling fasthash-sys v0.3.2
[INFO] [stderr]    Compiling flate2 v1.0.28
[INFO] [stderr]    Compiling rustls-native-certs v0.6.3
[INFO] [stderr]    Compiling time v0.3.30
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling thread_local v1.1.7
[INFO] [stderr]    Compiling encoding_rs v0.8.33
[INFO] [stderr]    Compiling num-bigint v0.1.44
[INFO] [stderr]    Compiling num-complex v0.1.43
[INFO] [stderr]    Compiling regex-automata v0.1.10
[INFO] [stderr]    Compiling regex-automata v0.4.3
[INFO] [stderr]    Compiling ipnet v2.9.0
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling num-rational v0.1.42
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling prometheus v0.13.3
[INFO] [stderr]    Compiling yasna v0.5.2
[INFO] [stderr]    Compiling num v0.1.42
[INFO] [stderr]    Compiling matchers v0.1.0
[INFO] [stderr]    Compiling hdrhistogram v7.5.4
[INFO] [stderr]    Compiling crossbeam-channel v0.5.8
[INFO] [stderr]    Compiling xoroshiro128 v0.3.0
[INFO] [stderr]    Compiling pem v3.0.2
[INFO] [stderr]    Compiling seahash v3.0.7
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling stopwatch v0.0.7
[INFO] [stderr]    Compiling dashmap v5.5.3
[INFO] [stderr]    Compiling maplit v1.0.2
[INFO] [stderr]    Compiling regex v1.10.2
[INFO] [stderr]    Compiling tracing-attributes v0.1.27
[INFO] [stderr]    Compiling tokio-macros v2.1.0
[INFO] [stderr]    Compiling futures-macro v0.3.28
[INFO] [stderr]    Compiling serde_derive v1.0.193
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.3
[INFO] [stderr]    Compiling prost-derive v0.12.3
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.50
[INFO] [stderr]    Compiling async-recursion v1.0.5
[INFO] [stderr]    Compiling async-stream v0.3.5
[INFO] [stderr]    Compiling tokio v1.33.0
[INFO] [stderr]    Compiling rcgen v0.11.3
[INFO] [stderr]    Compiling pin-project v1.1.3
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling prost v0.12.3
[INFO] [stderr]    Compiling quinn-udp v0.4.1
[INFO] [stderr]    Compiling tracing-subscriber v0.3.18
[INFO] [stderr]    Compiling prost-types v0.12.3
[INFO] [stderr]    Compiling fasthash v0.4.0
[INFO] [stderr]    Compiling futures-executor v0.3.28
[INFO] [stderr]    Compiling futures v0.3.28
[INFO] [stderr]    Compiling quinn-proto v0.10.6
[INFO] [stderr]    Compiling tokio-util v0.7.10
[INFO] [stderr]    Compiling tokio-io-timeout v1.2.0
[INFO] [stderr]    Compiling tokio-stream v0.1.14
[INFO] [stderr]    Compiling tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling h2 v0.3.22
[INFO] [stderr]    Compiling tower v0.4.13
[INFO] [stderr]    Compiling quinn v0.10.2
[INFO] [stderr]    Compiling hyper v0.14.27
[INFO] [stderr]    Compiling hyper-timeout v0.4.1
[INFO] [stderr]    Compiling hyper-tls v0.5.0
[INFO] [stderr]    Compiling reqwest v0.11.22
[INFO] [stderr]    Compiling tonic v0.10.2
[INFO] [stderr]    Compiling console-api v0.6.0
[INFO] [stderr]    Compiling console-subscriber v0.2.0
[INFO] [stderr]    Compiling bynamo v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Registry`, `exponential_buckets`
[INFO] [stdout]  --> src/messaging/client.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use prometheus::{exponential_buckets, Histogram, HistogramOpts, Registry};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `start`
[INFO] [stdout]  --> src/messaging/server.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     start,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/start.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_recursion::async_recursion`
[INFO] [stdout]  --> src/storage/b_tree/add.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use async_recursion::async_recursion;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/storage/b_tree/add.rs:11:35
[INFO] [stdout]    |
[INFO] [stdout] 11 |     sync::{atomic::Ordering, Arc, Mutex},
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::delete_file_if_exists::delete_file_if_exists`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::util::delete_file_if_exists::delete_file_if_exists;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use lazy_static::lazy_static;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Histogram`, `IntCounter`, `IntGauge`, `Opts`, `Registry`, `exponential_buckets`, `register_histogram`, `register_int_gauge`
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     exponential_buckets, register_histogram, register_int_gauge, Histogram, HistogramOpts,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 11 |     IntCounter, IntGauge, Opts, Registry,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^  ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::Registry`
[INFO] [stdout]  --> src/storage/b_tree/tree.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use prometheus::Registry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `histogram_opts`, `register_histogram`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     exponential_buckets, histogram_opts, register_histogram, Histogram, HistogramOpts, Registry,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write_replica.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Registry`, `exponential_buckets`
[INFO] [stdout]  --> src/messaging/client.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use prometheus::{exponential_buckets, Histogram, HistogramOpts, Registry};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `start`
[INFO] [stdout]  --> src/messaging/server.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     start,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/start.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_recursion::async_recursion`
[INFO] [stdout]  --> src/storage/b_tree/add.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use async_recursion::async_recursion;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/storage/b_tree/add.rs:11:35
[INFO] [stdout]    |
[INFO] [stdout] 11 |     sync::{atomic::Ordering, Arc, Mutex},
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::delete_file_if_exists::delete_file_if_exists`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::util::delete_file_if_exists::delete_file_if_exists;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use lazy_static::lazy_static;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Histogram`, `IntCounter`, `IntGauge`, `Opts`, `Registry`, `exponential_buckets`, `register_histogram`, `register_int_gauge`
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     exponential_buckets, register_histogram, register_int_gauge, Histogram, HistogramOpts,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 11 |     IntCounter, IntGauge, Opts, Registry,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^  ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::Registry`
[INFO] [stdout]  --> src/storage/b_tree/tree.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use prometheus::Registry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `histogram_opts`, `register_histogram`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     exponential_buckets, histogram_opts, register_histogram, Histogram, HistogramOpts, Registry,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write_replica.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Registry`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     Registry,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `LocalSet`
[INFO] [stdout]   --> src/main.rs:27:28
[INFO] [stdout]    |
[INFO] [stdout] 27 | use tokio::task::{JoinSet, LocalSet};
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IntGauge`, `linear_buckets`
[INFO] [stdout]  --> src/btree.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 |     exponential_buckets, labels, linear_buckets, Histogram, HistogramOpts, IntGauge, Registry,
[INFO] [stdout]   |                                  ^^^^^^^^^^^^^^                            ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Registry`, `exponential_buckets`
[INFO] [stdout]  --> src/messaging/client.rs:1:18
[INFO] [stdout]   |
[INFO] [stdout] 1 | use prometheus::{exponential_buckets, Histogram, HistogramOpts, Registry};
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^             ^^^^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `start`
[INFO] [stdout]  --> src/messaging/server.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     start,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/start.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_recursion::async_recursion`
[INFO] [stdout]  --> src/storage/b_tree/add.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use async_recursion::async_recursion;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/storage/b_tree/add.rs:11:35
[INFO] [stdout]    |
[INFO] [stdout] 11 |     sync::{atomic::Ordering, Arc, Mutex},
[INFO] [stdout]    |                                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::delete_file_if_exists::delete_file_if_exists`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::util::delete_file_if_exists::delete_file_if_exists;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use lazy_static::lazy_static;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HistogramOpts`, `Histogram`, `IntCounter`, `IntGauge`, `Opts`, `Registry`, `exponential_buckets`, `register_histogram`, `register_int_gauge`
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     exponential_buckets, register_histogram, register_int_gauge, Histogram, HistogramOpts,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 11 |     IntCounter, IntGauge, Opts, Registry,
[INFO] [stdout]    |     ^^^^^^^^^^  ^^^^^^^^  ^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::Registry`
[INFO] [stdout]  --> src/storage/b_tree/tree.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use prometheus::Registry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lazy_static::lazy_static`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use lazy_static::lazy_static;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `histogram_opts`, `register_histogram`
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 |     exponential_buckets, histogram_opts, register_histogram, Histogram, HistogramOpts, Registry,
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SkipList`, `coin_flip`
[INFO] [stdout]  --> src/storage/commands/handlers/write_replica.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 |     skip_list::{coin_flip, SkipList},
[INFO] [stdout]   |                 ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_handlers`
[INFO] [stdout]    --> src/main.rs:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |     mut message_handlers: HashMap<NodeId, MessageHandler>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_handlers`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:132:5
[INFO] [stdout]     |
[INFO] [stdout] 132 |     mut message_handlers: HashMap<NodeId, MessageHandler>,
[INFO] [stdout]     |     ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:387:58
[INFO] [stdout]     |
[INFO] [stdout] 387 |     async fn persist_node_id<'a>(&self, node_id: NodeId, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:387:58
[INFO] [stdout]     |
[INFO] [stdout] 387 |     async fn persist_node_id<'a>(&self, node_id: NodeId, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_server`
[INFO] [stdout]   --> src/start.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let message_server = NodeService::start(&addr, message_handler.clone(), &registry).await;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_server`
[INFO] [stdout]   --> src/start.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let message_server = NodeService::start(&addr, message_handler.clone(), &registry).await;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:387:58
[INFO] [stdout]     |
[INFO] [stdout] 387 |     async fn persist_node_id<'a>(&self, node_id: NodeId, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                                                          ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index_path`
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         index_path: &str,
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_index_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index_path`
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         index_path: &str,
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_index_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message_server`
[INFO] [stdout]   --> src/start.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let message_server = NodeService::start(&addr, message_handler.clone(), &registry).await;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message_server`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index_path`
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         index_path: &str,
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_index_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_id`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |         tree_id: usize,
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add_bytes_count`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let add_bytes_count = add_bytes_count.clone();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_add_bytes_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_id`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |         tree_id: usize,
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add_bytes_count`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let add_bytes_count = add_bytes_count.clone();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_add_bytes_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tree_id`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 |         tree_id: usize,
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tree_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `add_bytes_count`
[INFO] [stdout]   --> src/storage/b_tree/tree.rs:85:17
[INFO] [stdout]    |
[INFO] [stdout] 85 |             let add_bytes_count = add_bytes_count.clone();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_add_bytes_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/storage/replicator.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let start = Instant::now();
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/storage/replicator.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let start = Instant::now();
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]   --> src/storage/replicator.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let start = Instant::now();
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::core::Atomic`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use prometheus::core::Atomic;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::Atomic`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     core::Atomic, exponential_buckets, labels, register_histogram, Histogram, HistogramOpts,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::core::Atomic`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use prometheus::core::Atomic;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prometheus::core::Atomic`
[INFO] [stdout]  --> src/storage/b_tree/node_store.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use prometheus::core::Atomic;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:185:27
[INFO] [stdout]     |
[INFO] [stdout] 185 |     fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:185:27
[INFO] [stdout]     |
[INFO] [stdout] 185 |     fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `node`
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:185:27
[INFO] [stdout]     |
[INFO] [stdout] 185 |     fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_node`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let head = self.head.write().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let head = self.head.write().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/main.rs:122:20
[INFO] [stdout]     |
[INFO] [stdout] 122 |     while let Some(res) = set.join_next().await {
[INFO] [stdout]     |                    ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:138:13
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let head = self.head.write().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:205:13
[INFO] [stdout]     |
[INFO] [stdout] 205 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `head`
[INFO] [stdout]    --> src/storage/skip_list.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |         let head = self.head.read().unwrap();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_head`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/btree.rs:117:9
[INFO] [stdout]     |
[INFO] [stdout] 117 |     for i in 0..workers {
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]    --> src/btree.rs:126:17
[INFO] [stdout]     |
[INFO] [stdout] 126 |             for j in 0..total / workers {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MessageRecipient` is never used
[INFO] [stdout]   --> src/bynamo_node.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub type MessageRecipient = NodeId;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Follower`, `Candidate`, and `Leader` are never constructed
[INFO] [stdout]  --> src/consensus/role.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Role {
[INFO] [stdout]   |          ---- variants in this enum
[INFO] [stdout] 3 |     Follower,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 4 |     Candidate,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 5 |     Leader,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consensus` is never read
[INFO] [stdout]   --> src/consensus/role_consensus.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RoleConsensus {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 16 |     consensus: Arc<RwLock<Consensus>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RoleConsensus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `tick`, and `handle_message` are never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl RoleConsensus {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn tick(&self) {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn handle_message(&self, message: RoleConsensusMessage) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/consensus/role_consensus.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct Consensus {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 46 |     role: Role,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     term: TermId,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 48 |     voted_for: Option<NodeId>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 49 |     votes_received: HashSet<NodeId>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     members: Vec<NodeId>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 51 |     role_service: RoleService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 52 |     message_sender: MessageSender,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     id: NodeId,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 54 |     next_timeout: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     next_heartbeat: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     will_revive_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     will_die_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 58 |     started: Instant,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | const HEARTBEAT_MILLISECONDS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:62:7
[INFO] [stdout]    |
[INFO] [stdout] 62 | const ELECTION_TIMEOUT_MILLISECONDS: u64 = 3000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ALIVE_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:63:7
[INFO] [stdout]    |
[INFO] [stdout] 63 | const MAX_ALIVE_DURATION_MILLISECONDS: u64 = 30_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DEAD_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | const MAX_DEAD_DURATION_MILLISECONDS: u64 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/consensus/role_consensus.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout] 68  | impl Consensus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 69  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     fn set_next_timeout(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn set_next_heartbeat(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn tick(&mut self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     async fn send_heartbeat(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     async fn on_timeout(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     fn reset_term_as_follower(&mut self, term: TermId) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     async fn vote_for(&mut self, votee: NodeId) {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub async fn handle_message(&mut self, message: RoleConsensusMessage) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     async fn receive_vote_command(&mut self, command: VoteCommand) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn receive_heartbeat_command(&mut self, command: HeartbeatCommand) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     async fn receive_request_vote_command(&mut self, command: RequestVoteCommand) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Recipient` is never used
[INFO] [stdout]  --> src/messaging/mod.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type Recipient = NodeId;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connections`, `stream_open_histogram`, and `stream_ttfb_histogram` are never read
[INFO] [stdout]   --> src/messaging/client.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MessageClient {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 11 |     connections: Arc<Vec<Connection>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     stream_open_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     stream_ttfb_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MessageClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `connect` and `send_message` are never used
[INFO] [stdout]   --> src/messaging/client.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MessageClient {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 17 |     pub async fn connect(
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn send_message(&self, message: Message) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/messaging/client.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl SkipServerVerification {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 78 |     fn new() -> Arc<Self> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_client` is never used
[INFO] [stdout]   --> src/messaging/client.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn configure_client() -> ClientConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/messaging/handler.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MessageHandler {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(storage_handler: StorageMessageHandler, role_consensus: RoleConsensus) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn handle(&mut self, message: Message) -> Result<(), StorageError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `clients` is never read
[INFO] [stdout]  --> src/messaging/sender.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MessageSender {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 7 |     clients: Arc<RwLock<HashMap<NodeId, MessageClient>>>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MessageSender` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_client`, `send_and_wait`, and `send_and_forget` are never used
[INFO] [stdout]   --> src/messaging/sender.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl MessageSender {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn add_client(&mut self, node_id: NodeId, client: MessageClient) {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub async fn send_and_wait(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn send_and_forget(&mut self, recipient: NodeId, message: Message) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/messaging/sender.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum SendError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 45 |     #[error("failed to send message")]
[INFO] [stdout] 46 |     Error,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodeService` is never constructed
[INFO] [stdout]   --> src/messaging/server.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct NodeService {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `start` is never used
[INFO] [stdout]   --> src/messaging/server.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl NodeService {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 16 |     pub async fn start(address: &str, handler: MessageHandler, registry: &Registry) -> Self {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_server_endpoint` is never used
[INFO] [stdout]   --> src/messaging/server.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn make_server_endpoint(bind_addr: SocketAddr) -> Result<(Endpoint, Vec<u8>), Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_server` is never used
[INFO] [stdout]   --> src/messaging/server.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn configure_server() -> Result<(ServerConfig, Vec<u8>), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Memory` is never constructed
[INFO] [stdout]  --> src/role_service.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RoleService {
[INFO] [stdout]   |          ----------- variant in this enum
[INFO] [stdout] 7 |     Memory(MemoryRoleService),
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `RoleService` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_memory`, `announce_new_term`, `announce_leader`, and `leader` are never used
[INFO] [stdout]   --> src/role_service.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl RoleService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn new_memory() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn announce_new_term(&mut self, term: TermId) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn announce_leader(&mut self, leader: NodeId, term: TermId) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn leader(&self) -> Option<NodeId> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]   --> src/role_service.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MemoryRoleService {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 33 |     state: Arc<RwLock<State>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MemoryRoleService` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `leader` and `term` are never read
[INFO] [stdout]   --> src/role_service.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct State {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 37 |     leader: Option<NodeId>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     term: TermId,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `announce_new_term`, `announce_leader`, and `leader` are never used
[INFO] [stdout]   --> src/role_service.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl MemoryRoleService {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     async fn announce_new_term(&mut self, term: TermId) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     async fn announce_leader(&mut self, leader: NodeId, term: TermId) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     async fn leader(&self) -> Option<NodeId> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_in_memory_node` is never used
[INFO] [stdout]   --> src/start.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub async fn start_in_memory_node(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_btree_index` is never used
[INFO] [stdout]   --> src/start.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | async fn create_btree_index(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AddResult` is never used
[INFO] [stdout]   --> src/storage/b_tree/add.rs:17:6
[INFO] [stdout]    |
[INFO] [stdout] 17 | enum AddResult<K, V>
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_lock`, `node_lock`, `get`, `insert`, `persist`, and `all` are never read
[INFO] [stdout]   --> src/storage/b_tree/add.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | struct Timing {
[INFO] [stdout]    |        ------ fields in this struct
[INFO] [stdout] 30 |     root_lock: Stopwatch,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 31 |     node_lock: Stopwatch,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 32 |     get: Stopwatch,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 33 |     insert: Stopwatch,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 34 |     persist: Stopwatch,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 35 |     all: Stopwatch,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `NodeLock` is never used
[INFO] [stdout]   --> src/storage/b_tree/add.rs:47:6
[INFO] [stdout]    |
[INFO] [stdout] 47 | enum NodeLock<'a, K, V>
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_root`, `from_node`, `into_root`, and `into_node` are never used
[INFO] [stdout]   --> src/storage/b_tree/add.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | / impl<'a, K, V> NodeLock<'a, K, V>
[INFO] [stdout] 57 | | where
[INFO] [stdout] 58 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 59 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout]    | |_________________________________________________________- associated items in this implementation
[INFO] [stdout] 60 |   {
[INFO] [stdout] 61 |       fn from_root(root: RwLockWriteGuard<'a, u32>) -> NodeLock<'a, K, V> {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |       fn from_node(node: RwLockWriteGuard<'a, BTreeNode<K, V>>) -> NodeLock<'a, K, V> {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |       fn into_root(self) -> RwLockWriteGuard<'a, u32> {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |       fn into_node(self) -> RwLockWriteGuard<'a, BTreeNode<K, V>> {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nodes` is never constructed
[INFO] [stdout]   --> src/storage/b_tree/add.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct Nodes<K, V>
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeldLocks` is never constructed
[INFO] [stdout]    --> src/storage/b_tree/add.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | struct HeldLocks<'a, K, V>
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_from_root`, `add_recursive`, `split_if_necessary`, and `handle_add` are never used
[INFO] [stdout]    --> src/storage/b_tree/add.rs:204:18
[INFO] [stdout]     |
[INFO] [stdout] 198 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 199 | | where
[INFO] [stdout] 200 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 201 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 202 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 203 |   {
[INFO] [stdout] 204 |       pub async fn add_from_root(&self, key: K, value: V) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 318 |       fn add_recursive<'a, 'b: 'a, 'c: 'a>(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 542 |       async fn split_if_necessary(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 602 |       async fn handle_add(
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print` and `format` are never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 14 | | where
[INFO] [stdout] 15 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 16 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 17 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 18 |   {
[INFO] [stdout] 19 |       pub async fn print(&self) {
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |       pub async fn format(&self) -> String {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_leaf_nodes_recursive` is never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:69:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 63 | | where
[INFO] [stdout] 64 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 65 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 66 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |       async fn get_leaf_nodes_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Start` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:114:6
[INFO] [stdout]     |
[INFO] [stdout] 114 | type Start = usize;
[INFO] [stdout]     |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `End` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:115:6
[INFO] [stdout]     |
[INFO] [stdout] 115 | type End = usize;
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_from_root` and `find_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/find.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 9  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 10 | | where
[INFO] [stdout] 11 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 12 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 14 |   {
[INFO] [stdout] 15 |       pub async fn find_from_root(&self, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |       pub async fn find_recursive(&self, node_id: NodeId, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `list_keys` and `list_keys_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/list.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11 | | where
[INFO] [stdout] 12 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15 |   {
[INFO] [stdout] 16 |       pub async fn list_keys(&self) -> Vec<K> {
[INFO] [stdout]    |                    ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |       pub async fn list_keys_recursive(&self, node_id: NodeId, keys: &mut Vec<K>) {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `register` is never used
[INFO] [stdout]   --> src/storage/b_tree/metrics.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl BTreeMetrics {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 38 |     pub fn register(tree_id: usize, registry: &Registry) -> BTreeMetrics {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Memory` and `Disk` are never constructed
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum NodeStore<K, V, S>
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Memory(MemoryNodeStore<K, V>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 37 |     Disk(DiskNodeStore<K, V, S>),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout] 40  | / impl<K, V, S> NodeStore<K, V, S>
[INFO] [stdout] 41  | | where
[INFO] [stdout] 42  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 43  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 44  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 45  |   {
[INFO] [stdout] 46  |       pub fn new_memory() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49  |       pub async fn new_disk(
[INFO] [stdout]     |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72  |       pub async fn get(&self, id: NodeId) -> Option<Arc<RwLock<BTreeNode<K, V>>>> {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 79  |       pub async fn insert(&self, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |       pub async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93  |       pub async fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                    ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |       pub async fn flush(&self) {
[INFO] [stdout]     |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |       pub async fn flush_buffer_size(&self) -> usize {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |       pub async fn flush_buffer_full(&self) -> bool {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |       pub fn clear_cache(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:166:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | / impl<K, V> MemoryNodeStore<K, V>
[INFO] [stdout] 162 | | where
[INFO] [stdout] 163 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 164 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout]     | |_________________________________________________________- associated items in this implementation
[INFO] [stdout] 165 |   {
[INFO] [stdout] 166 |       fn new() -> Self {
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |       fn get(&self, id: NodeId) -> Option<Arc<RwLock<BTreeNode<K, V>>>> {
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |       fn insert(&self, node: BTreeNode<K, V>) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |       fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |       fn flush(&self) {
[INFO] [stdout]     |          ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |       fn flush_required(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |       fn flush_buffer_size(&self) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |       fn flush_buffer_full(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |       fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |       fn clear_cache(&self) {}
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_NODE_SIZE_BYTES` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:212:7
[INFO] [stdout]     |
[INFO] [stdout] 212 | const MAX_NODE_SIZE_BYTES: u32 = 4096;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NODE_INDEX_BYTES` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:213:7
[INFO] [stdout]     |
[INFO] [stdout] 213 | const NODE_INDEX_BYTES: u32 = MAX_NODE_SIZE_BYTES;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub static PAGE_LOAD_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub static PAGE_LOAD_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub static NODE_GET_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub static NODE_GET_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub static NODE_INSERT_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub static NODE_INSERT_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:231:5
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct DiskNodeStore<K, V, S>
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 231 |     reader: Arc<RwLock<File>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 232 |     writer: Arc<RwLock<File>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 233 |     //persist_writer: Arc<RwLock<File>>,
[INFO] [stdout] 234 |     nodes: Arc<DashMap<NodeId, Arc<GuardedNode<K, V>>>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 235 |     serializer: S,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 236 |     key_size: usize,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 237 |     value_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 238 |     flush_every: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 239 |     flush_buffer_max_size: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 240 |     start: Instant,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 241 |     last_flush: Arc<AtomicU64>,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 242 |     persist_node_ids: Arc<Mutex<HashSet<NodeId>>>, //node_buffer: Arc<RwLock<HashMap<NodeId, BTreeNode<K, V>>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 243 |     //persist_nodes: Arc<Mutex<Vec<BTreeNode<K, V>>>>,
[INFO] [stdout] 244 |     metrics: BTreeMetrics,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DiskNodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:253:14
[INFO] [stdout]     |
[INFO] [stdout] 247 | / impl<K, V, S> DiskNodeStore<K, V, S>
[INFO] [stdout] 248 | | where
[INFO] [stdout] 249 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 250 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 251 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 252 |   {
[INFO] [stdout] 253 |       async fn open(
[INFO] [stdout]     |                ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |       async fn get(&self, node_id: NodeId) -> Option<Arc<RwLock<BTreeNode<K, V>>>> {
[INFO] [stdout]     |                ^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |       async fn insert(&self, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |       async fn persist<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 387 |       async fn persist_node_id<'a>(&self, node_id: NodeId, node: BTreeNode<K, V>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |       pub async fn flush(&self) {
[INFO] [stdout]     |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 491 |       async fn flush_buffer_size(&self) -> usize {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |       pub async fn flush_buffer_full(&self) -> bool {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 501 |       async fn write_nodes(&self, nodes: Vec<Arc<RwLock<BTreeNode<K, V>>>>) {
[INFO] [stdout]     |                ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 531 |       async fn write_node(
[INFO] [stdout]     |                ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 613 |       async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |       fn clear_cache(&self) {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_max_keys_per_node` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:623:8
[INFO] [stdout]     |
[INFO] [stdout] 623 | pub fn calculate_max_keys_per_node(key_size: usize, value_size: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:672:12
[INFO] [stdout]     |
[INFO] [stdout] 671 | impl StringNodeSerializer {
[INFO] [stdout]     | ------------------------- associated function in this implementation
[INFO] [stdout] 672 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:729:12
[INFO] [stdout]     |
[INFO] [stdout] 728 | impl I32NodeSerializer {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 729 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:16:18
[INFO] [stdout]     |
[INFO] [stdout] 10  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11  | | where
[INFO] [stdout] 12  | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 13  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15  |   {
[INFO] [stdout] 16  |       pub async fn remove_from_root(&self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46  |       async fn remove_recursive(&self, node_id: NodeId, key: &K) -> RemoveResult {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |       async fn remove_in_subtree<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |       async fn merge_with_left_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |       async fn merge_with_right_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |       async fn take_predecessor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |       async fn take_successor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RemoveResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:333:6
[INFO] [stdout]     |
[INFO] [stdout] 333 | enum RemoveResult {
[INFO] [stdout]     |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TakeResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:339:6
[INFO] [stdout]     |
[INFO] [stdout] 339 | enum TakeResult<K, V> {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `exists`, `remove`, and `min_keys_per_node` are never used
[INFO] [stdout]    --> src/storage/b_tree/tree.rs:54:18
[INFO] [stdout]     |
[INFO] [stdout] 48  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 49  | | where
[INFO] [stdout] 50  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 51  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 52  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 53  |   {
[INFO] [stdout] 54  |       pub async fn new(
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |       pub async fn add(&mut self, key: K, value: V) {
[INFO] [stdout]     |                    ^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |       pub async fn exists(&mut self, key: K) -> bool {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |       pub async fn remove(&mut self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |       pub fn min_keys_per_node(&self) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MaxDepth` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | type MaxDepth = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `KeyCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | type KeyCount = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NodeCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | type NodeCount = usize;
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate` and `validate_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:20:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 15 | | where
[INFO] [stdout] 16 | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 17 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 18 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 19 |   {
[INFO] [stdout] 20 |       pub async fn validate(&self)
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |       async fn validate_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `role_service`, `write_ahead_log`, `btree`, `replicator`, and `puts_histogram` are never read
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct WriteCommandHandler {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 24 |     node_id: NodeId,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     role_service: RoleService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 26 |     write_ahead_log: WriteAheadLog,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     btree: BTree<String, String, StringNodeSerializer>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 28 |     replicator: StorageReplicator,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 29 |     puts_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteCommandHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl WriteCommandHandler {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 33 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub async fn handle(&mut self, command: WriteCommand) -> Result<(), WriteError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LeadershipError` and `BtreeWriteBufferFull` are never constructed
[INFO] [stdout]    --> src/storage/commands/handlers/write.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout] 96  | pub enum WriteError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 97  |     #[error("failed to write because this node is not the leader")]
[INFO] [stdout] 98  |     LeadershipError,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     BtreeWriteBufferFull(),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WriteError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `write_ahead_log`, and `btree` are never read
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct WriteReplicaCommandHandler {
[INFO] [stdout]    |            -------------------------- fields in this struct
[INFO] [stdout] 24 |     node_id: NodeId,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     write_ahead_log: WriteAheadLog,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     btree: BTree<String, String, StringNodeSerializer>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteReplicaCommandHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl WriteReplicaCommandHandler {
[INFO] [stdout]    | ------------------------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub async fn handle(&mut self, command: WriteReplicaCommand) -> Result<(), WriteError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MisdeliveredMessageError` and `BtreeWriteBufferFull` are never constructed
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum WriteError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 85 |     MisdeliveredMessageError(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     #[error("failed to write because btree buffer is full")]
[INFO] [stdout] 87 |     BtreeWriteBufferFull(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `write_command_handler` and `write_replica_command_handler` are never read
[INFO] [stdout]   --> src/storage/handle_message.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct StorageMessageHandler {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 20 |     write_command_handler: WriteCommandHandler,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     write_replica_command_handler: WriteReplicaCommandHandler,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageMessageHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `handle`, and `handle_command` are never used
[INFO] [stdout]   --> src/storage/handle_message.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl StorageMessageHandler {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn handle(&mut self, message: StorageMessage) -> Result<(), StorageError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     async fn handle_command(&mut self, command: StorageCommand) -> Result<(), StorageError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_sorted_key_value_iters` is never used
[INFO] [stdout]   --> src/storage/key_value.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn merge_sorted_key_value_iters(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `message_sender` and `members` are never read
[INFO] [stdout]   --> src/storage/replicator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct StorageReplicator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 10 |     message_sender: MessageSender,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     members: Vec<NodeId>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageReplicator` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `replicate` are never used
[INFO] [stdout]   --> src/storage/replicator.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl StorageReplicator {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(members: Vec<NodeId>, message_sender: MessageSender) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn replicate(
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/skip_list.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 18  | impl SkipList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 19  |     pub fn new() -> SkipList {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32  |     pub fn insert(&mut self, key: String, value: String, highest_level: usize) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn find(&self, key: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn find_node(&self, key: &str) -> Option<Arc<RwLock<SkipListNode>>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn remove(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn count_nodes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn assert_valid(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn iter(&self) -> SkipListIterator {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub fn coin_flip() -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip_with_rng` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:361:8
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub fn coin_flip_with_rng(rng: &mut StdRng) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bench_skip_list` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:686:8
[INFO] [stdout]     |
[INFO] [stdout] 686 | pub fn bench_skip_list() -> Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_structure` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:609:8
[INFO] [stdout]     |
[INFO] [stdout] 609 |     fn assert_structure(skip_list: &SkipList, keys: Vec<Vec<String>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `wal_buffer_lock_wait_histogram`, `buffer`, `start`, and `last_flush` are never read
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct WriteAheadLog {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     wal_buffer_lock_wait_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     buffer: Arc<Mutex<Vec<u8>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     //buffer_start: Arc<AtomicU64>,
[INFO] [stdout] 25 |     start: Instant,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 26 |     last_flush: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteAheadLog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `position` is never used
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 30  | impl WriteAheadLog {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn position(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file`, `position`, and `offset` are never read
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | struct WriteAheadLogIndex {
[INFO] [stdout]     |        ------------------ fields in this struct
[INFO] [stdout] 261 |     file: File,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 262 |     position: u64,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 263 |     offset: u64,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WriteAheadLogIndex` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_or_open` and `write` are never used
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:267:18
[INFO] [stdout]     |
[INFO] [stdout] 266 | impl WriteAheadLogIndex {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 267 |     pub async fn create_or_open(path: &str) -> Result<Self, CreateError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub async fn write(&mut self, position: u64, offset: u64) -> Result<(), WriteError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MessageRecipient` is never used
[INFO] [stdout]   --> src/bynamo_node.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub type MessageRecipient = NodeId;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_hash` is never used
[INFO] [stdout]  --> src/util/hash.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn compute_hash(key: &str) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_metrics` is never used
[INFO] [stdout]  --> src/util/metrics.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn init_metrics(node_id: NodeId) -> Registry {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `will_revive_at` and `will_die_at` are never read
[INFO] [stdout]   --> src/consensus/role_consensus.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct Consensus {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     will_revive_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     will_die_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_string` is never used
[INFO] [stdout]  --> src/util/random_string.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_string(size: usize) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_first_ok` is never used
[INFO] [stdout]  --> src/util/select_first_ok.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub async fn select_first_ok<F, T, E>(futures: Vec<F>) -> Result<T, Vec<E>>
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ALIVE_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:63:7
[INFO] [stdout]    |
[INFO] [stdout] 63 | const MAX_ALIVE_DURATION_MILLISECONDS: u64 = 30_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DEAD_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | const MAX_DEAD_DURATION_MILLISECONDS: u64 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Recipient` is never used
[INFO] [stdout]  --> src/messaging/mod.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type Recipient = NodeId;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/messaging/sender.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum SendError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 45 |     #[error("failed to send message")]
[INFO] [stdout] 46 |     Error,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nodes` is never constructed
[INFO] [stdout]   --> src/storage/b_tree/add.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct Nodes<K, V>
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeldLocks` is never constructed
[INFO] [stdout]    --> src/storage/b_tree/add.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | struct HeldLocks<'a, K, V>
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print` and `format` are never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 14 | | where
[INFO] [stdout] 15 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 16 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 17 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 18 |   {
[INFO] [stdout] 19 |       pub async fn print(&self) {
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |       pub async fn format(&self) -> String {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_leaf_nodes_recursive` is never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:69:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 63 | | where
[INFO] [stdout] 64 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 65 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 66 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |       async fn get_leaf_nodes_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Start` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:114:6
[INFO] [stdout]     |
[INFO] [stdout] 114 | type Start = usize;
[INFO] [stdout]     |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `End` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:115:6
[INFO] [stdout]     |
[INFO] [stdout] 115 | type End = usize;
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_from_root` and `find_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/find.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 9  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 10 | | where
[INFO] [stdout] 11 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 12 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 14 |   {
[INFO] [stdout] 15 |       pub async fn find_from_root(&self, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |       pub async fn find_recursive(&self, node_id: NodeId, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `list_keys` and `list_keys_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/list.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11 | | where
[INFO] [stdout] 12 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15 |   {
[INFO] [stdout] 16 |       pub async fn list_keys(&self) -> Vec<K> {
[INFO] [stdout]    |                    ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |       pub async fn list_keys_recursive(&self, node_id: NodeId, keys: &mut Vec<K>) {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Memory` is never constructed
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum NodeStore<K, V, S>
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Memory(MemoryNodeStore<K, V>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_memory`, `remove`, and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout] 40  | / impl<K, V, S> NodeStore<K, V, S>
[INFO] [stdout] 41  | | where
[INFO] [stdout] 42  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 43  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 44  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 45  |   {
[INFO] [stdout] 46  |       pub fn new_memory() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |       pub async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |       pub fn clear_cache(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `flush_required`, `remove`, and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:166:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | / impl<K, V> MemoryNodeStore<K, V>
[INFO] [stdout] 162 | | where
[INFO] [stdout] 163 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 164 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout]     | |_________________________________________________________- associated items in this implementation
[INFO] [stdout] 165 |   {
[INFO] [stdout] 166 |       fn new() -> Self {
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |       fn flush_required(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |       fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |       fn clear_cache(&self) {}
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub static PAGE_LOAD_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub static PAGE_LOAD_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub static NODE_GET_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub static NODE_GET_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub static NODE_INSERT_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub static NODE_INSERT_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `flush_every` is never read
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct DiskNodeStore<K, V, S>
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     flush_every: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DiskNodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove` and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:613:14
[INFO] [stdout]     |
[INFO] [stdout] 247 | / impl<K, V, S> DiskNodeStore<K, V, S>
[INFO] [stdout] 248 | | where
[INFO] [stdout] 249 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 250 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 251 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 613 |       async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |       fn clear_cache(&self) {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:729:12
[INFO] [stdout]     |
[INFO] [stdout] 728 | impl I32NodeSerializer {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 729 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:16:18
[INFO] [stdout]     |
[INFO] [stdout] 10  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11  | | where
[INFO] [stdout] 12  | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 13  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15  |   {
[INFO] [stdout] 16  |       pub async fn remove_from_root(&self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46  |       async fn remove_recursive(&self, node_id: NodeId, key: &K) -> RemoveResult {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |       async fn remove_in_subtree<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |       async fn merge_with_left_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |       async fn merge_with_right_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |       async fn take_predecessor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |       async fn take_successor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RemoveResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:333:6
[INFO] [stdout]     |
[INFO] [stdout] 333 | enum RemoveResult {
[INFO] [stdout]     |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TakeResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:339:6
[INFO] [stdout]     |
[INFO] [stdout] 339 | enum TakeResult<K, V> {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exists`, `remove`, and `min_keys_per_node` are never used
[INFO] [stdout]    --> src/storage/b_tree/tree.rs:173:18
[INFO] [stdout]     |
[INFO] [stdout] 48  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 49  | | where
[INFO] [stdout] 50  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 51  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 52  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |       pub async fn exists(&mut self, key: K) -> bool {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |       pub async fn remove(&mut self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |       pub fn min_keys_per_node(&self) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MaxDepth` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | type MaxDepth = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `KeyCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | type KeyCount = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NodeCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | type NodeCount = usize;
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate` and `validate_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:20:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 15 | | where
[INFO] [stdout] 16 | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 17 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 18 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 19 |   {
[INFO] [stdout] 20 |       pub async fn validate(&self)
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |       async fn validate_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `role_service`, and `replicator` are never read
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct WriteCommandHandler {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 24 |     node_id: NodeId,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     role_service: RoleService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     replicator: StorageReplicator,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteCommandHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LeadershipError` is never constructed
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:98:5
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub enum WriteError {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 97 |     #[error("failed to write because this node is not the leader")]
[INFO] [stdout] 98 |     LeadershipError,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_sorted_key_value_iters` is never used
[INFO] [stdout]   --> src/storage/key_value.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn merge_sorted_key_value_iters(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `message_sender` and `members` are never read
[INFO] [stdout]   --> src/storage/replicator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct StorageReplicator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 10 |     message_sender: MessageSender,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     members: Vec<NodeId>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageReplicator` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `replicate` is never used
[INFO] [stdout]   --> src/storage/replicator.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl StorageReplicator {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn replicate(
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/skip_list.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 18  | impl SkipList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 19  |     pub fn new() -> SkipList {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32  |     pub fn insert(&mut self, key: String, value: String, highest_level: usize) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn find(&self, key: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn find_node(&self, key: &str) -> Option<Arc<RwLock<SkipListNode>>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn remove(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn count_nodes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn assert_valid(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn iter(&self) -> SkipListIterator {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub fn coin_flip() -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip_with_rng` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:361:8
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub fn coin_flip_with_rng(rng: &mut StdRng) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bench_skip_list` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:686:8
[INFO] [stdout]     |
[INFO] [stdout] 686 | pub fn bench_skip_list() -> Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_structure` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:609:8
[INFO] [stdout]     |
[INFO] [stdout] 609 |     fn assert_structure(skip_list: &SkipList, keys: Vec<Vec<String>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `wal_buffer_lock_wait_histogram`, `buffer`, `start`, and `last_flush` are never read
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct WriteAheadLog {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     wal_buffer_lock_wait_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     buffer: Arc<Mutex<Vec<u8>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     //buffer_start: Arc<AtomicU64>,
[INFO] [stdout] 25 |     start: Instant,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 26 |     last_flush: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteAheadLog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file`, `position`, and `offset` are never read
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | struct WriteAheadLogIndex {
[INFO] [stdout]     |        ------------------ fields in this struct
[INFO] [stdout] 261 |     file: File,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 262 |     position: u64,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 263 |     offset: u64,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WriteAheadLogIndex` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_or_open` and `write` are never used
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:267:18
[INFO] [stdout]     |
[INFO] [stdout] 266 | impl WriteAheadLogIndex {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 267 |     pub async fn create_or_open(path: &str) -> Result<Self, CreateError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub async fn write(&mut self, position: u64, offset: u64) -> Result<(), WriteError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_hash` is never used
[INFO] [stdout]  --> src/util/hash.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn compute_hash(key: &str) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_string` is never used
[INFO] [stdout]  --> src/util/random_string.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_string(size: usize) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_first_ok` is never used
[INFO] [stdout]  --> src/util/select_first_ok.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub async fn select_first_ok<F, T, E>(futures: Vec<F>) -> Result<T, Vec<E>>
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:270:47
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 let mut file = File::open(path.clone()).await?;
[INFO] [stdout]     |                                               ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:276:49
[INFO] [stdout]     |
[INFO] [stdout] 276 |                 let mut file = File::create(path.clone()).await?;
[INFO] [stdout]     |                                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:270:47
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 let mut file = File::open(path.clone()).await?;
[INFO] [stdout]     |                                               ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:276:49
[INFO] [stdout]     |
[INFO] [stdout] 276 |                 let mut file = File::create(path.clone()).await?;
[INFO] [stdout]     |                                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MessageRecipient` is never used
[INFO] [stdout]   --> src/bynamo_node.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub type MessageRecipient = NodeId;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Follower`, `Candidate`, and `Leader` are never constructed
[INFO] [stdout]  --> src/consensus/role.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Role {
[INFO] [stdout]   |          ---- variants in this enum
[INFO] [stdout] 3 |     Follower,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 4 |     Candidate,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 5 |     Leader,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `consensus` is never read
[INFO] [stdout]   --> src/consensus/role_consensus.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct RoleConsensus {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 16 |     consensus: Arc<RwLock<Consensus>>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RoleConsensus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `tick`, and `handle_message` are never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl RoleConsensus {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn tick(&self) {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn handle_message(&self, message: RoleConsensusMessage) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/consensus/role_consensus.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | struct Consensus {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 46 |     role: Role,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 47 |     term: TermId,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 48 |     voted_for: Option<NodeId>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 49 |     votes_received: HashSet<NodeId>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     members: Vec<NodeId>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 51 |     role_service: RoleService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 52 |     message_sender: MessageSender,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     id: NodeId,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 54 |     next_timeout: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 55 |     next_heartbeat: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     will_revive_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     will_die_at: Option<Instant>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 58 |     started: Instant,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEARTBEAT_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:61:7
[INFO] [stdout]    |
[INFO] [stdout] 61 | const HEARTBEAT_MILLISECONDS: u64 = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ELECTION_TIMEOUT_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:62:7
[INFO] [stdout]    |
[INFO] [stdout] 62 | const ELECTION_TIMEOUT_MILLISECONDS: u64 = 3000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_ALIVE_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:63:7
[INFO] [stdout]    |
[INFO] [stdout] 63 | const MAX_ALIVE_DURATION_MILLISECONDS: u64 = 30_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_DEAD_DURATION_MILLISECONDS` is never used
[INFO] [stdout]   --> src/consensus/role_consensus.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | const MAX_DEAD_DURATION_MILLISECONDS: u64 = 10_000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/consensus/role_consensus.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout] 68  | impl Consensus {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 69  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     fn set_next_timeout(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn set_next_heartbeat(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn tick(&mut self) {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     async fn send_heartbeat(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     async fn on_timeout(&mut self) {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     fn reset_term_as_follower(&mut self, term: TermId) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     async fn vote_for(&mut self, votee: NodeId) {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub async fn handle_message(&mut self, message: RoleConsensusMessage) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     async fn receive_vote_command(&mut self, command: VoteCommand) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 331 |     fn receive_heartbeat_command(&mut self, command: HeartbeatCommand) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     async fn receive_request_vote_command(&mut self, command: RequestVoteCommand) {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Recipient` is never used
[INFO] [stdout]  --> src/messaging/mod.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub type Recipient = NodeId;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connections`, `stream_open_histogram`, and `stream_ttfb_histogram` are never read
[INFO] [stdout]   --> src/messaging/client.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MessageClient {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 11 |     connections: Arc<Vec<Connection>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 12 |     stream_open_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     stream_ttfb_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MessageClient` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `connect` and `send_message` are never used
[INFO] [stdout]   --> src/messaging/client.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MessageClient {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 17 |     pub async fn connect(
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub async fn send_message(&self, message: Message) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/messaging/client.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl SkipServerVerification {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 78 |     fn new() -> Arc<Self> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_client` is never used
[INFO] [stdout]   --> src/messaging/client.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn configure_client() -> ClientConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/messaging/handler.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl MessageHandler {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new(storage_handler: StorageMessageHandler, role_consensus: RoleConsensus) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn handle(&mut self, message: Message) -> Result<(), StorageError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `clients` is never read
[INFO] [stdout]  --> src/messaging/sender.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MessageSender {
[INFO] [stdout]   |            ------------- field in this struct
[INFO] [stdout] 7 |     clients: Arc<RwLock<HashMap<NodeId, MessageClient>>>,
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `MessageSender` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_client`, `send_and_wait`, and `send_and_forget` are never used
[INFO] [stdout]   --> src/messaging/sender.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl MessageSender {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 11 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub async fn add_client(&mut self, node_id: NodeId, client: MessageClient) {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub async fn send_and_wait(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn send_and_forget(&mut self, recipient: NodeId, message: Message) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]   --> src/messaging/sender.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum SendError {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 45 |     #[error("failed to send message")]
[INFO] [stdout] 46 |     Error,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SendError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodeService` is never constructed
[INFO] [stdout]   --> src/messaging/server.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct NodeService {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `start` is never used
[INFO] [stdout]   --> src/messaging/server.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl NodeService {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 16 |     pub async fn start(address: &str, handler: MessageHandler, registry: &Registry) -> Self {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_server_endpoint` is never used
[INFO] [stdout]   --> src/messaging/server.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub fn make_server_endpoint(bind_addr: SocketAddr) -> Result<(Endpoint, Vec<u8>), Box<dyn Error>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_server` is never used
[INFO] [stdout]   --> src/messaging/server.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn configure_server() -> Result<(ServerConfig, Vec<u8>), Box<dyn Error>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Memory` is never constructed
[INFO] [stdout]  --> src/role_service.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum RoleService {
[INFO] [stdout]   |          ----------- variant in this enum
[INFO] [stdout] 7 |     Memory(MemoryRoleService),
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `RoleService` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_memory`, `announce_new_term`, `announce_leader`, and `leader` are never used
[INFO] [stdout]   --> src/role_service.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl RoleService {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn new_memory() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub async fn announce_new_term(&mut self, term: TermId) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn announce_leader(&mut self, leader: NodeId, term: TermId) {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub async fn leader(&self) -> Option<NodeId> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state` is never read
[INFO] [stdout]   --> src/role_service.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MemoryRoleService {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 33 |     state: Arc<RwLock<State>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MemoryRoleService` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `leader` and `term` are never read
[INFO] [stdout]   --> src/role_service.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | struct State {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 37 |     leader: Option<NodeId>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 38 |     term: TermId,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `announce_new_term`, `announce_leader`, and `leader` are never used
[INFO] [stdout]   --> src/role_service.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl MemoryRoleService {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 42 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     async fn announce_new_term(&mut self, term: TermId) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     async fn announce_leader(&mut self, leader: NodeId, term: TermId) {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     async fn leader(&self) -> Option<NodeId> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_in_memory_node` is never used
[INFO] [stdout]   --> src/start.rs:22:14
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub async fn start_in_memory_node(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_btree_index` is never used
[INFO] [stdout]   --> src/start.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | async fn create_btree_index(
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Nodes` is never constructed
[INFO] [stdout]   --> src/storage/b_tree/add.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | struct Nodes<K, V>
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeldLocks` is never constructed
[INFO] [stdout]    --> src/storage/b_tree/add.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | struct HeldLocks<'a, K, V>
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `print` and `format` are never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 14 | | where
[INFO] [stdout] 15 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 16 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 17 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 18 |   {
[INFO] [stdout] 19 |       pub async fn print(&self) {
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |       pub async fn format(&self) -> String {
[INFO] [stdout]    |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_leaf_nodes_recursive` is never used
[INFO] [stdout]   --> src/storage/b_tree/debug.rs:69:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 63 | | where
[INFO] [stdout] 64 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 65 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 66 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 69 |       async fn get_leaf_nodes_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Start` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:114:6
[INFO] [stdout]     |
[INFO] [stdout] 114 | type Start = usize;
[INFO] [stdout]     |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `End` is never used
[INFO] [stdout]    --> src/storage/b_tree/debug.rs:115:6
[INFO] [stdout]     |
[INFO] [stdout] 115 | type End = usize;
[INFO] [stdout]     |      ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_from_root` and `find_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/find.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 9  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 10 | | where
[INFO] [stdout] 11 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 12 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 14 |   {
[INFO] [stdout] 15 |       pub async fn find_from_root(&self, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |       pub async fn find_recursive(&self, node_id: NodeId, key: K) -> bool {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `list_keys` and `list_keys_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/list.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11 | | where
[INFO] [stdout] 12 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 13 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15 |   {
[INFO] [stdout] 16 |       pub async fn list_keys(&self) -> Vec<K> {
[INFO] [stdout]    |                    ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |       pub async fn list_keys_recursive(&self, node_id: NodeId, keys: &mut Vec<K>) {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Memory` is never constructed
[INFO] [stdout]   --> src/storage/b_tree/node_store.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum NodeStore<K, V, S>
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Memory(MemoryNodeStore<K, V>),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_memory`, `remove`, and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:46:12
[INFO] [stdout]     |
[INFO] [stdout] 40  | / impl<K, V, S> NodeStore<K, V, S>
[INFO] [stdout] 41  | | where
[INFO] [stdout] 42  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 43  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 44  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- associated items in this implementation
[INFO] [stdout] 45  |   {
[INFO] [stdout] 46  |       pub fn new_memory() -> Self {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |       pub async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |       pub fn clear_cache(&self) {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `flush_required`, `remove`, and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:166:8
[INFO] [stdout]     |
[INFO] [stdout] 161 | / impl<K, V> MemoryNodeStore<K, V>
[INFO] [stdout] 162 | | where
[INFO] [stdout] 163 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 164 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout]     | |_________________________________________________________- associated items in this implementation
[INFO] [stdout] 165 |   {
[INFO] [stdout] 166 |       fn new() -> Self {
[INFO] [stdout]     |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |       fn flush_required(&self) -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |       fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |       fn clear_cache(&self) {}
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub static PAGE_LOAD_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `PAGE_LOAD_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub static PAGE_LOAD_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub static NODE_GET_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_GET_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:219:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | pub static NODE_GET_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_COUNT` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:221:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub static NODE_INSERT_COUNT: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `NODE_INSERT_MICROSECONDS_DURATION_TOTAL` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub static NODE_INSERT_MICROSECONDS_DURATION_TOTAL: AtomicUsize = AtomicUsize::new(0);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `flush_every` is never read
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:238:5
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub struct DiskNodeStore<K, V, S>
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 238 |     flush_every: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DiskNodeStore` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove` and `clear_cache` are never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:613:14
[INFO] [stdout]     |
[INFO] [stdout] 247 | / impl<K, V, S> DiskNodeStore<K, V, S>
[INFO] [stdout] 248 | | where
[INFO] [stdout] 249 | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 250 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 251 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 613 |       async fn remove<'a>(&self, node: RwLockWriteGuard<'a, BTreeNode<K, V>>) {
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |       fn clear_cache(&self) {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/storage/b_tree/node_store.rs:729:12
[INFO] [stdout]     |
[INFO] [stdout] 728 | impl I32NodeSerializer {
[INFO] [stdout]     | ---------------------- associated function in this implementation
[INFO] [stdout] 729 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:16:18
[INFO] [stdout]     |
[INFO] [stdout] 10  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 11  | | where
[INFO] [stdout] 12  | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 13  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 14  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 15  |   {
[INFO] [stdout] 16  |       pub async fn remove_from_root(&self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46  |       async fn remove_recursive(&self, node_id: NodeId, key: &K) -> RemoveResult {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |       async fn remove_in_subtree<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |       async fn merge_with_left_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |       async fn merge_with_right_sibling<'a>(
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |       async fn take_predecessor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 313 |       async fn take_successor_recursive(&self, node: NodeId) -> TakeResult<K, V> {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RemoveResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:333:6
[INFO] [stdout]     |
[INFO] [stdout] 333 | enum RemoveResult {
[INFO] [stdout]     |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TakeResult` is never used
[INFO] [stdout]    --> src/storage/b_tree/remove.rs:339:6
[INFO] [stdout]     |
[INFO] [stdout] 339 | enum TakeResult<K, V> {
[INFO] [stdout]     |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exists`, `remove`, and `min_keys_per_node` are never used
[INFO] [stdout]    --> src/storage/b_tree/tree.rs:173:18
[INFO] [stdout]     |
[INFO] [stdout] 48  | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 49  | | where
[INFO] [stdout] 50  | |     K: Ord + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 51  | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 52  | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]     | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 173 |       pub async fn exists(&mut self, key: K) -> bool {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |       pub async fn remove(&mut self, key: &K) {
[INFO] [stdout]     |                    ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |       pub fn min_keys_per_node(&self) -> usize {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MaxDepth` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:10:6
[INFO] [stdout]    |
[INFO] [stdout] 10 | type MaxDepth = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `KeyCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:11:6
[INFO] [stdout]    |
[INFO] [stdout] 11 | type KeyCount = usize;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NodeCount` is never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:12:6
[INFO] [stdout]    |
[INFO] [stdout] 12 | type NodeCount = usize;
[INFO] [stdout]    |      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `validate` and `validate_recursive` are never used
[INFO] [stdout]   --> src/storage/b_tree/validate.rs:20:18
[INFO] [stdout]    |
[INFO] [stdout] 14 | / impl<K, V, S> BTree<K, V, S>
[INFO] [stdout] 15 | | where
[INFO] [stdout] 16 | |     K: Ord + Display + Debug + Clone + Send + Sync,
[INFO] [stdout] 17 | |     V: PartialEq + Clone + Debug + Display + Send + Sync,
[INFO] [stdout] 18 | |     S: SerializeNode<K, V> + DeserializeNode<K, V> + Send + Sync + Clone,
[INFO] [stdout]    | |_________________________________________________________________________- methods in this implementation
[INFO] [stdout] 19 |   {
[INFO] [stdout] 20 |       pub async fn validate(&self)
[INFO] [stdout]    |                    ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |       async fn validate_recursive(
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `role_service`, `write_ahead_log`, `btree`, `replicator`, and `puts_histogram` are never read
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct WriteCommandHandler {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 24 |     node_id: NodeId,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     role_service: RoleService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 26 |     write_ahead_log: WriteAheadLog,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     btree: BTree<String, String, StringNodeSerializer>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 28 |     replicator: StorageReplicator,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 29 |     puts_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteCommandHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/storage/commands/handlers/write.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl WriteCommandHandler {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 33 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub async fn handle(&mut self, command: WriteCommand) -> Result<(), WriteError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `LeadershipError` and `BtreeWriteBufferFull` are never constructed
[INFO] [stdout]    --> src/storage/commands/handlers/write.rs:98:5
[INFO] [stdout]     |
[INFO] [stdout] 96  | pub enum WriteError {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] 97  |     #[error("failed to write because this node is not the leader")]
[INFO] [stdout] 98  |     LeadershipError,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     BtreeWriteBufferFull(),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WriteError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `node_id`, `write_ahead_log`, and `btree` are never read
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct WriteReplicaCommandHandler {
[INFO] [stdout]    |            -------------------------- fields in this struct
[INFO] [stdout] 24 |     node_id: NodeId,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 25 |     write_ahead_log: WriteAheadLog,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     btree: BTree<String, String, StringNodeSerializer>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteReplicaCommandHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `handle` are never used
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl WriteReplicaCommandHandler {
[INFO] [stdout]    | ------------------------------- associated items in this implementation
[INFO] [stdout] 30 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub async fn handle(&mut self, command: WriteReplicaCommand) -> Result<(), WriteError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MisdeliveredMessageError` and `BtreeWriteBufferFull` are never constructed
[INFO] [stdout]   --> src/storage/commands/handlers/write_replica.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum WriteError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 85 |     MisdeliveredMessageError(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 86 |     #[error("failed to write because btree buffer is full")]
[INFO] [stdout] 87 |     BtreeWriteBufferFull(),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `write_command_handler` and `write_replica_command_handler` are never read
[INFO] [stdout]   --> src/storage/handle_message.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct StorageMessageHandler {
[INFO] [stdout]    |            --------------------- fields in this struct
[INFO] [stdout] 20 |     write_command_handler: WriteCommandHandler,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     write_replica_command_handler: WriteReplicaCommandHandler,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageMessageHandler` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `handle`, and `handle_command` are never used
[INFO] [stdout]   --> src/storage/handle_message.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl StorageMessageHandler {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn handle(&mut self, message: StorageMessage) -> Result<(), StorageError> {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     async fn handle_command(&mut self, command: StorageCommand) -> Result<(), StorageError> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `merge_sorted_key_value_iters` is never used
[INFO] [stdout]   --> src/storage/key_value.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn merge_sorted_key_value_iters(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `message_sender` and `members` are never read
[INFO] [stdout]   --> src/storage/replicator.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct StorageReplicator {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 10 |     message_sender: MessageSender,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     members: Vec<NodeId>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `StorageReplicator` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `replicate` are never used
[INFO] [stdout]   --> src/storage/replicator.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl StorageReplicator {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new(members: Vec<NodeId>, message_sender: MessageSender) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn replicate(
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/storage/skip_list.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 18  | impl SkipList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 19  |     pub fn new() -> SkipList {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32  |     pub fn insert(&mut self, key: String, value: String, highest_level: usize) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn find(&self, key: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     fn find_node(&self, key: &str) -> Option<Arc<RwLock<SkipListNode>>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn remove(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn count_nodes(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     fn assert_valid(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn iter(&self) -> SkipListIterator {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:353:8
[INFO] [stdout]     |
[INFO] [stdout] 353 | pub fn coin_flip() -> usize {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `coin_flip_with_rng` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:361:8
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub fn coin_flip_with_rng(rng: &mut StdRng) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bench_skip_list` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:686:8
[INFO] [stdout]     |
[INFO] [stdout] 686 | pub fn bench_skip_list() -> Result {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_structure` is never used
[INFO] [stdout]    --> src/storage/skip_list.rs:609:8
[INFO] [stdout]     |
[INFO] [stdout] 609 |     fn assert_structure(skip_list: &SkipList, keys: Vec<Vec<String>>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/storage/write_ahead_log.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct WriteAheadLog {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     wal_write_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     wal_buffer_lock_wait_histogram: Histogram,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     position: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 23 |     buffer: Arc<Mutex<Vec<u8>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     //buffer_start: Arc<AtomicU64>,
[INFO] [stdout] 25 |     start: Instant,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 26 |     last_flush: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 27 |     buffer_notify: Arc<Mutex<(Vec<Vec<u8>>, Arc<Notify>)>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WriteAheadLog` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create`, `write_new`, `write`, and `position` are never used
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:31:18
[INFO] [stdout]     |
[INFO] [stdout] 30  | impl WriteAheadLog {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 31  |     pub async fn create(
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn write_new(&mut self, key: &str, value: &str) -> Result<u64, WriteError> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn write(&mut self, position: u64, key: &str, value: &str) -> Result<(), WriteError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn position(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file`, `position`, and `offset` are never read
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 260 | struct WriteAheadLogIndex {
[INFO] [stdout]     |        ------------------ fields in this struct
[INFO] [stdout] 261 |     file: File,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 262 |     position: u64,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 263 |     offset: u64,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WriteAheadLogIndex` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_or_open` and `write` are never used
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:267:18
[INFO] [stdout]     |
[INFO] [stdout] 266 | impl WriteAheadLogIndex {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] 267 |     pub async fn create_or_open(path: &str) -> Result<Self, CreateError> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub async fn write(&mut self, position: u64, offset: u64) -> Result<(), WriteError> {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `compute_hash` is never used
[INFO] [stdout]  --> src/util/hash.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn compute_hash(key: &str) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_metrics` is never used
[INFO] [stdout]  --> src/util/metrics.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn init_metrics(node_id: NodeId) -> Registry {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_string` is never used
[INFO] [stdout]  --> src/util/random_string.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn random_string(size: usize) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_first_ok` is never used
[INFO] [stdout]  --> src/util/select_first_ok.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub async fn select_first_ok<F, T, E>(futures: Vec<F>) -> Result<T, Vec<E>>
[INFO] [stdout]   |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:270:47
[INFO] [stdout]     |
[INFO] [stdout] 270 |                 let mut file = File::open(path.clone()).await?;
[INFO] [stdout]     |                                               ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/storage/write_ahead_log.rs:276:49
[INFO] [stdout]     |
[INFO] [stdout] 276 |                 let mut file = File::create(path.clone()).await?;
[INFO] [stdout]     |                                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: linking with `cc` failed: exit status: 1
[INFO] [stdout]   |
[INFO] [stdout]   = note: LC_ALL="C" PATH="/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/opt/rustwide/cargo-home/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcwhwyIa/symbols.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.00.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.01.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.02.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.03.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.04.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.05.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.06.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.07.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.08.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.09.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.10.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.11.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.12.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.13.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.14.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.btree.748a25ecb7b5f7ef-cgu.15.rcgu.o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55.2px1mr8kl3938u1q.rcgu.o" "-Wl,--as-needed" "-L" "/opt/rustwide/target/debug/deps" "-L" "/opt/rustwide/target/debug/build/fasthash-sys-0fce5ed2995b0b16/out" "-L" "/opt/rustwide/target/debug/build/ring-37a6222ba8a7a663/out" "-L" "/opt/rustwide/target/debug/build/ring-a9833dec05f7051b/out" "-L" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-Wl,-Bstatic" "/opt/rustwide/target/debug/deps/libconsole_subscriber-bd9b16af78c97fa0.rlib" "/opt/rustwide/target/debug/deps/libserde_json-b5e9f8e5ccad5e80.rlib" "/opt/rustwide/target/debug/deps/libhumantime-e2a10e0b2bfa2002.rlib" "/opt/rustwide/target/debug/deps/libhdrhistogram-836c0f98c75a51fb.rlib" "/opt/rustwide/target/debug/deps/libflate2-1347a47922d98cc4.rlib" "/opt/rustwide/target/debug/deps/libminiz_oxide-f272f5814aa49507.rlib" "/opt/rustwide/target/debug/deps/libadler-c8f2240c56a0abca.rlib" "/opt/rustwide/target/debug/deps/libcrc32fast-664446237529ebff.rlib" "/opt/rustwide/target/debug/deps/libnom-850f8877b10382c1.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_channel-2239c0b69ce2d6a7.rlib" "/opt/rustwide/target/debug/deps/libcrossbeam_utils-c927984e5b3dbee5.rlib" "/opt/rustwide/target/debug/deps/libtracing_subscriber-e502cebadf747be3.rlib" "/opt/rustwide/target/debug/deps/libsharded_slab-3e7ea4dc49abc9de.rlib" "/opt/rustwide/target/debug/deps/libmatchers-09eec00427944fa1.rlib" "/opt/rustwide/target/debug/deps/libregex_automata-4c60e2b0ad265c6c.rlib" "/opt/rustwide/target/debug/deps/libregex_syntax-0dc2d12e01b76027.rlib" "/opt/rustwide/target/debug/deps/libregex-32f19ebfc033c838.rlib" "/opt/rustwide/target/debug/deps/libregex_automata-6a8010bb414fea32.rlib" "/opt/rustwide/target/debug/deps/libregex_syntax-a8b158ef39542d38.rlib" "/opt/rustwide/target/debug/deps/libthread_local-37974e86c33cb31d.rlib" "/opt/rustwide/target/debug/deps/libconsole_api-52941ce926a6bf81.rlib" "/opt/rustwide/target/debug/deps/libprost_types-7bc867b38bd43ad7.rlib" "/opt/rustwide/target/debug/deps/libtonic-19371f7d4e9eb605.rlib" "/opt/rustwide/target/debug/deps/libhyper_timeout-3c6d7497680e7757.rlib" "/opt/rustwide/target/debug/deps/libtokio_io_timeout-d4d18824dfb7f511.rlib" "/opt/rustwide/target/debug/deps/libasync_stream-681ccc362d318ca7.rlib" "/opt/rustwide/target/debug/deps/libaxum-6e5412e383c1e0f2.rlib" "/opt/rustwide/target/debug/deps/libmatchit-7386df6c35a398a8.rlib" "/opt/rustwide/target/debug/deps/libbitflags-b7cee2ca4fb438d0.rlib" "/opt/rustwide/target/debug/deps/libsync_wrapper-04fa76556045b729.rlib" "/opt/rustwide/target/debug/deps/libaxum_core-9564a4cde1e1c5e8.rlib" "/opt/rustwide/target/debug/deps/libtower-b841c0e6999ea095.rlib" "/opt/rustwide/target/debug/deps/libindexmap-7b2113ac7fccbab6.rlib" "/opt/rustwide/target/debug/deps/libhashbrown-567986452cb9bc94.rlib" "/opt/rustwide/target/debug/deps/libtower_layer-294cdac6576ba675.rlib" "/opt/rustwide/target/debug/deps/libpin_project-1e45b83de674d7a3.rlib" "/opt/rustwide/target/debug/deps/libtokio_stream-7fcf43d0ecbc3d4c.rlib" "/opt/rustwide/target/debug/deps/libprost-facb52150952aad5.rlib" "/opt/rustwide/target/debug/deps/libbyteorder-e9468b374a0c0c11.rlib" "/opt/rustwide/target/debug/deps/librcgen-929b95bcc3447a5e.rlib" "/opt/rustwide/target/debug/deps/libyasna-db691d14ade49c3c.rlib" "/opt/rustwide/target/debug/deps/libtime-16d9dc0b3dff81fc.rlib" "/opt/rustwide/target/debug/deps/libtime_core-7af5d6eb87ec9652.rlib" "/opt/rustwide/target/debug/deps/libderanged-6dc661ecefd04b20.rlib" "/opt/rustwide/target/debug/deps/libpowerfmt-e8908707a005dea9.rlib" "/opt/rustwide/target/debug/deps/libpem-f0ff7ef2cbf5277b.rlib" "/opt/rustwide/target/debug/deps/libbincode-cd8b73fe8d0ef00e.rlib" "/opt/rustwide/target/debug/deps/libfasthash-ab93f9f5acb5b335.rlib" "/opt/rustwide/target/debug/deps/libxoroshiro128-457d2a5f85aea8af.rlib" "/opt/rustwide/target/debug/deps/libseahash-b0ca079aa5bae4dd.rlib" "/opt/rustwide/target/debug/deps/libfasthash_sys-64da935ca7a93ba1.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-925b73a2e437f0c3.rlib" "/opt/rustwide/target/debug/deps/libdashmap-f22a8b0634010a1d.rlib" "/opt/rustwide/target/debug/deps/libstopwatch-9a0187afceb4db18.rlib" "/opt/rustwide/target/debug/deps/libnum-ab6af1725fc0c1f8.rlib" "/opt/rustwide/target/debug/deps/libnum_rational-9b95a0ba9df23d06.rlib" "/opt/rustwide/target/debug/deps/libnum_bigint-41517bdaa8b53973.rlib" "/opt/rustwide/target/debug/deps/librand-e0d97a7047010c11.rlib" "/opt/rustwide/target/debug/deps/libnum_complex-a8216e21ceb5692e.rlib" "/opt/rustwide/target/debug/deps/librustc_serialize-ca8414f5670a47db.rlib" "/opt/rustwide/target/debug/deps/libnum_iter-c092a0819201fe05.rlib" "/opt/rustwide/target/debug/deps/libnum_integer-166e5fd07b88eba2.rlib" "/opt/rustwide/target/debug/deps/libnum_traits-dcf66cbda2c5463d.rlib" "/opt/rustwide/target/debug/deps/libfutures-2fa09e8f455421a0.rlib" "/opt/rustwide/target/debug/deps/libfutures_executor-9683276c78862070.rlib" "/opt/rustwide/target/debug/deps/libquinn-e3919342ceaad8ef.rlib" "/opt/rustwide/target/debug/deps/libquinn_udp-9a37c2d9a39519e0.rlib" "/opt/rustwide/target/debug/deps/libquinn_proto-3ab72a179c253b4c.rlib" "/opt/rustwide/target/debug/deps/librustls_native_certs-5360b5a42937407c.rlib" "/opt/rustwide/target/debug/deps/librustls_pemfile-ffdc2f3224e5aa74.rlib" "/opt/rustwide/target/debug/deps/librustls-b9cc6a8b034adf9e.rlib" "/opt/rustwide/target/debug/deps/libsct-7adcd29e5e5943a1.rlib" "/opt/rustwide/target/debug/deps/libwebpki-14f3c28bff422b99.rlib" "/opt/rustwide/target/debug/deps/libring-42776975652d87f2.rlib" "/opt/rustwide/target/debug/deps/libspin-1881e9d9c2fdf875.rlib" "/opt/rustwide/target/debug/deps/libuntrusted-66bbe55c9f09dd46.rlib" "/opt/rustwide/target/debug/deps/libring-1cda9ed4a1a4b6b1.rlib" "/opt/rustwide/target/debug/deps/libspin-c4098cd951aef6c9.rlib" "/opt/rustwide/target/debug/deps/libuntrusted-5ec0aa78ed8cda5c.rlib" "/opt/rustwide/target/debug/deps/librustc_hash-3fb13bc50a653a23.rlib" "/opt/rustwide/target/debug/deps/librand-b1704d812849d905.rlib" "/opt/rustwide/target/debug/deps/librand_chacha-8565c0761be51d5c.rlib" "/opt/rustwide/target/debug/deps/libppv_lite86-9f808eb911999ef2.rlib" "/opt/rustwide/target/debug/deps/librand_core-0e83ad49b3b3e1d5.rlib" "/opt/rustwide/target/debug/deps/libgetrandom-7b0dce5ca8148ac4.rlib" "/opt/rustwide/target/debug/deps/libprometheus-0ec30e86dc6190cf.rlib" "/opt/rustwide/target/debug/deps/liblazy_static-591486ebcb9a7ead.rlib" "/opt/rustwide/target/debug/deps/libreqwest-79fd6e542594bd54.rlib" "/opt/rustwide/target/debug/deps/libhyper_tls-2825469ff96926d2.rlib" "/opt/rustwide/target/debug/deps/libbase64-c757f6e1d18850a5.rlib" "/opt/rustwide/target/debug/deps/libipnet-31f1670f407a9398.rlib" "/opt/rustwide/target/debug/deps/libtokio_native_tls-cccc27b316cbae68.rlib" "/opt/rustwide/target/debug/deps/libserde_urlencoded-55af08b23bb68b78.rlib" "/opt/rustwide/target/debug/deps/libryu-f8e8abf733224b36.rlib" "/opt/rustwide/target/debug/deps/libmime-7e306270d8ceb372.rlib" "/opt/rustwide/target/debug/deps/libencoding_rs-000c97fafd38c2ed.rlib" "/opt/rustwide/target/debug/deps/libserde-10510d9e0fdc440e.rlib" "/opt/rustwide/target/debug/deps/libnative_tls-2da889018628eaa3.rlib" "/opt/rustwide/target/debug/deps/libopenssl_probe-d850575132083d7c.rlib" "/opt/rustwide/target/debug/deps/libopenssl-4b463d32dec6612b.rlib" "/opt/rustwide/target/debug/deps/libbitflags-0065cf305c229aa5.rlib" "/opt/rustwide/target/debug/deps/libforeign_types-c05743815e5b8a9d.rlib" "/opt/rustwide/target/debug/deps/libforeign_types_shared-d149f5491fde2862.rlib" "/opt/rustwide/target/debug/deps/libopenssl_sys-5cab948de0097a37.rlib" "/opt/rustwide/target/debug/deps/libhyper-b995a68b9da50a44.rlib" "/opt/rustwide/target/debug/deps/libwant-0e59d2771cba3a35.rlib" "/opt/rustwide/target/debug/deps/libtry_lock-51271589248cd7d9.rlib" "/opt/rustwide/target/debug/deps/libsocket2-c8f05f7a7821b0ac.rlib" "/opt/rustwide/target/debug/deps/libhttparse-64f1ffbeda450424.rlib" "/opt/rustwide/target/debug/deps/libh2-ec78a07a62a99b69.rlib" "/opt/rustwide/target/debug/deps/libindexmap-22e0f4634bb72d96.rlib" "/opt/rustwide/target/debug/deps/libequivalent-daf5c71f5fc642dd.rlib" "/opt/rustwide/target/debug/deps/libhashbrown-d5d4385ff3f60687.rlib" "/opt/rustwide/target/debug/deps/libtokio_util-b242b688451742f9.rlib" "/opt/rustwide/target/debug/deps/libtower_service-104d6e83d5ce383d.rlib" "/opt/rustwide/target/debug/deps/libtracing-b85bc0cd69781ec2.rlib" "/opt/rustwide/target/debug/deps/libtracing_core-15f5428010a2bc83.rlib" "/opt/rustwide/target/debug/deps/libonce_cell-865e1c5018a0303a.rlib" "/opt/rustwide/target/debug/deps/libhttpdate-60c45fdec07c28d7.rlib" "/opt/rustwide/target/debug/deps/libtokio-30ba7e88bd818e99.rlib" "/opt/rustwide/target/debug/deps/libsignal_hook_registry-01a0d96a3c282908.rlib" "/opt/rustwide/target/debug/deps/libnum_cpus-73d2f04fa192560a.rlib" "/opt/rustwide/target/debug/deps/libsocket2-8d6599232e23f813.rlib" "/opt/rustwide/target/debug/deps/libmio-f66ba8c00c882f6c.rlib" "/opt/rustwide/target/debug/deps/libhttp_body-51311c5a353e4f64.rlib" "/opt/rustwide/target/debug/deps/liblog-4f472032e8cdd371.rlib" "/opt/rustwide/target/debug/deps/libfutures_util-f32d5e13a89cc70c.rlib" "/opt/rustwide/target/debug/deps/libmemchr-8adfc22b612d6f7a.rlib" "/opt/rustwide/target/debug/deps/libfutures_io-e29e1f931c78f5ad.rlib" "/opt/rustwide/target/debug/deps/libslab-6eb39baadbe9101c.rlib" "/opt/rustwide/target/debug/deps/libfutures_channel-b11b4e3e73ae8576.rlib" "/opt/rustwide/target/debug/deps/libpin_project_lite-e0757e0deaa2f8a0.rlib" "/opt/rustwide/target/debug/deps/libfutures_sink-4afe6e57e5588fde.rlib" "/opt/rustwide/target/debug/deps/libfutures_task-ec207c36a8b1b716.rlib" "/opt/rustwide/target/debug/deps/libpin_utils-741f7d9d160e4a16.rlib" "/opt/rustwide/target/debug/deps/libfutures_core-02b74ed2f49284a7.rlib" "/opt/rustwide/target/debug/deps/liburl-bc0661a5141cbab3.rlib" "/opt/rustwide/target/debug/deps/libidna-35e3e2f202e10859.rlib" "/opt/rustwide/target/debug/deps/libunicode_normalization-e04a0b39935fba30.rlib" "/opt/rustwide/target/debug/deps/libtinyvec-cf6c9f6b792a5507.rlib" "/opt/rustwide/target/debug/deps/libtinyvec_macros-b1cb7f53f58c9f87.rlib" "/opt/rustwide/target/debug/deps/libunicode_bidi-020370784786e57d.rlib" "/opt/rustwide/target/debug/deps/libform_urlencoded-a39e5ffbd9c88c0c.rlib" "/opt/rustwide/target/debug/deps/libpercent_encoding-5d42724fd4d173a7.rlib" "/opt/rustwide/target/debug/deps/libhttp-9f90e562c1e0df30.rlib" "/opt/rustwide/target/debug/deps/libitoa-05fb7c91ffbc0a79.rlib" "/opt/rustwide/target/debug/deps/libbytes-0a052f49710012b1.rlib" "/opt/rustwide/target/debug/deps/libthiserror-8e1cae582f9c2427.rlib" "/opt/rustwide/target/debug/deps/libprotobuf-a3269561fd7232fe.rlib" "/opt/rustwide/target/debug/deps/libfnv-18bf5144d055e772.rlib" "/opt/rustwide/target/debug/deps/libparking_lot-892941fbf4ea6fc1.rlib" "/opt/rustwide/target/debug/deps/libparking_lot_core-4c33c40377a766f1.rlib" "/opt/rustwide/target/debug/deps/liblibc-02f888d7762819c3.rlib" "/opt/rustwide/target/debug/deps/libcfg_if-61dc7a6799e72b18.rlib" "/opt/rustwide/target/debug/deps/libsmallvec-e348a0178db8b1b8.rlib" "/opt/rustwide/target/debug/deps/liblock_api-2e3cdc36e2d071f0.rlib" "/opt/rustwide/target/debug/deps/libscopeguard-012e5ed929fc2fe6.rlib" "/opt/rustwide/target/debug/deps/libmaplit-3eddd30150f5540e.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-90f6ddbf82de36ec.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind-480c41e9d4e1f677.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject-db744c0ca03eed1d.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr-8ba652dc7d4b285a.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line-d5f4520a9ebc0d58.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli-4ad84de58f0cb463.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle-0d10aae2e0f38735.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect-0c17cff739e6745b.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown-b29e17139dde1aa8.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc-1f975299829cc7bd.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide-86bae3bc3079f89b.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler-321b82c30dffdf5f.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind-3dd8a6810a0bdfef.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if-eb39a61c0c879984.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc-aa769569f91c3548.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc-510a192a50a983ed.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core-0577018320f99037.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore-193cf992125ccd4c.rlib" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins-8e138eaf26ebb4a8.rlib" "-Wl,-Bdynamic" "-lstdc++" "-lgcc" "-lssl" "-lcrypto" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/opt/rustwide/rustup-home/toolchains/1.75.0-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/btree-dce88386c3a3ab55" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
[INFO] [stdout]   = note: collect2: fatal error: ld terminated with signal 9 [Killed]
[INFO] [stdout]           compilation terminated.
[INFO] [stdout]           
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to previous error; 111 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `bynamo` (bin "btree") due to 2 previous errors; 111 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: 118 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 82 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "1a15ce66195fae9ba39a6c958713bb6313f873b4d24ae3c1eee8816260745f40", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1a15ce66195fae9ba39a6c958713bb6313f873b4d24ae3c1eee8816260745f40", kill_on_drop: false }`
[INFO] [stdout] 1a15ce66195fae9ba39a6c958713bb6313f873b4d24ae3c1eee8816260745f40
[INFO] testing ChrisBellew/bynamo against beta-2023-12-22 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FChrisBellew%2Fbynamo" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/ChrisBellew/bynamo on toolchain beta-2023-12-22
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] removed /workspace/builds/worker-3-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/ChrisBellew/bynamo
[INFO] finished tweaking git repo https://github.com/ChrisBellew/bynamo
[INFO] tweaked toml for git repo https://github.com/ChrisBellew/bynamo written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/ChrisBellew/bynamo already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b586420b3c021fa297f1017ad92e2ea57f4735db963291ea5649fb4934a67cc3
[INFO] running `Command { std: "docker" "start" "-a" "b586420b3c021fa297f1017ad92e2ea57f4735db963291ea5649fb4934a67cc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b586420b3c021fa297f1017ad92e2ea57f4735db963291ea5649fb4934a67cc3", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b586420b3c021fa297f1017ad92e2ea57f4735db963291ea5649fb4934a67cc3", kill_on_drop: false }`
[INFO] [stdout] b586420b3c021fa297f1017ad92e2ea57f4735db963291ea5649fb4934a67cc3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b8e5d7336906e7e311aca072c4d2871c76e2e77d2fd4558a8e6385a2e0be0b15
[INFO] running `Command { std: "docker" "start" "-a" "b8e5d7336906e7e311aca072c4d2871c76e2e77d2fd4558a8e6385a2e0be0b15", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.69
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling libc v0.2.149
[INFO] [stderr]    Compiling pin-project-lite v0.2.13
[INFO] [stderr]    Compiling once_cell v1.18.0
[INFO] [stderr]    Compiling bytes v1.5.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.9
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling log v0.4.20
[INFO] [stderr]    Compiling smallvec v1.11.1
[INFO] [stderr]    Compiling futures-channel v0.3.28
[INFO] [stderr]    Compiling futures-sink v0.3.28
[INFO] [stderr]    Compiling lock_api v0.4.11
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling memchr v2.6.4
[INFO] [stderr]    Compiling futures-task v0.3.28
[INFO] [stderr]    Compiling futures-util v0.3.28
[INFO] [stderr]    Compiling itoa v1.0.9
[INFO] [stderr]    Compiling futures-io v0.3.28
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling hashbrown v0.14.2
[INFO] [stderr]    Compiling base64 v0.21.5
[INFO] [stderr]    Compiling httparse v1.8.0
[INFO] [stderr]    Compiling rustversion v1.0.14
[INFO] [stderr]    Compiling serde v1.0.193
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]    Compiling http v0.2.11
[INFO] [stderr]    Compiling tower-service v0.3.2
[INFO] [stderr]    Compiling try-lock v0.2.4
[INFO] [stderr]    Compiling percent-encoding v2.3.0
[INFO] [stderr]    Compiling want v0.3.1
[INFO] [stderr]    Compiling ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling httpdate v1.0.3
[INFO] [stderr]    Compiling anyhow v1.0.75
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling openssl-probe v0.1.5
[INFO] [stderr]    Compiling quote v1.0.33
[INFO] [stderr]    Compiling indexmap v2.1.0
[INFO] [stderr]    Compiling tinyvec v1.6.0
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling either v1.9.0
[INFO] [stderr]    Compiling syn v2.0.38
[INFO] [stderr]    Compiling cc v1.0.83
[INFO] [stderr]    Compiling socket2 v0.5.5
[INFO] [stderr]    Compiling signal-hook-registry v1.4.1
[INFO] [stderr]    Compiling num_cpus v1.16.0
[INFO] [stderr]    Compiling mio v0.8.9
[INFO] [stderr]    Compiling getrandom v0.2.10
[INFO] [stderr]    Compiling http-body v0.4.5
[INFO] [stderr]    Compiling socket2 v0.4.10
[INFO] [stderr]    Compiling foreign-types-shared v0.1.1
[INFO] [stderr]    Compiling parking_lot v0.12.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling async-trait v0.1.74
[INFO] [stderr]    Compiling mime v0.3.17
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling openssl v0.10.59
[INFO] [stderr]    Compiling axum-core v0.3.4
[INFO] [stderr]    Compiling foreign-types v0.3.2
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling rand v0.4.6
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling bitflags v2.4.1
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling tower-layer v0.3.2
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling axum v0.6.20
[INFO] [stderr]    Compiling ryu v1.0.15
[INFO] [stderr]    Compiling thiserror v1.0.50
[INFO] [stderr]    Compiling rustc-serialize v0.3.24
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling unicode-normalization v0.1.22
[INFO] [stderr]    Compiling form_urlencoded v1.2.0
[INFO] [stderr]    Compiling regex-syntax v0.6.29
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling unicode-bidi v0.3.13
[INFO] [stderr]    Compiling gcc v0.3.55
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling sync_wrapper v0.1.2
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stdout] error[E0310]: the parameter type `T` may not live long enough
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustc-serialize-0.3.24/src/serialize.rs:1155:5
[INFO] [stdout]      |
[INFO] [stdout] 1155 |     fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'static, T>, D::Error> {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |     |
[INFO] [stdout]      |     the parameter type `T` must be valid for the static lifetime...
[INFO] [stdout]      |     ...so that the type `T` will meet its required lifetime bounds...
[INFO] [stdout]      |
[INFO] [stdout] note: ...that is required by this bound
[INFO] [stdout]     --> /rustc/0e09125c6c3c2fd70d7de961bcf0e51575235fad/library/alloc/src/borrow.rs:180:30
[INFO] [stdout] help: consider adding an explicit lifetime bound
[INFO] [stdout]      |
[INFO] [stdout] 1151 | impl<'a, T: ?Sized + 'static> Decodable for Cow<'a, T>
[INFO] [stdout]      |                    +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rustls v0.21.9
[INFO] [stderr]    Compiling untrusted v0.7.1
[INFO] [stderr]    Compiling regex-syntax v0.8.2
[INFO] [stderr]    Compiling spin v0.5.2
[INFO] [stderr]    Compiling openssl-sys v0.9.95
[INFO] [stderr]    Compiling ring v0.17.6
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.16
[INFO] [stderr]    Compiling miniz_oxide v0.7.1
[INFO] [stderr]    Compiling deranged v0.3.10
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling time-core v0.1.2
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0310`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rustc-serialize` (lib) due to 2 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "b8e5d7336906e7e311aca072c4d2871c76e2e77d2fd4558a8e6385a2e0be0b15", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b8e5d7336906e7e311aca072c4d2871c76e2e77d2fd4558a8e6385a2e0be0b15", kill_on_drop: false }`
[INFO] [stdout] b8e5d7336906e7e311aca072c4d2871c76e2e77d2fd4558a8e6385a2e0be0b15
