[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 615014f15745532730b9ce7a1d9309f8b4756f93 for pr-160491 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSomeFoxDeveloper%2Ffenicdb" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-0-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-0-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/SomeFoxDeveloper/fenicdb on toolchain 615014f15745532730b9ce7a1d9309f8b4756f93 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "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" "+615014f15745532730b9ce7a1d9309f8b4756f93" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284 [INFO] running `Command { std: "docker" "start" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284", 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" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284" "/opt/rustwide/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284", 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" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284" "/opt/rustwide/cargo-home/bin/cargo" "+615014f15745532730b9ce7a1d9309f8b4756f93" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Compiling find-msvc-tools v0.1.8 [INFO] [stderr] Compiling zerocopy v0.8.33 [INFO] [stderr] Checking simd-adler32 v0.3.8 [INFO] [stderr] Checking writeable v0.6.2 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking litemap v0.8.1 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling env_home v0.1.0 [INFO] [stderr] Compiling aws-lc-rs v1.15.3 [INFO] [stderr] Checking lock_api v0.4.14 [INFO] [stderr] Checking rayon v1.11.0 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking as-slice v0.2.1 [INFO] [stderr] Compiling built v0.8.0 [INFO] [stderr] Compiling av-scenechange v0.14.1 [INFO] [stderr] Checking aligned v0.4.3 [INFO] [stderr] Checking core2 v0.4.0 [INFO] [stderr] Checking nom v8.0.0 [INFO] [stderr] Compiling pastey v0.1.1 [INFO] [stderr] Checking y4m v0.8.0 [INFO] [stderr] Checking bytes v1.11.0 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Compiling nix v0.30.1 [INFO] [stderr] Checking bitstream-io v4.9.0 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking new_debug_unreachable v1.0.6 [INFO] [stderr] Compiling rustls v0.23.36 [INFO] [stderr] Compiling rav1e v0.8.1 [INFO] [stderr] Compiling io-uring v0.6.4 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Checking flate2 v1.1.8 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking zune-core v0.4.12 [INFO] [stderr] Checking regex-syntax v0.8.8 [INFO] [stderr] Compiling zmij v1.0.17 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Checking weezl v0.1.12 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Checking percent-encoding v2.3.2 [INFO] [stderr] Checking imgref v1.12.0 [INFO] [stderr] Checking form_urlencoded v1.2.2 [INFO] [stderr] Checking zune-jpeg v0.4.21 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking zune-inflate v0.2.54 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking avif-serialize v0.8.6 [INFO] [stderr] Checking pxfm v0.1.27 [INFO] [stderr] Checking byteorder-lite v0.1.0 [INFO] [stderr] Compiling cc v1.2.53 [INFO] [stderr] Checking bytemuck v1.24.0 [INFO] [stderr] Checking winnow v0.7.14 [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 bit_field v0.10.3 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking gif v0.14.1 [INFO] [stderr] Checking image-webp v0.2.4 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking zune-jpeg v0.5.11 [INFO] [stderr] Checking png v0.18.0 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking bstr v1.12.1 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling which v7.0.3 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking socket2 v0.6.2 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking polyval v0.6.2 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking ghash v0.5.1 [INFO] [stderr] Checking aes v0.8.4 [INFO] [stderr] Checking ctr v0.9.2 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking blake2 v0.10.6 [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 sha1 v0.10.6 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking password-hash v0.5.0 [INFO] [stderr] Checking is-terminal v0.4.17 [INFO] [stderr] Checking socket2 v0.4.10 [INFO] [stderr] Checking rustc-hash v2.1.1 [INFO] [stderr] Checking data-encoding v2.10.0 [INFO] [stderr] Checking futures-lite v1.13.0 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking num_cpus v1.17.0 [INFO] [stderr] Checking argon2 v0.5.3 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking aes-gcm v0.10.3 [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 regex v1.12.2 [INFO] [stderr] Checking ctrlc v3.5.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Checking env_logger v0.10.2 [INFO] [stderr] Checking moxcms v0.7.11 [INFO] [stderr] Compiling structopt-derive v0.4.18 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling zerocopy-derive v0.8.33 [INFO] [stderr] Compiling yoke-derive v0.8.1 [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] 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 zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking equator v0.4.2 [INFO] [stderr] Compiling profiling-procmacros v1.0.17 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking rustls-pki-types v1.14.0 [INFO] [stderr] Checking zerovec v0.11.5 [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] Checking v_frame v0.3.9 [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 av1-grain v0.2.5 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Compiling fax_derive v0.2.0 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking fax v0.2.6 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking half v2.7.1 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking exr v1.74.0 [INFO] [stderr] Checking tiff v0.10.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Checking structopt v0.3.26 [INFO] [stderr] Checking tempfile v3.24.0 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking hashlink v0.9.1 [INFO] [stderr] Checking dashmap v6.1.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking tungstenite v0.21.0 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking mlua v0.10.5 [INFO] [stderr] Checking ipnetwork v0.20.0 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking tokio-uring v0.5.0 [INFO] [stderr] Checking ravif v0.12.0 [INFO] [stderr] Checking image v0.25.9 [INFO] [stderr] Checking rusqlite v0.31.0 [INFO] [stderr] Checking rustls-webpki v0.103.9 [INFO] [stderr] Checking futures-rustls v0.26.0 [INFO] [stderr] Checking lz4 v1.28.1 [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, // 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 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: 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 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: `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: 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 = 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: `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: 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 = 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 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: `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 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 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: `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 = 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: 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: 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: 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 = 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, // 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: 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: 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::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, command: Vec) { [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, command: Vec) { [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: `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: 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, command: Vec) { [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, command: Vec) { [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: `tls_acceptor` [INFO] [stdout] --> src/main.rs:287:9 [INFO] [stdout] | [INFO] [stdout] 287 | let tls_acceptor: Option> = 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 = 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: `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: `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: `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: 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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn parse_set(data: &[u8]) -> Result { [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, // 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) -> 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), [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), [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 }, [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, 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> }, [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>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, consumer: Vec, count: Option, keys: Vec>, ids: Vec> }, [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, numkeys: usize, keys: Vec>, args: Vec> }, [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, numkeys: usize, keys: Vec>, args: Vec> }, [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, by: Option>, limit: Option<(i64, i64)>, get: Vec>, asc: bool, alpha: bool, store: Option src/resp.rs:299:12 [INFO] [stdout] | [INFO] [stdout] 299 | Move { key: Vec, 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, key: Option> }, [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, value: Vec, ex: Option, px: Option, exat: Option, pxat: Option, 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, node_id: Option> }, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | SlaveOf { host: Vec, port: u16 }, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | ZRevRange { key: Vec, 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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn from_str(s: &str) -> Option { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 177 | /// Explicitly allowed commands (e.g., +SET, +GET) [INFO] [stdout] 178 | pub allowed_commands: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 179 | /// Explicitly denied commands (e.g., -FLUSHDB, -DEBUG) [INFO] [stdout] 180 | pub denied_commands: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 181 | /// Allowed command categories (e.g., +@read, +@write) [INFO] [stdout] 182 | pub allowed_categories: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 183 | /// Denied command categories (e.g., -@dangerous, -@slow) [INFO] [stdout] 184 | pub denied_categories: HashSet, [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 { [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 { [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 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub fn decrypt(&self, encrypted: &[u8]) -> Result, &'static str> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn encrypt_write(&self, data: &[u8], writer: &mut W) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn decrypt_read(&self, reader: &mut R) -> std::io::Result> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn encrypt_inplace(&self, data: &mut Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn decrypt_inplace(&self, data: &mut Vec) -> 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 { [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 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 382 | pub fn decompress(&self, data: &[u8]) -> Vec { [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 { [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, [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 { [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, command: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn get_pending_writes(&self) -> Vec> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 82 | pub fn apply_replicated_write(&self, key_hash: u64, value: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn get_replicated(&self, key_hash: u64) -> Option> { [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 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn apply_full_sync(&self, data: &[u8]) -> Result { [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 = 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, command: Vec) { [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 { [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, [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 { [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(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) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn set_with_ttl(&self, key_hash: u64, value: Vec, expire_at: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn get(&self, key_hash: u64) -> Option> { [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(&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)], temp_path: &str, final_path: &str) -> std::io::Result { [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)>> { [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 { [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 { [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 { [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> { [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> { [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> { [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> { [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 { [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 { [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 { [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: unused variable: `tls_acceptor` [INFO] [stdout] --> src/main.rs:287:9 [INFO] [stdout] | [INFO] [stdout] 287 | let tls_acceptor: Option> = 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 = 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: 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 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 26 | pub fn parse_set(data: &[u8]) -> Result { [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, // 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), [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), [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 }, [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, 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> }, [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>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, cursor: u64, pattern: Option>, count: Option }, [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, consumer: Vec, count: Option, keys: Vec>, ids: Vec> }, [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, numkeys: usize, keys: Vec>, args: Vec> }, [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, numkeys: usize, keys: Vec>, args: Vec> }, [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, by: Option>, limit: Option<(i64, i64)>, get: Vec>, asc: bool, alpha: bool, store: Option src/resp.rs:299:12 [INFO] [stdout] | [INFO] [stdout] 299 | Move { key: Vec, 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, key: Option> }, [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, value: Vec, ex: Option, px: Option, exat: Option, pxat: Option, 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, node_id: Option> }, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | SlaveOf { host: Vec, port: u16 }, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 150 | ZRevRange { key: Vec, 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 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub fn from_str(s: &str) -> Option { [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 { [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, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 177 | /// Explicitly allowed commands (e.g., +SET, +GET) [INFO] [stdout] 178 | pub allowed_commands: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 179 | /// Explicitly denied commands (e.g., -FLUSHDB, -DEBUG) [INFO] [stdout] 180 | pub denied_commands: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 181 | /// Allowed command categories (e.g., +@read, +@write) [INFO] [stdout] 182 | pub allowed_categories: HashSet, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 183 | /// Denied command categories (e.g., -@dangerous, -@slow) [INFO] [stdout] 184 | pub denied_categories: HashSet, [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 { [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 { [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) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn decrypt_inplace(&self, data: &mut Vec) -> 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 { [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 { [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 { [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, [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 { [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>>, [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, [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, command: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub fn get_pending_writes(&self) -> Vec> { [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 = 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, command: Vec) { [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 { [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, [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 { [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(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) { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub fn set_with_ttl(&self, key_hash: u64, value: Vec, expire_at: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn get(&self, key_hash: u64) -> Option> { [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(&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 `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 { [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 { [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 { [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> { [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> { [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> { [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> { [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 { [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 { [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 { [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 37s [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 8` [INFO] running `Command { std: "docker" "inspect" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284", kill_on_drop: false }` [INFO] [stdout] d109415195d6e41e60d78ec47236e4f28b76a97ade8fcfcf592e4dfbba656284