[INFO] cloning repository https://github.com/SomeFoxDeveloper/fenicdb
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SomeFoxDeveloper/fenicdb" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSomeFoxDeveloper%2Ffenicdb", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSomeFoxDeveloper%2Ffenicdb'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c66d9af19b9b30f4ee032094a25d8c812cb43875
[INFO] checking SomeFoxDeveloper/fenicdb against 011c518242557d21690f7936b5812318dc2fec47 for pr-159877
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSomeFoxDeveloper%2Ffenicdb" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-2-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/SomeFoxDeveloper/fenicdb
[INFO] finished tweaking git repo https://github.com/SomeFoxDeveloper/fenicdb
[INFO] tweaked toml for git repo https://github.com/SomeFoxDeveloper/fenicdb written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/SomeFoxDeveloper/fenicdb on toolchain 011c518242557d21690f7936b5812318dc2fec47
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/SomeFoxDeveloper/fenicdb 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" "+011c518242557d21690f7936b5812318dc2fec47" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472
[INFO] running `Command { std: "docker" "start" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472" "/opt/rustwide/cargo-home/bin/cargo" "+011c518242557d21690f7936b5812318dc2fec47" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling find-msvc-tools v0.1.8
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling zerocopy v0.8.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling dunce v1.0.5
[INFO] [stderr]    Compiling fs_extra v1.3.0
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling aws-lc-rs v1.15.3
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking as-slice v0.2.1
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling built v0.8.0
[INFO] [stderr]    Compiling av-scenechange v0.14.1
[INFO] [stderr]     Checking core2 v0.4.0
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]     Checking aligned v0.4.3
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]     Checking y4m v0.8.0
[INFO] [stderr]     Checking bytes v1.11.0
[INFO] [stderr]     Checking flate2 v1.1.8
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]     Checking bitstream-io v4.9.0
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking imgref v1.12.0
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling jobserver v0.1.34
[INFO] [stderr]    Compiling io-uring v0.6.4
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling zmij v1.0.17
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling cc v1.2.53
[INFO] [stderr]     Checking textwrap v0.11.0
[INFO] [stderr]    Compiling heck v0.3.3
[INFO] [stderr]     Checking zune-jpeg v0.4.21
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking pxfm v0.1.27
[INFO] [stderr]     Checking avif-serialize v0.8.6
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking socket2 v0.6.2
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking strsim v0.8.0
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking ansi_term v0.12.1
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking winnow v0.7.14
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]    Compiling cmake v0.1.57
[INFO] [stderr]    Compiling lua-src v547.0.0
[INFO] [stderr]    Compiling luajit-src v210.5.12+a4f56a4
[INFO] [stderr]     Checking zune-core v0.5.1
[INFO] [stderr]     Checking lebe v0.5.3
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking bit_field v0.10.3
[INFO] [stderr]     Checking gif v0.14.1
[INFO] [stderr]     Checking zune-jpeg v0.5.11
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]    Compiling aws-lc-sys v0.36.0
[INFO] [stderr]    Compiling mlua-sys v0.6.8
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]    Compiling tikv-jemalloc-sys v0.5.4+5.3.0-patched
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking moxcms v0.7.11
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking waker-fn v1.2.0
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking ctrlc v3.5.1
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling structopt-derive v0.4.18
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerocopy-derive v0.8.33
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]    Compiling fax_derive v0.2.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking fax v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking structopt v0.3.26
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking mlua v0.10.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking tiff v0.10.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking ipnetwork v0.20.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking rusqlite v0.31.0
[INFO] [stderr]     Checking ravif v0.12.0
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking tokio-uring v0.5.0
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking lz4 v1.28.1
[INFO] [stderr]     Checking futures-rustls v0.26.0
[INFO] [stderr]     Checking tikv-jemallocator v0.5.4
[INFO] [stderr]     Checking fenicdb v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/secrets.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/secrets.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, warn, error};
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/secrets.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/secrets.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, warn, error};
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:854:21
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 let mut all_members: Vec<_> = zset.scores.iter()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:886:21
[INFO] [stdout]     |
[INFO] [stdout] 886 |                 let mut all_members: Vec<_> = zset.scores.iter().rev()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:854:21
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 let mut all_members: Vec<_> = zset.scores.iter()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:886:21
[INFO] [stdout]     |
[INFO] [stdout] 886 |                 let mut all_members: Vec<_> = zset.scores.iter().rev()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/stats.rs:760:9
[INFO] [stdout]     |
[INFO] [stdout] 760 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> src/stats.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_authenticated`
[INFO] [stdout]     --> src/stats.rs:1473:9
[INFO] [stdout]      |
[INFO] [stdout] 1473 |     let is_authenticated = session_token.as_ref().and_then(|t| validate_session(t)).is_some();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_authenticated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/backup.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut decoder = GzDecoder::new(file);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shard_id` is never read
[INFO] [stdout]   --> src/aof.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct AofWriter {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     shard_id: Option<usize>, // Track which shard this writer belongs to
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BATCH_OPS_COUNT` is never used
[INFO] [stdout]    --> src/aof.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const BATCH_OPS_COUNT: u32 = 100;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COLLECTION_SIZE` is never used
[INFO] [stdout]    --> src/rdb.rs:619:11
[INFO] [stdout]     |
[INFO] [stdout] 619 |     const MAX_COLLECTION_SIZE: usize = 100_000; // 100K items per collection
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_dashboard_html` is never used
[INFO] [stdout]     --> src/stats.rs:1805:4
[INFO] [stdout]      |
[INFO] [stdout] 1805 | fn generate_dashboard_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_html` is never used
[INFO] [stdout]     --> src/stats.rs:1820:4
[INFO] [stdout]      |
[INFO] [stdout] 1820 | fn generate_analytics_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_security_html` is never used
[INFO] [stdout]     --> src/stats.rs:1834:4
[INFO] [stdout]      |
[INFO] [stdout] 1834 | fn generate_security_html() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `urlDecode` should have a snake case name
[INFO] [stdout]     --> src/stats.rs:1742:4
[INFO] [stdout]      |
[INFO] [stdout] 1742 | fn urlDecode(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^ help: convert the identifier to snake case: `url_decode`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fenicdb::rdb`
[INFO] [stdout]  --> src/bin/recovery.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use fenicdb::rdb;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/bin/recovery.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/bin/recovery.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]  --> src/bin/fenicdb_tokio.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, SocketAddr};
[INFO] [stdout]   |                        ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]   --> src/bin/fenicdb_cli.rs:13:41
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::{self, BufRead, BufReader, Read, Write};
[INFO] [stdout]    |                                         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `output` is assigned to, but never used
[INFO] [stdout]   --> src/bin/recovery.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut output: Option<String> = None;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_output` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `output` is never read
[INFO] [stdout]   --> src/bin/recovery.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 |                 output = Some(args.get(i).expect("--output requires a path").clone());
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]   --> src/bin/fenicdb_cli.rs:13:41
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::{self, BufRead, BufReader, Read, Write};
[INFO] [stdout]    |                                         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `BufWriter`
[INFO] [stdout]   --> src/bin/fenicdb_threadlocal.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::io::{Read, Write, BufReader, BufWriter};
[INFO] [stdout]    |                            ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]  --> src/bin/fenicdb_tokio.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, SocketAddr};
[INFO] [stdout]   |                        ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fenicdb::rdb`
[INFO] [stdout]  --> src/bin/recovery.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use fenicdb::rdb;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/bin/recovery.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/bin/recovery.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/stats.rs:760:9
[INFO] [stdout]     |
[INFO] [stdout] 760 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `output` is assigned to, but never used
[INFO] [stdout]   --> src/bin/recovery.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let mut output: Option<String> = None;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_output` instead
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `output` is never read
[INFO] [stdout]   --> src/bin/recovery.rs:35:17
[INFO] [stdout]    |
[INFO] [stdout] 35 |                 output = Some(args.get(i).expect("--output requires a path").clone());
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> src/stats.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_authenticated`
[INFO] [stdout]     --> src/stats.rs:1473:9
[INFO] [stdout]      |
[INFO] [stdout] 1473 |     let is_authenticated = session_token.as_ref().and_then(|t| validate_session(t)).is_some();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_authenticated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `BufWriter`
[INFO] [stdout]   --> src/bin/fenicdb_threadlocal.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::io::{Read, Write, BufReader, BufWriter};
[INFO] [stdout]    |                            ^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/backup.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut decoder = GzDecoder::new(file);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::BuildHasher`
[INFO] [stdout]   --> src/bin/fenicdb_tokio.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         use std::hash::BuildHasher;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `current_user` is assigned to, but never used
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:228:9
[INFO] [stdout]     |
[INFO] [stdout] 228 |     let mut current_user: Option<String> = if authenticated { Some("default".into()) } else { None };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_current_user` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `permission` is assigned to, but never used
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:229:9
[INFO] [stdout]     |
[INFO] [stdout] 229 |     let mut permission = if authenticated { Permission::Admin } else { Permission::Read };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_permission` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_user` is never read
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:267:33
[INFO] [stdout]     |
[INFO] [stdout] 267 | ...                   current_user = Some(u.name.clone());
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `permission` is never read
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:268:33
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   permission = u.permission.clone();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_worker_threads` is never used
[INFO] [stdout]   --> src/bin/fenicdb_tokio.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn get_worker_threads() -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::BuildHasher`
[INFO] [stdout]   --> src/bin/fenicdb_tokio.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         use std::hash::BuildHasher;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `current_user` is assigned to, but never used
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:228:9
[INFO] [stdout]     |
[INFO] [stdout] 228 |     let mut current_user: Option<String> = if authenticated { Some("default".into()) } else { None };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_current_user` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `permission` is assigned to, but never used
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:229:9
[INFO] [stdout]     |
[INFO] [stdout] 229 |     let mut permission = if authenticated { Permission::Admin } else { Permission::Read };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_permission` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_user` is never read
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:267:33
[INFO] [stdout]     |
[INFO] [stdout] 267 | ...                   current_user = Some(u.name.clone());
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `permission` is never read
[INFO] [stdout]    --> src/bin/fenicdb_tokio.rs:268:33
[INFO] [stdout]     |
[INFO] [stdout] 268 | ...                   permission = u.permission.clone();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_worker_threads` is never used
[INFO] [stdout]   --> src/bin/fenicdb_tokio.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn get_worker_threads() -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shard_id` is never read
[INFO] [stdout]   --> src/aof.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct AofWriter {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     shard_id: Option<usize>, // Track which shard this writer belongs to
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BATCH_OPS_COUNT` is never used
[INFO] [stdout]    --> src/aof.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const BATCH_OPS_COUNT: u32 = 100;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COLLECTION_SIZE` is never used
[INFO] [stdout]    --> src/rdb.rs:619:11
[INFO] [stdout]     |
[INFO] [stdout] 619 |     const MAX_COLLECTION_SIZE: usize = 100_000; // 100K items per collection
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_dashboard_html` is never used
[INFO] [stdout]     --> src/stats.rs:1805:4
[INFO] [stdout]      |
[INFO] [stdout] 1805 | fn generate_dashboard_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_html` is never used
[INFO] [stdout]     --> src/stats.rs:1820:4
[INFO] [stdout]      |
[INFO] [stdout] 1820 | fn generate_analytics_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_security_html` is never used
[INFO] [stdout]     --> src/stats.rs:1834:4
[INFO] [stdout]      |
[INFO] [stdout] 1834 | fn generate_security_html() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `urlDecode` should have a snake case name
[INFO] [stdout]     --> src/stats.rs:1742:4
[INFO] [stdout]      |
[INFO] [stdout] 1742 | fn urlDecode(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^ help: convert the identifier to snake case: `url_decode`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/protocol.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]  --> src/security.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::slice;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel`
[INFO] [stdout]  --> src/sync.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::mpsc::{channel, Sender, Receiver};
[INFO] [stdout]   |                       ^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]  --> src/sync.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::sync::{Arc, Mutex, RwLock};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/shard_router.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RespValue`
[INFO] [stdout]  --> src/cross_shard.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::resp::{RespValue, Command};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shard_router::ShardRouter`
[INFO] [stdout]  --> src/cross_shard.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::shard_router::ShardRouter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::storage::Storage`
[INFO] [stdout]  --> src/cross_shard.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::storage::Storage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::aof::AofWriter`
[INFO] [stdout]  --> src/cross_shard.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::aof::AofWriter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/fast_storage.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | /// Global fast storage instance
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicU64` and `Ordering`
[INFO] [stdout]  --> src/fast_storage.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OpenOptions`
[INFO] [stdout]   --> src/snapshot.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs::{File, OpenOptions};
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/secrets.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/secrets.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, warn, error};
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]    --> src/main.rs:237:29
[INFO] [stdout]     |
[INFO] [stdout] 237 |     use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]     |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]     --> src/main.rs:3047:38
[INFO] [stdout]      |
[INFO] [stdout] 3047 |                 use std::io::{Write, BufWriter};
[INFO] [stdout]      |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem`
[INFO] [stdout]  --> src/protocol.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::mem;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice`
[INFO] [stdout]  --> src/security.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::slice;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Receiver`, `Sender`, and `channel`
[INFO] [stdout]  --> src/sync.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::mpsc::{channel, Sender, Receiver};
[INFO] [stdout]   |                       ^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]  --> src/sync.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::sync::{Arc, Mutex, RwLock};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/shard_router.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RespValue`
[INFO] [stdout]  --> src/cross_shard.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::resp::{RespValue, Command};
[INFO] [stdout]   |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shard_router::ShardRouter`
[INFO] [stdout]  --> src/cross_shard.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::shard_router::ShardRouter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::storage::Storage`
[INFO] [stdout]  --> src/cross_shard.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::storage::Storage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::aof::AofWriter`
[INFO] [stdout]  --> src/cross_shard.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::aof::AofWriter;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/fast_storage.rs:85:1
[INFO] [stdout]    |
[INFO] [stdout] 85 | /// Global fast storage instance
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AtomicU64` and `Ordering`
[INFO] [stdout]  --> src/fast_storage.rs:8:25
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::sync::atomic::{AtomicU64, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OpenOptions`
[INFO] [stdout]   --> src/snapshot.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs::{File, OpenOptions};
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/secrets.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/secrets.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | use log::{info, warn, error};
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]    --> src/main.rs:237:29
[INFO] [stdout]     |
[INFO] [stdout] 237 |     use std::sync::atomic::{AtomicBool, Ordering};
[INFO] [stdout]     |                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]     --> src/main.rs:3047:38
[INFO] [stdout]      |
[INFO] [stdout] 3047 |                 use std::io::{Write, BufWriter};
[INFO] [stdout]      |                                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:830:9
[INFO] [stdout]     |
[INFO] [stdout] 830 |     let mut rps_count: u64 = 0;
[INFO] [stdout]     |         ----^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:831:9
[INFO] [stdout]     |
[INFO] [stdout] 831 |     let mut rps_window_start = std::time::Instant::now();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:830:9
[INFO] [stdout]     |
[INFO] [stdout] 830 |     let mut rps_count: u64 = 0;
[INFO] [stdout]     |         ----^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:831:9
[INFO] [stdout]     |
[INFO] [stdout] 831 |     let mut rps_window_start = std::time::Instant::now();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:854:21
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 let mut all_members: Vec<_> = zset.scores.iter()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:886:21
[INFO] [stdout]     |
[INFO] [stdout] 886 |                 let mut all_members: Vec<_> = zset.scores.iter().rev()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:854:21
[INFO] [stdout]     |
[INFO] [stdout] 854 |                 let mut all_members: Vec<_> = zset.scores.iter()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/storage.rs:886:21
[INFO] [stdout]     |
[INFO] [stdout] 886 |                 let mut all_members: Vec<_> = zset.scores.iter().rev()
[INFO] [stdout]     |                     ----^^^^^^^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_hash`
[INFO] [stdout]   --> src/sync.rs:56:32
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]    |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_hash`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/sync.rs:56:47
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/stats.rs:760:9
[INFO] [stdout]     |
[INFO] [stdout] 760 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key_hash`
[INFO] [stdout]   --> src/sync.rs:56:32
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]    |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_hash`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/sync.rs:56:47
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]    |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> src/stats.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> src/stats.rs:760:9
[INFO] [stdout]     |
[INFO] [stdout] 760 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_authenticated`
[INFO] [stdout]     --> src/stats.rs:1473:9
[INFO] [stdout]      |
[INFO] [stdout] 1473 |     let is_authenticated = session_token.as_ref().and_then(|t| validate_session(t)).is_some();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_authenticated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]     --> src/stats.rs:1235:9
[INFO] [stdout]      |
[INFO] [stdout] 1235 |     let now = SystemTime::now().duration_since(UNIX_EPOCH).map(|d| d.as_secs() as i64).unwrap_or(0);
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_authenticated`
[INFO] [stdout]     --> src/stats.rs:1473:9
[INFO] [stdout]      |
[INFO] [stdout] 1473 |     let is_authenticated = session_token.as_ref().and_then(|t| validate_session(t)).is_some();
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_authenticated`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/backup.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut decoder = GzDecoder::new(file);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/backup.rs:131:13
[INFO] [stdout]     |
[INFO] [stdout] 131 |         let mut decoder = GzDecoder::new(file);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tls_acceptor`
[INFO] [stdout]    --> src/main.rs:287:9
[INFO] [stdout]     |
[INFO] [stdout] 287 |     let tls_acceptor: Option<Arc<futures_rustls::TlsAcceptor>> = tls_config.as_ref().map(|c| Arc::new(c.acceptor.clone()));
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tls_acceptor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mtls_enabled`
[INFO] [stdout]    --> src/main.rs:288:9
[INFO] [stdout]     |
[INFO] [stdout] 288 |     let mtls_enabled = tls_config.as_ref().map(|c| c.mtls_enabled).unwrap_or(false);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mtls_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `shared_pool`
[INFO] [stdout]    --> src/main.rs:527:9
[INFO] [stdout]     |
[INFO] [stdout] 527 |     let shared_pool: Option<shared_storage::SharedStorage> = if shared_mode {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_shared_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idle_timeout_secs`
[INFO] [stdout]    --> src/main.rs:820:9
[INFO] [stdout]     |
[INFO] [stdout] 820 |     let idle_timeout_secs = std::env::var("FENICDB_IDLE_TIMEOUT")
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idle_timeout_secs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_limit`
[INFO] [stdout]    --> src/main.rs:826:9
[INFO] [stdout]     |
[INFO] [stdout] 826 |     let rps_limit = std::env::var("FENICDB_RPS_LIMIT")
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_count`
[INFO] [stdout]    --> src/main.rs:830:9
[INFO] [stdout]     |
[INFO] [stdout] 830 |     let mut rps_count: u64 = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_window_start`
[INFO] [stdout]    --> src/main.rs:831:9
[INFO] [stdout]     |
[INFO] [stdout] 831 |     let mut rps_window_start = std::time::Instant::now();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_window_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `in_subscriber_mode` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:853:9
[INFO] [stdout]     |
[INFO] [stdout] 853 |     let mut in_subscriber_mode = false;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_in_subscriber_mode` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:944:33
[INFO] [stdout]     |
[INFO] [stdout] 944 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 954 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:954:33
[INFO] [stdout]     |
[INFO] [stdout] 954 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 971 | ...                       in_subscriber_mode = false;
[INFO] [stdout]     |                           -------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:971:37
[INFO] [stdout]     |
[INFO] [stdout] 971 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 985 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       -------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:985:37
[INFO] [stdout]     |
[INFO] [stdout] 985 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tls_acceptor`
[INFO] [stdout]    --> src/main.rs:287:9
[INFO] [stdout]     |
[INFO] [stdout] 287 |     let tls_acceptor: Option<Arc<futures_rustls::TlsAcceptor>> = tls_config.as_ref().map(|c| Arc::new(c.acceptor.clone()));
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_tls_acceptor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mtls_enabled`
[INFO] [stdout]    --> src/main.rs:288:9
[INFO] [stdout]     |
[INFO] [stdout] 288 |     let mtls_enabled = tls_config.as_ref().map(|c| c.mtls_enabled).unwrap_or(false);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mtls_enabled`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `shared_pool`
[INFO] [stdout]    --> src/main.rs:527:9
[INFO] [stdout]     |
[INFO] [stdout] 527 |     let shared_pool: Option<shared_storage::SharedStorage> = if shared_mode {
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_shared_pool`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `idle_timeout_secs`
[INFO] [stdout]    --> src/main.rs:820:9
[INFO] [stdout]     |
[INFO] [stdout] 820 |     let idle_timeout_secs = std::env::var("FENICDB_IDLE_TIMEOUT")
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_idle_timeout_secs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_limit`
[INFO] [stdout]    --> src/main.rs:826:9
[INFO] [stdout]     |
[INFO] [stdout] 826 |     let rps_limit = std::env::var("FENICDB_RPS_LIMIT")
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_limit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_count`
[INFO] [stdout]    --> src/main.rs:830:9
[INFO] [stdout]     |
[INFO] [stdout] 830 |     let mut rps_count: u64 = 0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rps_window_start`
[INFO] [stdout]    --> src/main.rs:831:9
[INFO] [stdout]     |
[INFO] [stdout] 831 |     let mut rps_window_start = std::time::Instant::now();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rps_window_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `in_subscriber_mode` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:853:9
[INFO] [stdout]     |
[INFO] [stdout] 853 |     let mut in_subscriber_mode = false;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_in_subscriber_mode` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:944:33
[INFO] [stdout]     |
[INFO] [stdout] 944 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 954 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:954:33
[INFO] [stdout]     |
[INFO] [stdout] 954 | ...                   in_subscriber_mode = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 971 | ...                       in_subscriber_mode = false;
[INFO] [stdout]     |                           -------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:971:37
[INFO] [stdout]     |
[INFO] [stdout] 971 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 985 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       -------------------------- `in_subscriber_mode` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `in_subscriber_mode` is never read
[INFO] [stdout]    --> src/main.rs:985:37
[INFO] [stdout]     |
[INFO] [stdout] 985 | ...                   in_subscriber_mode = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pos` is never read
[INFO] [stdout]     --> src/main.rs:3087:47
[INFO] [stdout]      |
[INFO] [stdout] 3087 | ...                   let mut pos = 0;
[INFO] [stdout]      |                                     ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 3092 | ...                       pos = 9;
[INFO] [stdout]      |                           ------- `pos` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]     --> src/main.rs:2202:25
[INFO] [stdout]      |
[INFO] [stdout] 2202 |         Command::Scan { cursor, .. } => {
[INFO] [stdout]      |                         ^^^^^^ help: try ignoring the field: `cursor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]     --> src/main.rs:2206:26
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor, .. } | Command::SScan { key, cursor, .. } | Command::ZScan { key, cursor, .. } => {
[INFO] [stdout]      |                          ^^^                                  ^^^                                  ^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key: _, cursor, .. } | Command::SScan { key: _, cursor, .. } | Command::ZScan { key: _, cursor, .. } => {
[INFO] [stdout]      |                             +++                                     +++                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]     --> src/main.rs:2206:31
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor, .. } | Command::SScan { key, cursor, .. } | Command::ZScan { key, cursor, .. } => {
[INFO] [stdout]      |                               ^^^^^^                               ^^^^^^                               ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor: _, .. } | Command::SScan { key, cursor: _, .. } | Command::ZScan { key, cursor: _, .. } => {
[INFO] [stdout]      |                                     +++                                     +++                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channels`
[INFO] [stdout]     --> src/main.rs:3605:30
[INFO] [stdout]      |
[INFO] [stdout] 3605 |         Command::Subscribe { channels } | Command::PSubscribe { patterns: channels } => {
[INFO] [stdout]      |                              ^^^^^^^^                                     ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 3605 -         Command::Subscribe { channels } | Command::PSubscribe { patterns: channels } => {
[INFO] [stdout] 3605 +         Command::Subscribe { channels: _ } | Command::PSubscribe { patterns: _ } => {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pos` is never read
[INFO] [stdout]     --> src/main.rs:3087:47
[INFO] [stdout]      |
[INFO] [stdout] 3087 | ...                   let mut pos = 0;
[INFO] [stdout]      |                                     ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 3092 | ...                       pos = 9;
[INFO] [stdout]      |                           ------- `pos` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]     --> src/main.rs:2202:25
[INFO] [stdout]      |
[INFO] [stdout] 2202 |         Command::Scan { cursor, .. } => {
[INFO] [stdout]      |                         ^^^^^^ help: try ignoring the field: `cursor: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]     --> src/main.rs:2206:26
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor, .. } | Command::SScan { key, cursor, .. } | Command::ZScan { key, cursor, .. } => {
[INFO] [stdout]      |                          ^^^                                  ^^^                                  ^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key: _, cursor, .. } | Command::SScan { key: _, cursor, .. } | Command::ZScan { key: _, cursor, .. } => {
[INFO] [stdout]      |                             +++                                     +++                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor`
[INFO] [stdout]     --> src/main.rs:2206:31
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor, .. } | Command::SScan { key, cursor, .. } | Command::ZScan { key, cursor, .. } => {
[INFO] [stdout]      |                               ^^^^^^                               ^^^^^^                               ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 2206 |         Command::HScan { key, cursor: _, .. } | Command::SScan { key, cursor: _, .. } | Command::ZScan { key, cursor: _, .. } => {
[INFO] [stdout]      |                                     +++                                     +++                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `channels`
[INFO] [stdout]     --> src/main.rs:3605:30
[INFO] [stdout]      |
[INFO] [stdout] 3605 |         Command::Subscribe { channels } | Command::PSubscribe { patterns: channels } => {
[INFO] [stdout]      |                              ^^^^^^^^                                     ^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout] help: try ignoring the field
[INFO] [stdout]      |
[INFO] [stdout] 3605 -         Command::Subscribe { channels } | Command::PSubscribe { patterns: channels } => {
[INFO] [stdout] 3605 +         Command::Subscribe { channels: _ } | Command::PSubscribe { patterns: _ } => {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current` is never used
[INFO] [stdout]    --> src/main.rs:214:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl ConnectionCounter {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn current(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_BYTES` is never used
[INFO] [stdout]  --> src/protocol.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const MAGIC_BYTES: u32 = 0xFE11CDB;
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const GET_WIRE_SIZE: usize = 8;        // hash(8)
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const SET_WIRE_SIZE: usize = 16;       // hash(8) + len(4) + reserved(4)
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const DELETE_WIRE_SIZE: usize = 8;     // hash(8)
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct GetCommand {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SetCommand {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeleteCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct DeleteCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OpCode` is never used
[INFO] [stdout]   --> src/protocol.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum OpCode {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParanoidParser` is never constructed
[INFO] [stdout]  --> src/security.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ParanoidParser;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseError` is never used
[INFO] [stdout]  --> src/security.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum ParseError {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_get` and `parse_set` are never used
[INFO] [stdout]   --> src/security.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ParanoidParser {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 15 |     /// Validates and parses a byte slice to a GetCommand
[INFO] [stdout] 16 |     pub fn parse_get(data: &[u8]) -> Result<GetCommand, ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn parse_set(data: &[u8]) -> Result<SetCommand, ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shard_id` is never read
[INFO] [stdout]   --> src/aof.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct AofWriter {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     shard_id: Option<usize>, // Track which shard this writer belongs to
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BATCH_OPS_COUNT` is never used
[INFO] [stdout]    --> src/aof.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const BATCH_OPS_COUNT: u32 = 100;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NULL_ARRAY` is never used
[INFO] [stdout]   --> src/resp.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RESP_NULL_ARRAY: &[u8] = b"*-1\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NEG_ONE` is never used
[INFO] [stdout]   --> src/resp.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RESP_NEG_ONE: &[u8] = b":-1\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NEG_TWO` is never used
[INFO] [stdout]   --> src/resp.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const RESP_NEG_TWO: &[u8] = b":-2\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOAUTH` is never used
[INFO] [stdout]   --> src/resp.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const ERR_NOAUTH: &[u8] = b"-NOAUTH Authentication required\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WRONGTYPE` is never used
[INFO] [stdout]   --> src/resp.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ERR_WRONGTYPE: &[u8] = b"-WRONGTYPE Operation against a key holding the wrong kind of value\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOSCRIPT` is never used
[INFO] [stdout]   --> src/resp.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const ERR_NOSCRIPT: &[u8] = b"-NOSCRIPT No matching script. Please use EVAL.\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WRONGPASS` is never used
[INFO] [stdout]   --> src/resp.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const ERR_WRONGPASS: &[u8] = b"-WRONGPASS invalid username-password pair\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_OUT_OF_RANGE` is never used
[INFO] [stdout]   --> src/resp.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const ERR_OUT_OF_RANGE: &[u8] = b"-ERR value is out of range\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOT_INT` is never used
[INFO] [stdout]   --> src/resp.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const ERR_NOT_INT: &[u8] = b"-ERR value is not an integer or out of range\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOT_FLOAT` is never used
[INFO] [stdout]   --> src/resp.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const ERR_NOT_FLOAT: &[u8] = b"-ERR value is not a valid float\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_SYNTAX` is never used
[INFO] [stdout]   --> src/resp.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const ERR_SYNTAX: &[u8] = b"-ERR syntax error\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_UNKNOWN_CMD` is never used
[INFO] [stdout]   --> src/resp.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ERR_UNKNOWN_CMD: &[u8] = b"-ERR unknown command\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_EXEC_NO_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ERR_EXEC_NO_MULTI: &[u8] = b"-ERR EXEC without MULTI\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_DISCARD_NO_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ERR_DISCARD_NO_MULTI: &[u8] = b"-ERR DISCARD without MULTI\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WATCH_IN_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const ERR_WATCH_IN_MULTI: &[u8] = b"-ERR WATCH inside MULTI is not allowed\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_REPL_NOT_ENABLED` is never used
[INFO] [stdout]   --> src/resp.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const ERR_REPL_NOT_ENABLED: &[u8] = b"-ERR replication is not enabled in this build\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOPROTO` is never used
[INFO] [stdout]   --> src/resp.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const ERR_NOPROTO: &[u8] = b"-NOPROTO unsupported protocol version\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Set`, `Bool`, `Double`, `NullV3`, and `Push` are never constructed
[INFO] [stdout]   --> src/resp.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum RespValue {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     Set(Vec<RespValue>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 45 |     Bool(bool),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 46 |     Double(f64),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     /// Explicit RESP3 null. RESP2 mode degrades this to BulkString(None).
[INFO] [stdout] 48 |     NullV3,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 49 |     /// RESP3 push frame: `>N\r\n...`. RESP2 mode degrades to Array.
[INFO] [stdout] 50 |     Push(Vec<RespValue>),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RespValue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]   --> src/resp.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 |     Keys { pattern: Vec<u8> },
[INFO] [stdout]    |     ----   ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host` and `port` are never read
[INFO] [stdout]    --> src/resp.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |     ReplicaOf { host: Vec<u8>, port: u16 },
[INFO] [stdout]     |     ---------   ^^^^           ^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `args` is never read
[INFO] [stdout]    --> src/resp.rs:143:16
[INFO] [stdout]     |
[INFO] [stdout] 143 |     ReplConf { args: Vec<Vec<u8>> },
[INFO] [stdout]     |     --------   ^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `numreplicas` and `timeout` are never read
[INFO] [stdout]    --> src/resp.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 |     Wait { numreplicas: i64, timeout: i64 },
[INFO] [stdout]     |     ----   ^^^^^^^^^^^       ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:203:25
[INFO] [stdout]     |
[INFO] [stdout] 203 |     Scan { cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----                ^^^^^^^                   ^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |     HScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:205:40
[INFO] [stdout]     |
[INFO] [stdout] 205 |     SScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:206:40
[INFO] [stdout]     |
[INFO] [stdout] 206 |     ZScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ids` is never read
[INFO] [stdout]    --> src/resp.rs:256:95
[INFO] [stdout]     |
[INFO] [stdout] 256 |     XReadGroup { group: Vec<u8>, consumer: Vec<u8>, count: Option<usize>, keys: Vec<Vec<u8>>, ids: Vec<Vec<u8>> },
[INFO] [stdout]     |     ---------- field in this variant                                                          ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `numkeys` is never read
[INFO] [stdout]    --> src/resp.rs:260:29
[INFO] [stdout]     |
[INFO] [stdout] 260 |     Eval { script: Vec<u8>, numkeys: usize, keys: Vec<Vec<u8>>, args: Vec<Vec<u8>> },
[INFO] [stdout]     |     ----                    ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `numkeys` is never read
[INFO] [stdout]    --> src/resp.rs:261:29
[INFO] [stdout]     |
[INFO] [stdout] 261 |     EvalSha { sha: Vec<u8>, numkeys: usize, keys: Vec<Vec<u8>>, args: Vec<Vec<u8>> },
[INFO] [stdout]     |     -------                 ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by` is never read
[INFO] [stdout]    --> src/resp.rs:292:26
[INFO] [stdout]     |
[INFO] [stdout] 292 |     Sort { key: Vec<u8>, by: Option<Vec<u8>>, limit: Option<(i64, i64)>, get: Vec<Vec<u8>>, asc: bool, alpha: bool, store: Option<V...
[INFO] [stdout]     |     ----                 ^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key` and `db` are never read
[INFO] [stdout]    --> src/resp.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 299 |     Move { key: Vec<u8>, db: i64 },
[INFO] [stdout]     |     ----   ^^^           ^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `key` is never read
[INFO] [stdout]    --> src/resp.rs:303:30
[INFO] [stdout]     |
[INFO] [stdout] 303 |     DebugSub { sub: Vec<u8>, key: Option<Vec<u8>> },
[INFO] [stdout]     |     --------                 ^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keepttl` is never read
[INFO] [stdout]    --> src/resp.rs:310:136
[INFO] [stdout]     |
[INFO] [stdout] 310 |     SetExt { key: Vec<u8>, value: Vec<u8>, ex: Option<u64>, px: Option<u64>, exat: Option<u64>, pxat: Option<u64>, nx: bool, xx: bool, keepttl: b...
[INFO] [stdout]     |     ------ field in this variant                                                                                                       ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ClusterSetSlot`, `SlaveOf`, and `ZRevRange` are never constructed
[INFO] [stdout]    --> src/resp.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout]  54 | pub enum Command {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 135 |     ClusterSetSlot { slot: u16, subcommand: Vec<u8>, node_id: Option<Vec<u8>> },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     SlaveOf { host: Vec<u8>, port: u16 },
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     ZRevRange { key: Vec<u8>, start: i64, stop: i64, withscores: bool },
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/acl.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum CommandCategory {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Read operations: GET, EXISTS, KEYS, etc.
[INFO] [stdout] 17 |     Read,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 18 |     /// Write operations: SET, DEL, etc.
[INFO] [stdout] 19 |     Write,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 20 |     /// Admin operations: CONFIG, ACL, FLUSHDB, etc.
[INFO] [stdout] 21 |     Admin,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 22 |     /// Dangerous operations: FLUSHALL, DEBUG, SHUTDOWN
[INFO] [stdout] 23 |     Dangerous,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     /// Slow operations: KEYS *, SMEMBERS on large sets
[INFO] [stdout] 25 |     Slow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     /// Connection management: AUTH, QUIT, CLIENT
[INFO] [stdout] 27 |     Connection,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 28 |     /// All commands
[INFO] [stdout] 29 |     All,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandCategory` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `for_command` and `from_str` are never used
[INFO] [stdout]   --> src/acl.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl CommandCategory {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] 33 |     /// Get the category for a command
[INFO] [stdout] 34 |     pub fn for_command(cmd: &str) -> Vec<CommandCategory> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn from_str(s: &str) -> Option<CommandCategory> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `allowed_categories` is never used
[INFO] [stdout]    --> src/acl.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl Permission {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn allowed_categories(&self) -> Vec<CommandCategory> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern`, `is_prefix`, and `is_suffix` are never read
[INFO] [stdout]    --> src/acl.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct KeyPattern {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 134 |     pub pattern: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 135 |     pub is_prefix: bool,  // True for "prefix*" patterns
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 136 |     pub is_suffix: bool,  // True for "*suffix" patterns
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KeyPattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `matches` are never used
[INFO] [stdout]    --> src/acl.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl KeyPattern {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 140 |     pub fn new(pattern: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn matches(&self, key: &[u8]) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key_patterns`, `allowed_commands`, `denied_commands`, `allowed_categories`, and `denied_categories` are never read
[INFO] [stdout]    --> src/acl.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct User {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub key_patterns: Vec<KeyPattern>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 177 |     /// Explicitly allowed commands (e.g., +SET, +GET)
[INFO] [stdout] 178 |     pub allowed_commands: HashSet<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     /// Explicitly denied commands (e.g., -FLUSHDB, -DEBUG)
[INFO] [stdout] 180 |     pub denied_commands: HashSet<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     /// Allowed command categories (e.g., +@read, +@write)
[INFO] [stdout] 182 |     pub allowed_categories: HashSet<CommandCategory>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     /// Denied command categories (e.g., -@dangerous, -@slow)
[INFO] [stdout] 184 |     pub denied_categories: HashSet<CommandCategory>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_execute_command`, `add_acl_rule`, `can_access_key`, and `add_key_pattern` are never used
[INFO] [stdout]    --> src/acl.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl User {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn can_execute_command(&self, cmd: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn add_acl_rule(&mut self, rule: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn can_access_key(&self, key: &[u8]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn add_key_pattern(&mut self, pattern: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/acl.rs:543:12
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl AclManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 543 |     pub fn is_ip_allowed(&self, ip: &IpAddr) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     fn ip_in_cidr(ip: &IpAddr, network: &IpAddr, mask: u8) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 611 |     pub fn get_user(&self, name: &str) -> Option<&User> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 619 |     pub fn get_max_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn get_max_connections_per_ip(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn resolve_command(&self, cmd: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn is_command_disabled(&self, cmd: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 657 |     pub fn set_user_with_keys(&mut self, name: &str, password: Option<&[u8]>, permission: Permission, key_patterns: Vec<&str>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `lockout_remaining`, `config_string`, and `cleanup` are never used
[INFO] [stdout]    --> src/ratelimit.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout]  57 | impl RateLimiter {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn lockout_remaining(&self, ip: &IpAddr) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn config_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConnectionRejected` and `TlsHandshakeFailed` are never constructed
[INFO] [stdout]   --> src/audit.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum SecurityEvent {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 24 |     ConnectionRejected { ip: IpAddr, reason: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     AclChange { user: String, action: String, target: String },
[INFO] [stdout] 26 |     TlsHandshakeFailed { ip: IpAddr, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_enabled` and `verify_chain` are never used
[INFO] [stdout]    --> src/audit.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl AuditLog {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn verify_chain(&self, entries: &[SignedAuditEntry]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_encryption_enabled` is never used
[INFO] [stdout]   --> src/encryption.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn is_encryption_enabled() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encryption_key` is never used
[INFO] [stdout]   --> src/encryption.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn get_encryption_key() -> Option<[u8; 32]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `encrypt_inplace` and `decrypt_inplace` are never used
[INFO] [stdout]    --> src/encryption.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl AofEncryptor {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn encrypt_inplace(&self, data: &mut Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn decrypt_inplace(&self, data: &mut Vec<u8>) -> Result<(), &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_encryptor` is never used
[INFO] [stdout]    --> src/encryption.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn create_encryptor() -> Option<AofEncryptor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_compress_time_us`, `total_decompress_time_us`, and `adaptive_level` are never read
[INFO] [stdout]   --> src/compression.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CompressionStats {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub total_compress_time_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub total_decompress_time_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub adaptive_level: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CompressionStats` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_compression_stats` is never used
[INFO] [stdout]   --> src/compression.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn get_compression_stats() -> (u64, u64, u64, u64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_adaptive_compression_enabled` is never used
[INFO] [stdout]    --> src/compression.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn is_adaptive_compression_enabled() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_adaptive_level` is never used
[INFO] [stdout]    --> src/compression.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn get_adaptive_level() -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_adaptive_compression` is never used
[INFO] [stdout]    --> src/compression.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn update_adaptive_compression(usage_percent: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_storage_usage_percent` is never used
[INFO] [stdout]    --> src/compression.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn get_storage_usage_percent() -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_enabled` and `decompress` are never used
[INFO] [stdout]    --> src/compression.rs:369:12
[INFO] [stdout]     |
[INFO] [stdout] 360 | impl Compressor {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn decompress(&self, data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_usage` is never read
[INFO] [stdout]   --> src/eviction.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct LruTracker {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     memory_usage: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `policy`, `add_memory`, `remove_memory`, `is_over_limit`, `memory_usage`, and `get_stats` are never used
[INFO] [stdout]    --> src/eviction.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl LruTracker {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn policy(&self) -> EvictionPolicy {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn add_memory(&mut self, bytes: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn remove_memory(&mut self, bytes: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_over_limit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn memory_usage(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn get_stats(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplicationRole` is never used
[INFO] [stdout]   --> src/replication.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum ReplicationRole {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_role` is never used
[INFO] [stdout]   --> src/replication.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_role() -> ReplicationRole {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_master_addr` is never used
[INFO] [stdout]   --> src/replication.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn get_master_addr() -> Option<SocketAddr> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr`, `offset`, and `last_ack` are never read
[INFO] [stdout]    --> src/replication.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SlaveInfo {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 125 |     pub addr: SocketAddr,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 126 |     pub offset: u64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 127 |     pub last_ack: std::time::Instant,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SlaveInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `slaves` is never read
[INFO] [stdout]    --> src/replication.rs:133:9
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct MasterReplicationState {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] 132 |     /// Connected slaves
[INFO] [stdout] 133 |     pub slaves: Vec<SlaveInfo>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_slave`, `update_slave_offset`, and `get_info` are never used
[INFO] [stdout]    --> src/replication.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl MasterReplicationState {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn add_slave(&mut self, addr: SocketAddr) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn update_slave_offset(&mut self, addr: &SocketAddr, offset: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlaveReplicationState` is never constructed
[INFO] [stdout]    --> src/replication.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct SlaveReplicationState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_info` are never used
[INFO] [stdout]    --> src/replication.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl SlaveReplicationState {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 210 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connected_replicas` is never used
[INFO] [stdout]    --> src/replication.rs:297:8
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub fn connected_replicas() -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psync_full_resync_reply` is never used
[INFO] [stdout]    --> src/replication.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn psync_full_resync_reply() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_cluster_region` is never used
[INFO] [stdout]   --> src/cluster.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn get_cluster_region() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_cluster_label` is never used
[INFO] [stdout]   --> src/cluster.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn get_cluster_label() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_datacenter` is never used
[INFO] [stdout]   --> src/cluster.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_datacenter() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Online` is never constructed
[INFO] [stdout]    --> src/cluster.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub enum NodeState {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 117 |     /// Node is online and healthy
[INFO] [stdout] 118 |     Online,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `serves_slot` is never used
[INFO] [stdout]    --> src/cluster.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl ClusterNode {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn serves_slot(&self, slot: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_node_for_key`, `get_info`, and `get_slots_response` are never used
[INFO] [stdout]    --> src/cluster.rs:209:12
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl ClusterState {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn get_node_for_key(&self, key: &[u8]) -> Option<&ClusterNode> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn get_slots_response(&self) -> Vec<(u16, u16, Vec<(String, u16, String)>)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_slot_migration` is never used
[INFO] [stdout]    --> src/cluster.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn get_slot_migration(slot: u16) -> Option<SlotMigrationState> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `write_buffer`, `is_replica`, and `master_addr` are never read
[INFO] [stdout]   --> src/sync.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReplicationSync {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 11 |     /// Write commands to broadcast (master mode)
[INFO] [stdout] 12 |     write_buffer: Mutex<Vec<Vec<u8>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     is_replica: bool,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 17 |     /// Master address (if replica)
[INFO] [stdout] 18 |     master_addr: Option<SocketAddr>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Connecting` and `FullSync` are never constructed
[INFO] [stdout]   --> src/sync.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum SyncState {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 28 |     Connecting,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 29 |     /// Doing full resync
[INFO] [stdout] 30 |     FullSync,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SyncState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_replica`, `record_write`, and `get_pending_writes` are never used
[INFO] [stdout]   --> src/sync.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl ReplicationSync {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn is_replica(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn get_pending_writes(&self) -> Vec<Vec<u8>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SYNC` is never used
[INFO] [stdout]    --> src/sync.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 180 | static SYNC: std::sync::OnceLock<ReplicationSync> = std::sync::OnceLock::new();
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sync` is never used
[INFO] [stdout]    --> src/sync.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn get_sync() -> &'static ReplicationSync {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_write` is never used
[INFO] [stdout]    --> src/sync.rs:189:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub fn record_write(key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_replica` is never used
[INFO] [stdout]    --> src/sync.rs:195:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub fn is_replica() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_connection` is never used
[INFO] [stdout]    --> src/stats.rs:694:8
[INFO] [stdout]     |
[INFO] [stdout] 694 | pub fn record_connection() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_core_cpu` is never used
[INFO] [stdout]    --> src/stats.rs:748:8
[INFO] [stdout]     |
[INFO] [stdout] 748 | pub fn log_core_cpu(core_id: usize, cpu_load: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_command` is never used
[INFO] [stdout]    --> src/stats.rs:891:8
[INFO] [stdout]     |
[INFO] [stdout] 891 | pub fn record_command() { log_command("", ""); }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_disconnect` is never used
[INFO] [stdout]    --> src/stats.rs:892:8
[INFO] [stdout]     |
[INFO] [stdout] 892 | pub fn record_disconnect() {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_stats` is never used
[INFO] [stdout]    --> src/stats.rs:893:8
[INFO] [stdout]     |
[INFO] [stdout] 893 | pub fn get_stats() -> &'static () { &() }
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_dashboard_html` is never used
[INFO] [stdout]     --> src/stats.rs:1805:4
[INFO] [stdout]      |
[INFO] [stdout] 1805 | fn generate_dashboard_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_html` is never used
[INFO] [stdout]     --> src/stats.rs:1820:4
[INFO] [stdout]      |
[INFO] [stdout] 1820 | fn generate_analytics_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_security_html` is never used
[INFO] [stdout]     --> src/stats.rs:1834:4
[INFO] [stdout]      |
[INFO] [stdout] 1834 | fn generate_security_html() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DASHBOARD_TEMPLATE` is never used
[INFO] [stdout]  --> src/templates/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const DASHBOARD_TEMPLATE: &str = include_str!("dashboard.html");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/rdb.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 |     Io(std::io::Error),
[INFO] [stdout]     |     -- ^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RdbError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 125 -     Io(std::io::Error),
[INFO] [stdout] 125 +     Io(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_snapshot` is never used
[INFO] [stdout]    --> src/rdb.rs:290:8
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub fn load_snapshot(storage: &mut Storage) -> Result<usize, RdbError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COLLECTION_SIZE` is never used
[INFO] [stdout]    --> src/rdb.rs:619:11
[INFO] [stdout]     |
[INFO] [stdout] 619 |     const MAX_COLLECTION_SIZE: usize = 100_000; // 100K items per collection
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_shards` is never used
[INFO] [stdout]   --> src/shard_router.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ShardRouter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn num_shards(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server` is never read
[INFO] [stdout]   --> src/config.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub server: ServerConfig,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `db_allowed_ips` and `query_timeout_ms` are never read
[INFO] [stdout]   --> src/config.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SecurityConfig {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub db_allowed_ips: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub query_timeout_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `db_port`, `dashboard_port`, and `bind` are never read
[INFO] [stdout]   --> src/config.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct ServerConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub db_port: u16,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub dashboard_port: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub bind: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ServerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_db_ip_allowed` is never used
[INFO] [stdout]    --> src/config.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn is_db_ip_allowed(ip: &IpAddr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_query_timeout_ms` is never used
[INFO] [stdout]    --> src/config.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn get_query_timeout_ms() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_snapshot_from_storage` is never used
[INFO] [stdout]    --> src/backup.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn create_snapshot_from_storage(storage: &crate::storage::Storage) -> Result<PathBuf, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `compressed` is never read
[INFO] [stdout]    --> src/backup.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct SnapshotInfo {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub compressed: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SnapshotInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_auto_backup` is never used
[INFO] [stdout]    --> src/backup.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn start_auto_backup<F>(create_fn: F) 
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_multi_keys` is never used
[INFO] [stdout]    --> src/cross_shard.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn get_multi_keys(cmd: &Command) -> Vec<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FastStorage` is never constructed
[INFO] [stdout]   --> src/fast_storage.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FastStorage {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/fast_storage.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl FastStorage {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set(&self, key_hash: u64, value: Vec<u8>) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn set_with_ttl(&self, key_hash: u64, value: Vec<u8>, expire_at: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn get(&self, key_hash: u64) -> Option<Vec<u8>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn del(&self, key_hash: u64) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn exists(&self, key_hash: u64) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn clear(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_fast_mode` is never used
[INFO] [stdout]   --> src/fast_storage.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn is_fast_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]   --> src/fast_storage.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn now_ms() -> u64 {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SnapshotManager` is never constructed
[INFO] [stdout]   --> src/snapshot.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SnapshotManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from_env`, `is_enabled`, `last_save_time`, `start_background_save`, and `stop` are never used
[INFO] [stdout]    --> src/snapshot.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl SnapshotManager {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  28 |     /// Create a new snapshot manager
[INFO] [stdout]  29 |     pub fn new(interval_secs: u64, filename: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn from_env(filename: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn is_enabled() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn last_save_time(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn start_background_save<F>(&self, get_data: F)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current` is never used
[INFO] [stdout]    --> src/main.rs:214:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | impl ConnectionCounter {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn current(&self) -> usize {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/snapshot.rs:209:4
[INFO] [stdout]     |
[INFO] [stdout] 209 | fn now_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `into_bytes` is never used
[INFO] [stdout]   --> src/secrets.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Secret {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn into_bytes(mut self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get` and `get_or_default` are never used
[INFO] [stdout]    --> src/secrets.rs:223:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl SecretsManager {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn get(&self, key: &str) -> Option<Secret> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_or_default(&self, key: &str, default: &str) -> Secret {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_subscriber` is never used
[INFO] [stdout]   --> src/pubsub.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl PubSubManager {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn has_subscriber(&self, sub: SubscriberId) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delivery_count` and `delivered_ms` are never read
[INFO] [stdout]   --> src/streams.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct PendingEntry {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 54 |     pub id: StreamId,
[INFO] [stdout] 55 |     pub delivery_count: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     pub delivered_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PendingEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cleanup` is never used
[INFO] [stdout]   --> src/blocking.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn cleanup(key: KeyId) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonitoredMaster` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct MonitoredMaster {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplicaInfo` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ReplicaInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerSentinelInfo` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct PeerSentinelInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FailoverState` is never used
[INFO] [stdout]   --> src/sentinel.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum FailoverState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MasterRuntimeState` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct MasterRuntimeState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SentinelState` is never constructed
[INFO] [stdout]    --> src/sentinel.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct SentinelState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/sentinel.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl SentinelState {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 117 |     pub fn new(my_port: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state` is never used
[INFO] [stdout]    --> src/sentinel.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn state() -> &'static RwLock<SentinelState> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/sentinel.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn now_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_run_id` is never used
[INFO] [stdout]    --> src/sentinel.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn generate_run_id() -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn add_master(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn remove_master(name: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_master_option` is never used
[INFO] [stdout]    --> src/sentinel.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn set_master_option(name: &str, option: &str, value: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_field_map` is never used
[INFO] [stdout]    --> src/sentinel.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn master_field_map(name: &str, cfg: &MonitoredMaster, runtime: &MasterRuntimeState) -> Vec<(String, String)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state_current_epoch` is never used
[INFO] [stdout]    --> src/sentinel.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn state_current_epoch() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `masters_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn masters_summary() -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub fn master_summary(name: &str) -> Option<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replicas_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:290:8
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub fn replicas_summary(name: &str) -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `peer_sentinels_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub fn peer_sentinels_summary(name: &str) -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_master_addr` is never used
[INFO] [stdout]    --> src/sentinel.rs:335:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub fn get_master_addr(name: &str) -> Option<(String, u16)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ckquorum` is never used
[INFO] [stdout]    --> src/sentinel.rs:343:8
[INFO] [stdout]     |
[INFO] [stdout] 343 | pub fn ckquorum(name: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_master_down_by_addr` is never used
[INFO] [stdout]    --> src/sentinel.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub fn is_master_down_by_addr(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `force_failover` is never used
[INFO] [stdout]    --> src/sentinel.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub fn force_failover(name: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drive_failover` is never used
[INFO] [stdout]    --> src/sentinel.rs:422:10
[INFO] [stdout]     |
[INFO] [stdout] 422 | async fn drive_failover(name: &str) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transition` is never used
[INFO] [stdout]    --> src/sentinel.rs:501:4
[INFO] [stdout]     |
[INFO] [stdout] 501 | fn transition(name: &str, next: FailoverState) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pick_best_replica` is never used
[INFO] [stdout]    --> src/sentinel.rs:508:4
[INFO] [stdout]     |
[INFO] [stdout] 508 | fn pick_best_replica(rt: &MasterRuntimeState) -> Option<SocketAddr> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_monitor_loop` is never used
[INFO] [stdout]    --> src/sentinel.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub async fn run_monitor_loop() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tick_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:548:10
[INFO] [stdout]     |
[INFO] [stdout] 548 | async fn tick_master(name: &str) -> Result<(), String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info_replication` is never used
[INFO] [stdout]    --> src/sentinel.rs:585:10
[INFO] [stdout]     |
[INFO] [stdout] 585 | async fn info_replication(addr: SocketAddr) -> Result<String, String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_info` is never used
[INFO] [stdout]    --> src/sentinel.rs:596:4
[INFO] [stdout]     |
[INFO] [stdout] 596 | fn apply_info(name: &str, info: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_replica` is never used
[INFO] [stdout]    --> src/sentinel.rs:633:4
[INFO] [stdout]     |
[INFO] [stdout] 633 | fn upsert_replica(rt: &mut MasterRuntimeState, addr: SocketAddr, offset: i64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `publish_hello` is never used
[INFO] [stdout]    --> src/sentinel.rs:648:10
[INFO] [stdout]     |
[INFO] [stdout] 648 | async fn publish_hello() {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RespBulk` is never used
[INFO] [stdout]    --> src/sentinel.rs:678:6
[INFO] [stdout]     |
[INFO] [stdout] 678 | enum RespBulk {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_resp_call` is never used
[INFO] [stdout]    --> src/sentinel.rs:683:10
[INFO] [stdout]     |
[INFO] [stdout] 683 | async fn raw_resp_call(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frame_complete` is never used
[INFO] [stdout]    --> src/sentinel.rs:734:4
[INFO] [stdout]     |
[INFO] [stdout] 734 | fn frame_complete(buf: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_top_level` is never used
[INFO] [stdout]    --> src/sentinel.rs:759:4
[INFO] [stdout]     |
[INFO] [stdout] 759 | fn decode_top_level(buf: &[u8]) -> RespBulk {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `urlDecode` should have a snake case name
[INFO] [stdout]     --> src/stats.rs:1742:4
[INFO] [stdout]      |
[INFO] [stdout] 1742 | fn urlDecode(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^ help: convert the identifier to snake case: `url_decode`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAGIC_BYTES` is never used
[INFO] [stdout]  --> src/protocol.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const MAGIC_BYTES: u32 = 0xFE11CDB;
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GET_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const GET_WIRE_SIZE: usize = 8;        // hash(8)
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SET_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const SET_WIRE_SIZE: usize = 16;       // hash(8) + len(4) + reserved(4)
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DELETE_WIRE_SIZE` is never used
[INFO] [stdout]  --> src/protocol.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const DELETE_WIRE_SIZE: usize = 8;     // hash(8)
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GetCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct GetCommand {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct SetCommand {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeleteCommand` is never constructed
[INFO] [stdout]   --> src/protocol.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct DeleteCommand {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OpCode` is never used
[INFO] [stdout]   --> src/protocol.rs:32:10
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub enum OpCode {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParanoidParser` is never constructed
[INFO] [stdout]  --> src/security.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ParanoidParser;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParseError` is never used
[INFO] [stdout]  --> src/security.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum ParseError {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `parse_get` and `parse_set` are never used
[INFO] [stdout]   --> src/security.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ParanoidParser {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] 15 |     /// Validates and parses a byte slice to a GetCommand
[INFO] [stdout] 16 |     pub fn parse_get(data: &[u8]) -> Result<GetCommand, ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn parse_set(data: &[u8]) -> Result<SetCommand, ParseError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shard_id` is never read
[INFO] [stdout]   --> src/aof.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub struct AofWriter {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 95 |     shard_id: Option<usize>, // Track which shard this writer belongs to
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BATCH_OPS_COUNT` is never used
[INFO] [stdout]    --> src/aof.rs:117:7
[INFO] [stdout]     |
[INFO] [stdout] 117 | const BATCH_OPS_COUNT: u32 = 100;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replay_aof_until` is never used
[INFO] [stdout]    --> src/aof.rs:501:8
[INFO] [stdout]     |
[INFO] [stdout] 501 | pub fn replay_aof_until(storage: &mut Storage, aof_path: &str, until: Option<u64>) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NULL_ARRAY` is never used
[INFO] [stdout]   --> src/resp.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RESP_NULL_ARRAY: &[u8] = b"*-1\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NEG_ONE` is never used
[INFO] [stdout]   --> src/resp.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RESP_NEG_ONE: &[u8] = b":-1\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RESP_NEG_TWO` is never used
[INFO] [stdout]   --> src/resp.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const RESP_NEG_TWO: &[u8] = b":-2\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOAUTH` is never used
[INFO] [stdout]   --> src/resp.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const ERR_NOAUTH: &[u8] = b"-NOAUTH Authentication required\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WRONGTYPE` is never used
[INFO] [stdout]   --> src/resp.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const ERR_WRONGTYPE: &[u8] = b"-WRONGTYPE Operation against a key holding the wrong kind of value\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOSCRIPT` is never used
[INFO] [stdout]   --> src/resp.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const ERR_NOSCRIPT: &[u8] = b"-NOSCRIPT No matching script. Please use EVAL.\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WRONGPASS` is never used
[INFO] [stdout]   --> src/resp.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const ERR_WRONGPASS: &[u8] = b"-WRONGPASS invalid username-password pair\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_OUT_OF_RANGE` is never used
[INFO] [stdout]   --> src/resp.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const ERR_OUT_OF_RANGE: &[u8] = b"-ERR value is out of range\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOT_INT` is never used
[INFO] [stdout]   --> src/resp.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const ERR_NOT_INT: &[u8] = b"-ERR value is not an integer or out of range\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOT_FLOAT` is never used
[INFO] [stdout]   --> src/resp.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const ERR_NOT_FLOAT: &[u8] = b"-ERR value is not a valid float\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_SYNTAX` is never used
[INFO] [stdout]   --> src/resp.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const ERR_SYNTAX: &[u8] = b"-ERR syntax error\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_UNKNOWN_CMD` is never used
[INFO] [stdout]   --> src/resp.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ERR_UNKNOWN_CMD: &[u8] = b"-ERR unknown command\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_EXEC_NO_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ERR_EXEC_NO_MULTI: &[u8] = b"-ERR EXEC without MULTI\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_DISCARD_NO_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ERR_DISCARD_NO_MULTI: &[u8] = b"-ERR DISCARD without MULTI\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_WATCH_IN_MULTI` is never used
[INFO] [stdout]   --> src/resp.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const ERR_WATCH_IN_MULTI: &[u8] = b"-ERR WATCH inside MULTI is not allowed\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_REPL_NOT_ENABLED` is never used
[INFO] [stdout]   --> src/resp.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const ERR_REPL_NOT_ENABLED: &[u8] = b"-ERR replication is not enabled in this build\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ERR_NOPROTO` is never used
[INFO] [stdout]   --> src/resp.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const ERR_NOPROTO: &[u8] = b"-NOPROTO unsupported protocol version\r\n";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Set`, `Bool`, `Double`, `NullV3`, and `Push` are never constructed
[INFO] [stdout]   --> src/resp.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum RespValue {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 44 |     Set(Vec<RespValue>),
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 45 |     Bool(bool),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 46 |     Double(f64),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 47 |     /// Explicit RESP3 null. RESP2 mode degrades this to BulkString(None).
[INFO] [stdout] 48 |     NullV3,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 49 |     /// RESP3 push frame: `>N\r\n...`. RESP2 mode degrades to Array.
[INFO] [stdout] 50 |     Push(Vec<RespValue>),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RespValue` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pattern` is never read
[INFO] [stdout]   --> src/resp.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 |     Keys { pattern: Vec<u8> },
[INFO] [stdout]    |     ----   ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `host` and `port` are never read
[INFO] [stdout]    --> src/resp.rs:142:17
[INFO] [stdout]     |
[INFO] [stdout] 142 |     ReplicaOf { host: Vec<u8>, port: u16 },
[INFO] [stdout]     |     ---------   ^^^^           ^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `args` is never read
[INFO] [stdout]    --> src/resp.rs:143:16
[INFO] [stdout]     |
[INFO] [stdout] 143 |     ReplConf { args: Vec<Vec<u8>> },
[INFO] [stdout]     |     --------   ^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `numreplicas` and `timeout` are never read
[INFO] [stdout]    --> src/resp.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 |     Wait { numreplicas: i64, timeout: i64 },
[INFO] [stdout]     |     ----   ^^^^^^^^^^^       ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:203:25
[INFO] [stdout]     |
[INFO] [stdout] 203 |     Scan { cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----                ^^^^^^^                   ^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |     HScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:205:40
[INFO] [stdout]     |
[INFO] [stdout] 205 |     SScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `count` are never read
[INFO] [stdout]    --> src/resp.rs:206:40
[INFO] [stdout]     |
[INFO] [stdout] 206 |     ZScan { key: Vec<u8>, cursor: u64, pattern: Option<Vec<u8>>, count: Option<u64> },
[INFO] [stdout]     |     ----- fields in this variant       ^^^^^^^                   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `ids` is never read
[INFO] [stdout]    --> src/resp.rs:256:95
[INFO] [stdout]     |
[INFO] [stdout] 256 |     XReadGroup { group: Vec<u8>, consumer: Vec<u8>, count: Option<usize>, keys: Vec<Vec<u8>>, ids: Vec<Vec<u8>> },
[INFO] [stdout]     |     ---------- field in this variant                                                          ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `numkeys` is never read
[INFO] [stdout]    --> src/resp.rs:260:29
[INFO] [stdout]     |
[INFO] [stdout] 260 |     Eval { script: Vec<u8>, numkeys: usize, keys: Vec<Vec<u8>>, args: Vec<Vec<u8>> },
[INFO] [stdout]     |     ----                    ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `numkeys` is never read
[INFO] [stdout]    --> src/resp.rs:261:29
[INFO] [stdout]     |
[INFO] [stdout] 261 |     EvalSha { sha: Vec<u8>, numkeys: usize, keys: Vec<Vec<u8>>, args: Vec<Vec<u8>> },
[INFO] [stdout]     |     -------                 ^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `by` is never read
[INFO] [stdout]    --> src/resp.rs:292:26
[INFO] [stdout]     |
[INFO] [stdout] 292 |     Sort { key: Vec<u8>, by: Option<Vec<u8>>, limit: Option<(i64, i64)>, get: Vec<Vec<u8>>, asc: bool, alpha: bool, store: Option<V...
[INFO] [stdout]     |     ----                 ^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key` and `db` are never read
[INFO] [stdout]    --> src/resp.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 299 |     Move { key: Vec<u8>, db: i64 },
[INFO] [stdout]     |     ----   ^^^           ^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `key` is never read
[INFO] [stdout]    --> src/resp.rs:303:30
[INFO] [stdout]     |
[INFO] [stdout] 303 |     DebugSub { sub: Vec<u8>, key: Option<Vec<u8>> },
[INFO] [stdout]     |     --------                 ^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keepttl` is never read
[INFO] [stdout]    --> src/resp.rs:310:136
[INFO] [stdout]     |
[INFO] [stdout] 310 |     SetExt { key: Vec<u8>, value: Vec<u8>, ex: Option<u64>, px: Option<u64>, exat: Option<u64>, pxat: Option<u64>, nx: bool, xx: bool, keepttl: b...
[INFO] [stdout]     |     ------ field in this variant                                                                                                       ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ClusterSetSlot`, `SlaveOf`, and `ZRevRange` are never constructed
[INFO] [stdout]    --> src/resp.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout]  54 | pub enum Command {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 135 |     ClusterSetSlot { slot: u16, subcommand: Vec<u8>, node_id: Option<Vec<u8>> },
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     SlaveOf { host: Vec<u8>, port: u16 },
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     ZRevRange { key: Vec<u8>, start: i64, stop: i64, withscores: bool },
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/acl.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum CommandCategory {
[INFO] [stdout]    |          --------------- variants in this enum
[INFO] [stdout] 16 |     /// Read operations: GET, EXISTS, KEYS, etc.
[INFO] [stdout] 17 |     Read,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 18 |     /// Write operations: SET, DEL, etc.
[INFO] [stdout] 19 |     Write,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 20 |     /// Admin operations: CONFIG, ACL, FLUSHDB, etc.
[INFO] [stdout] 21 |     Admin,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 22 |     /// Dangerous operations: FLUSHALL, DEBUG, SHUTDOWN
[INFO] [stdout] 23 |     Dangerous,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     /// Slow operations: KEYS *, SMEMBERS on large sets
[INFO] [stdout] 25 |     Slow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     /// Connection management: AUTH, QUIT, CLIENT
[INFO] [stdout] 27 |     Connection,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 28 |     /// All commands
[INFO] [stdout] 29 |     All,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CommandCategory` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `for_command` and `from_str` are never used
[INFO] [stdout]   --> src/acl.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl CommandCategory {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] 33 |     /// Get the category for a command
[INFO] [stdout] 34 |     pub fn for_command(cmd: &str) -> Vec<CommandCategory> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn from_str(s: &str) -> Option<CommandCategory> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `allowed_categories` is never used
[INFO] [stdout]    --> src/acl.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl Permission {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn allowed_categories(&self) -> Vec<CommandCategory> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern`, `is_prefix`, and `is_suffix` are never read
[INFO] [stdout]    --> src/acl.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub struct KeyPattern {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 134 |     pub pattern: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 135 |     pub is_prefix: bool,  // True for "prefix*" patterns
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 136 |     pub is_suffix: bool,  // True for "*suffix" patterns
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `KeyPattern` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `matches` are never used
[INFO] [stdout]    --> src/acl.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl KeyPattern {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 140 |     pub fn new(pattern: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn matches(&self, key: &[u8]) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `key_patterns`, `allowed_commands`, `denied_commands`, `allowed_categories`, and `denied_categories` are never read
[INFO] [stdout]    --> src/acl.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub struct User {
[INFO] [stdout]     |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub key_patterns: Vec<KeyPattern>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 177 |     /// Explicitly allowed commands (e.g., +SET, +GET)
[INFO] [stdout] 178 |     pub allowed_commands: HashSet<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 179 |     /// Explicitly denied commands (e.g., -FLUSHDB, -DEBUG)
[INFO] [stdout] 180 |     pub denied_commands: HashSet<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 181 |     /// Allowed command categories (e.g., +@read, +@write)
[INFO] [stdout] 182 |     pub allowed_categories: HashSet<CommandCategory>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 183 |     /// Denied command categories (e.g., -@dangerous, -@slow)
[INFO] [stdout] 184 |     pub denied_categories: HashSet<CommandCategory>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_execute_command`, `add_acl_rule`, `can_access_key`, and `add_key_pattern` are never used
[INFO] [stdout]    --> src/acl.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | impl User {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn can_execute_command(&self, cmd: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn add_acl_rule(&mut self, rule: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn can_access_key(&self, key: &[u8]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn add_key_pattern(&mut self, pattern: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/acl.rs:543:12
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl AclManager {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 543 |     pub fn is_ip_allowed(&self, ip: &IpAddr) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 565 |     fn ip_in_cidr(ip: &IpAddr, network: &IpAddr, mask: u8) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 611 |     pub fn get_user(&self, name: &str) -> Option<&User> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 619 |     pub fn get_max_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn get_max_connections_per_ip(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn resolve_command(&self, cmd: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn is_command_disabled(&self, cmd: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 657 |     pub fn set_user_with_keys(&mut self, name: &str, password: Option<&[u8]>, permission: Permission, key_patterns: Vec<&str>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_locked`, `lockout_remaining`, `get_backoff_level`, `config_string`, and `cleanup` are never used
[INFO] [stdout]    --> src/ratelimit.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout]  57 | impl RateLimiter {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn is_locked(&self, ip: &IpAddr) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn lockout_remaining(&self, ip: &IpAddr) -> Option<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn get_backoff_level(&self, ip: &IpAddr) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn config_string(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn cleanup(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConnectionRejected` and `TlsHandshakeFailed` are never constructed
[INFO] [stdout]   --> src/audit.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum SecurityEvent {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 24 |     ConnectionRejected { ip: IpAddr, reason: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     AclChange { user: String, action: String, target: String },
[INFO] [stdout] 26 |     TlsHandshakeFailed { ip: IpAddr, error: String },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `verify` is never used
[INFO] [stdout]   --> src/audit.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl SignedAuditEntry {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn verify(&self, key: &[u8]) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_enabled`, `is_signing_enabled`, and `verify_chain` are never used
[INFO] [stdout]    --> src/audit.rs:112:12
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl AuditLog {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn is_signing_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn verify_chain(&self, entries: &[SignedAuditEntry]) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NONCE_SIZE` is never used
[INFO] [stdout]   --> src/encryption.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const NONCE_SIZE: usize = 12;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_encryption_enabled` is never used
[INFO] [stdout]   --> src/encryption.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn is_encryption_enabled() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `derive_key` is never used
[INFO] [stdout]   --> src/encryption.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn derive_key(input: &[u8]) -> [u8; 32] {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encryption_key` is never used
[INFO] [stdout]   --> src/encryption.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn get_encryption_key() -> Option<[u8; 32]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AofEncryptor` is never constructed
[INFO] [stdout]   --> src/encryption.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct AofEncryptor {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/encryption.rs:92:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl AofEncryptor {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  92 |     pub fn new(key: [u8; 32]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn encrypt(&self, plaintext: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn decrypt(&self, encrypted: &[u8]) -> Result<Vec<u8>, &'static str> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn encrypt_write<W: Write>(&self, data: &[u8], writer: &mut W) -> std::io::Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn decrypt_read<R: Read>(&self, reader: &mut R) -> std::io::Result<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn encrypt_inplace(&self, data: &mut Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn decrypt_inplace(&self, data: &mut Vec<u8>) -> Result<(), &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_encryptor` is never used
[INFO] [stdout]    --> src/encryption.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn create_encryptor() -> Option<AofEncryptor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_compress_time_us`, `total_decompress_time_us`, and `adaptive_level` are never read
[INFO] [stdout]   --> src/compression.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CompressionStats {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub total_compress_time_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub total_decompress_time_us: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub adaptive_level: u8,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CompressionStats` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_compression_stats` is never used
[INFO] [stdout]   --> src/compression.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn get_compression_stats() -> (u64, u64, u64, u64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_adaptive_compression_enabled` is never used
[INFO] [stdout]    --> src/compression.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn is_adaptive_compression_enabled() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_adaptive_level` is never used
[INFO] [stdout]    --> src/compression.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn get_adaptive_level() -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_adaptive_compression` is never used
[INFO] [stdout]    --> src/compression.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 203 | pub fn update_adaptive_compression(usage_percent: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_storage_usage_percent` is never used
[INFO] [stdout]    --> src/compression.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn get_storage_usage_percent() -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Compressor` is never constructed
[INFO] [stdout]    --> src/compression.rs:355:12
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub struct Compressor {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_enabled`, `compress`, and `decompress` are never used
[INFO] [stdout]    --> src/compression.rs:361:12
[INFO] [stdout]     |
[INFO] [stdout] 360 | impl Compressor {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 361 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn compress(&self, data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn decompress(&self, data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `memory_usage` is never read
[INFO] [stdout]   --> src/eviction.rs:73:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct LruTracker {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 73 |     memory_usage: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/eviction.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl LruTracker {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn policy(&self) -> EvictionPolicy {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn add_memory(&mut self, bytes: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn remove_memory(&mut self, bytes: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_over_limit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn memory_usage(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn lfu_tracked_keys(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn ttl_tracked_keys(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn get_stats(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ReplicationRole` is never used
[INFO] [stdout]   --> src/replication.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum ReplicationRole {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_role` is never used
[INFO] [stdout]   --> src/replication.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn get_role() -> ReplicationRole {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_master_addr` is never used
[INFO] [stdout]   --> src/replication.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn get_master_addr() -> Option<SocketAddr> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `addr`, `offset`, and `last_ack` are never read
[INFO] [stdout]    --> src/replication.rs:125:9
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct SlaveInfo {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 125 |     pub addr: SocketAddr,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout] 126 |     pub offset: u64,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 127 |     pub last_ack: std::time::Instant,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SlaveInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `slaves` is never read
[INFO] [stdout]    --> src/replication.rs:133:9
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub struct MasterReplicationState {
[INFO] [stdout]     |            ---------------------- field in this struct
[INFO] [stdout] 132 |     /// Connected slaves
[INFO] [stdout] 133 |     pub slaves: Vec<SlaveInfo>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_slave`, `update_slave_offset`, and `get_info` are never used
[INFO] [stdout]    --> src/replication.rs:154:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl MasterReplicationState {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn add_slave(&mut self, addr: SocketAddr) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn update_slave_offset(&mut self, addr: &SocketAddr, offset: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlaveReplicationState` is never constructed
[INFO] [stdout]    --> src/replication.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub struct SlaveReplicationState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_info` are never used
[INFO] [stdout]    --> src/replication.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 209 | impl SlaveReplicationState {
[INFO] [stdout]     | -------------------------- associated items in this implementation
[INFO] [stdout] 210 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connected_replicas` is never used
[INFO] [stdout]    --> src/replication.rs:297:8
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub fn connected_replicas() -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `psync_full_resync_reply` is never used
[INFO] [stdout]    --> src/replication.rs:304:8
[INFO] [stdout]     |
[INFO] [stdout] 304 | pub fn psync_full_resync_reply() -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_cluster_region` is never used
[INFO] [stdout]   --> src/cluster.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn get_cluster_region() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_cluster_label` is never used
[INFO] [stdout]   --> src/cluster.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn get_cluster_label() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_datacenter` is never used
[INFO] [stdout]   --> src/cluster.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn get_datacenter() -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Online` is never constructed
[INFO] [stdout]    --> src/cluster.rs:118:5
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub enum NodeState {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] 117 |     /// Node is online and healthy
[INFO] [stdout] 118 |     Online,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `serves_slot` is never used
[INFO] [stdout]    --> src/cluster.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl ClusterNode {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn serves_slot(&self, slot: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_node`, `get_node_for_key`, `update_cluster_state`, `get_info`, and `get_slots_response` are never used
[INFO] [stdout]    --> src/cluster.rs:192:12
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl ClusterState {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn add_node(&mut self, node: ClusterNode) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn get_node_for_key(&self, key: &[u8]) -> Option<&ClusterNode> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     fn update_cluster_state(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn get_slots_response(&self) -> Vec<(u16, u16, Vec<(String, u16, String)>)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_slot_migration` is never used
[INFO] [stdout]    --> src/cluster.rs:334:8
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub fn get_slot_migration(slot: u16) -> Option<SlotMigrationState> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplicationSync` is never constructed
[INFO] [stdout]   --> src/sync.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ReplicationSync {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SyncState` is never used
[INFO] [stdout]   --> src/sync.rs:24:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub enum SyncState {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sync.rs:36:12
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl ReplicationSync {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  36 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn is_replica(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn record_write(&self, key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn get_pending_writes(&self) -> Vec<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn apply_replicated_write(&self, key_hash: u64, value: Vec<u8>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn get_replicated(&self, key_hash: u64) -> Option<Vec<u8>> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn get_sync_state(&self) -> SyncState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn set_sync_state(&self, state: SyncState) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn serialize_all_data(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn apply_full_sync(&self, data: &[u8]) -> Result<usize, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SYNC` is never used
[INFO] [stdout]    --> src/sync.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 180 | static SYNC: std::sync::OnceLock<ReplicationSync> = std::sync::OnceLock::new();
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sync` is never used
[INFO] [stdout]    --> src/sync.rs:183:8
[INFO] [stdout]     |
[INFO] [stdout] 183 | pub fn get_sync() -> &'static ReplicationSync {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_write` is never used
[INFO] [stdout]    --> src/sync.rs:189:8
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub fn record_write(key_hash: u64, value: Vec<u8>, command: Vec<u8>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_replica` is never used
[INFO] [stdout]    --> src/sync.rs:195:8
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub fn is_replica() -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_connection` is never used
[INFO] [stdout]    --> src/stats.rs:694:8
[INFO] [stdout]     |
[INFO] [stdout] 694 | pub fn record_connection() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `log_core_cpu` is never used
[INFO] [stdout]    --> src/stats.rs:748:8
[INFO] [stdout]     |
[INFO] [stdout] 748 | pub fn log_core_cpu(core_id: usize, cpu_load: f64) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_command` is never used
[INFO] [stdout]    --> src/stats.rs:891:8
[INFO] [stdout]     |
[INFO] [stdout] 891 | pub fn record_command() { log_command("", ""); }
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `record_disconnect` is never used
[INFO] [stdout]    --> src/stats.rs:892:8
[INFO] [stdout]     |
[INFO] [stdout] 892 | pub fn record_disconnect() {}
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_stats` is never used
[INFO] [stdout]    --> src/stats.rs:893:8
[INFO] [stdout]     |
[INFO] [stdout] 893 | pub fn get_stats() -> &'static () { &() }
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_dashboard_html` is never used
[INFO] [stdout]     --> src/stats.rs:1805:4
[INFO] [stdout]      |
[INFO] [stdout] 1805 | fn generate_dashboard_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_analytics_html` is never used
[INFO] [stdout]     --> src/stats.rs:1820:4
[INFO] [stdout]      |
[INFO] [stdout] 1820 | fn generate_analytics_html(cluster_name: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_security_html` is never used
[INFO] [stdout]     --> src/stats.rs:1834:4
[INFO] [stdout]      |
[INFO] [stdout] 1834 | fn generate_security_html() -> String {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DASHBOARD_TEMPLATE` is never used
[INFO] [stdout]  --> src/templates/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const DASHBOARD_TEMPLATE: &str = include_str!("dashboard.html");
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PasswordValidator` is never constructed
[INFO] [stdout]   --> src/password_validator.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct PasswordValidator;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `validate`, `is_simple_pattern`, and `generate_secure_password` are never used
[INFO] [stdout]    --> src/password_validator.rs:34:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl PasswordValidator {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout]  33 |     /// Validate password against UK NCSC guidelines
[INFO] [stdout]  34 |     pub fn validate(password: &str) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn is_simple_pattern(password: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn generate_secure_password() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/rdb.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 |     Io(std::io::Error),
[INFO] [stdout]     |     -- ^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RdbError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 125 -     Io(std::io::Error),
[INFO] [stdout] 125 +     Io(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/rdb.rs:126:19
[INFO] [stdout]     |
[INFO] [stdout] 126 |     InvalidFormat(String),
[INFO] [stdout]     |     ------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RdbError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 126 -     InvalidFormat(String),
[INFO] [stdout] 126 +     InvalidFormat(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_snapshot` is never used
[INFO] [stdout]    --> src/rdb.rs:290:8
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub fn load_snapshot(storage: &mut Storage) -> Result<usize, RdbError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COLLECTION_SIZE` is never used
[INFO] [stdout]    --> src/rdb.rs:619:11
[INFO] [stdout]     |
[INFO] [stdout] 619 |     const MAX_COLLECTION_SIZE: usize = 100_000; // 100K items per collection
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `num_shards` is never used
[INFO] [stdout]   --> src/shard_router.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ShardRouter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn num_shards(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `server` is never read
[INFO] [stdout]   --> src/config.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub server: ServerConfig,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `db_allowed_ips` and `query_timeout_ms` are never read
[INFO] [stdout]   --> src/config.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SecurityConfig {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub db_allowed_ips: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub query_timeout_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SecurityConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `db_port`, `dashboard_port`, and `bind` are never read
[INFO] [stdout]   --> src/config.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub struct ServerConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub db_port: u16,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub dashboard_port: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub bind: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ServerConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_db_ip_allowed` is never used
[INFO] [stdout]    --> src/config.rs:108:8
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub fn is_db_ip_allowed(ip: &IpAddr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_query_timeout_ms` is never used
[INFO] [stdout]    --> src/config.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn get_query_timeout_ms() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_snapshot_from_storage` is never used
[INFO] [stdout]    --> src/backup.rs:119:8
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub fn create_snapshot_from_storage(storage: &crate::storage::Storage) -> Result<PathBuf, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `compressed` is never read
[INFO] [stdout]    --> src/backup.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct SnapshotInfo {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub compressed: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SnapshotInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start_auto_backup` is never used
[INFO] [stdout]    --> src/backup.rs:282:8
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub fn start_auto_backup<F>(create_fn: F) 
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_command_key` is never used
[INFO] [stdout]   --> src/cross_shard.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn get_command_key(cmd: &Command) -> Option<&[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_multi_key_command` is never used
[INFO] [stdout]   --> src/cross_shard.rs:96:8
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub fn is_multi_key_command(cmd: &Command) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_multi_keys` is never used
[INFO] [stdout]    --> src/cross_shard.rs:110:8
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub fn get_multi_keys(cmd: &Command) -> Vec<&[u8]> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_keyless_command` is never used
[INFO] [stdout]    --> src/cross_shard.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn is_keyless_command(cmd: &Command) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FastStorage` is never constructed
[INFO] [stdout]   --> src/fast_storage.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct FastStorage {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/fast_storage.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl FastStorage {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set(&self, key_hash: u64, value: Vec<u8>) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn set_with_ttl(&self, key_hash: u64, value: Vec<u8>, expire_at: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn get(&self, key_hash: u64) -> Option<Vec<u8>> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn del(&self, key_hash: u64) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn exists(&self, key_hash: u64) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn clear(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_fast_mode` is never used
[INFO] [stdout]   --> src/fast_storage.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn is_fast_mode() -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]   --> src/fast_storage.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn now_ms() -> u64 {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_MAGIC` is never used
[INFO] [stdout]   --> src/snapshot.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const SNAPSHOT_MAGIC: &[u8] = b"FENICSNAP";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SNAPSHOT_VERSION` is never used
[INFO] [stdout]   --> src/snapshot.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const SNAPSHOT_VERSION: u8 = 1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SnapshotManager` is never constructed
[INFO] [stdout]   --> src/snapshot.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct SnapshotManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from_env`, `is_enabled`, `last_save_time`, `start_background_save`, and `stop` are never used
[INFO] [stdout]    --> src/snapshot.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl SnapshotManager {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  28 |     /// Create a new snapshot manager
[INFO] [stdout]  29 |     pub fn new(interval_secs: u64, filename: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn from_env(filename: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn is_enabled() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn last_save_time(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn start_background_save<F>(&self, get_data: F)
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn stop(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_snapshot` is never used
[INFO] [stdout]    --> src/snapshot.rs:116:4
[INFO] [stdout]     |
[INFO] [stdout] 116 | fn save_snapshot(data: &[(u64, Vec<u8>)], temp_path: &str, final_path: &str) -> std::io::Result<usize> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_snapshot` is never used
[INFO] [stdout]    --> src/snapshot.rs:153:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub fn load_snapshot(filename: &str) -> std::io::Result<Vec<(u64, Vec<u8>)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/snapshot.rs:209:4
[INFO] [stdout]     |
[INFO] [stdout] 209 | fn now_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Secret` is never constructed
[INFO] [stdout]   --> src/secrets.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Secret {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `expose`, and `into_bytes` are never used
[INFO] [stdout]   --> src/secrets.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl Secret {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 25 |     pub fn new(value: String) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn expose(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn into_bytes(mut self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `SecretsProvider` is never used
[INFO] [stdout]   --> src/secrets.rs:52:11
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub trait SecretsProvider: Send + Sync {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EnvProvider` is never constructed
[INFO] [stdout]   --> src/secrets.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct EnvProvider;
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SecretsManager` is never constructed
[INFO] [stdout]    --> src/secrets.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 182 | pub struct SecretsManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, `get_or_default`, and `provider_name` are never used
[INFO] [stdout]    --> src/secrets.rs:188:12
[INFO] [stdout]     |
[INFO] [stdout] 186 | impl SecretsManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 187 |     /// Create from environment configuration
[INFO] [stdout] 188 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn get(&self, key: &str) -> Option<Secret> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_or_default(&self, key: &str, default: &str) -> Secret {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn provider_name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_subscriber` is never used
[INFO] [stdout]   --> src/pubsub.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl PubSubManager {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn has_subscriber(&self, sub: SubscriberId) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `client_watch_count` is never used
[INFO] [stdout]   --> src/watch.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl WatchManager {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn client_watch_count(&self, client: ClientId) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `delivery_count` and `delivered_ms` are never read
[INFO] [stdout]   --> src/streams.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct PendingEntry {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 54 |     pub id: StreamId,
[INFO] [stdout] 55 |     pub delivery_count: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     pub delivered_ms: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PendingEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cleanup` is never used
[INFO] [stdout]   --> src/blocking.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn cleanup(key: KeyId) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MonitoredMaster` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct MonitoredMaster {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplicaInfo` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct ReplicaInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PeerSentinelInfo` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct PeerSentinelInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FailoverState` is never used
[INFO] [stdout]   --> src/sentinel.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum FailoverState {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MasterRuntimeState` is never constructed
[INFO] [stdout]   --> src/sentinel.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct MasterRuntimeState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SentinelState` is never constructed
[INFO] [stdout]    --> src/sentinel.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct SentinelState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/sentinel.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl SentinelState {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 117 |     pub fn new(my_port: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state` is never used
[INFO] [stdout]    --> src/sentinel.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn state() -> &'static RwLock<SentinelState> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `now_ms` is never used
[INFO] [stdout]    --> src/sentinel.rs:142:4
[INFO] [stdout]     |
[INFO] [stdout] 142 | fn now_ms() -> u64 {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_run_id` is never used
[INFO] [stdout]    --> src/sentinel.rs:149:4
[INFO] [stdout]     |
[INFO] [stdout] 149 | fn generate_run_id() -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn add_master(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:193:8
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub fn remove_master(name: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_master_option` is never used
[INFO] [stdout]    --> src/sentinel.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn set_master_option(name: &str, option: &str, value: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_field_map` is never used
[INFO] [stdout]    --> src/sentinel.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn master_field_map(name: &str, cfg: &MonitoredMaster, runtime: &MasterRuntimeState) -> Vec<(String, String)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state_current_epoch` is never used
[INFO] [stdout]    --> src/sentinel.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn state_current_epoch() -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `masters_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn masters_summary() -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `master_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:283:8
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub fn master_summary(name: &str) -> Option<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `replicas_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:290:8
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub fn replicas_summary(name: &str) -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `peer_sentinels_summary` is never used
[INFO] [stdout]    --> src/sentinel.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub fn peer_sentinels_summary(name: &str) -> Vec<Vec<(String, String)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_master_addr` is never used
[INFO] [stdout]    --> src/sentinel.rs:335:8
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub fn get_master_addr(name: &str) -> Option<(String, u16)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ckquorum` is never used
[INFO] [stdout]    --> src/sentinel.rs:343:8
[INFO] [stdout]     |
[INFO] [stdout] 343 | pub fn ckquorum(name: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_master_down_by_addr` is never used
[INFO] [stdout]    --> src/sentinel.rs:374:8
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub fn is_master_down_by_addr(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `force_failover` is never used
[INFO] [stdout]    --> src/sentinel.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub fn force_failover(name: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `drive_failover` is never used
[INFO] [stdout]    --> src/sentinel.rs:422:10
[INFO] [stdout]     |
[INFO] [stdout] 422 | async fn drive_failover(name: &str) {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `transition` is never used
[INFO] [stdout]    --> src/sentinel.rs:501:4
[INFO] [stdout]     |
[INFO] [stdout] 501 | fn transition(name: &str, next: FailoverState) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pick_best_replica` is never used
[INFO] [stdout]    --> src/sentinel.rs:508:4
[INFO] [stdout]     |
[INFO] [stdout] 508 | fn pick_best_replica(rt: &MasterRuntimeState) -> Option<SocketAddr> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_monitor_loop` is never used
[INFO] [stdout]    --> src/sentinel.rs:528:14
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub async fn run_monitor_loop() {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tick_master` is never used
[INFO] [stdout]    --> src/sentinel.rs:548:10
[INFO] [stdout]     |
[INFO] [stdout] 548 | async fn tick_master(name: &str) -> Result<(), String> {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `info_replication` is never used
[INFO] [stdout]    --> src/sentinel.rs:585:10
[INFO] [stdout]     |
[INFO] [stdout] 585 | async fn info_replication(addr: SocketAddr) -> Result<String, String> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_info` is never used
[INFO] [stdout]    --> src/sentinel.rs:596:4
[INFO] [stdout]     |
[INFO] [stdout] 596 | fn apply_info(name: &str, info: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upsert_replica` is never used
[INFO] [stdout]    --> src/sentinel.rs:633:4
[INFO] [stdout]     |
[INFO] [stdout] 633 | fn upsert_replica(rt: &mut MasterRuntimeState, addr: SocketAddr, offset: i64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `publish_hello` is never used
[INFO] [stdout]    --> src/sentinel.rs:648:10
[INFO] [stdout]     |
[INFO] [stdout] 648 | async fn publish_hello() {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RespBulk` is never used
[INFO] [stdout]    --> src/sentinel.rs:678:6
[INFO] [stdout]     |
[INFO] [stdout] 678 | enum RespBulk {
[INFO] [stdout]     |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `raw_resp_call` is never used
[INFO] [stdout]    --> src/sentinel.rs:683:10
[INFO] [stdout]     |
[INFO] [stdout] 683 | async fn raw_resp_call(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `frame_complete` is never used
[INFO] [stdout]    --> src/sentinel.rs:734:4
[INFO] [stdout]     |
[INFO] [stdout] 734 | fn frame_complete(buf: &[u8]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode_top_level` is never used
[INFO] [stdout]    --> src/sentinel.rs:759:4
[INFO] [stdout]     |
[INFO] [stdout] 759 | fn decode_top_level(buf: &[u8]) -> RespBulk {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `urlDecode` should have a snake case name
[INFO] [stdout]     --> src/stats.rs:1742:4
[INFO] [stdout]      |
[INFO] [stdout] 1742 | fn urlDecode(s: &str) -> String {
[INFO] [stdout]      |    ^^^^^^^^^ help: convert the identifier to snake case: `url_decode`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 42s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.30.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472", kill_on_drop: false }`
[INFO] [stdout] 2530a0432a7a3d28308839ee064c758b38e86cd07f8b528b50a72640f9c7e472
