[INFO] cloning repository https://github.com/beyondlex/rudis [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/beyondlex/rudis" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbeyondlex%2Frudis", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbeyondlex%2Frudis'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] ffeaa439188b387d43f7333b0701e6f82b05d5b1 [INFO] testing beyondlex/rudis against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbeyondlex%2Frudis" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/beyondlex/rudis [INFO] finished tweaking git repo https://github.com/beyondlex/rudis [INFO] tweaked toml for git repo https://github.com/beyondlex/rudis written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/beyondlex/rudis on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/beyondlex/rudis 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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded toml v0.8.23 [INFO] [stderr] Downloaded serde_spanned v0.6.9 [INFO] [stderr] Downloaded lru v0.12.5 [INFO] [stderr] Downloaded unicode-truncate v1.1.0 [INFO] [stderr] Downloaded sha1_smol v1.0.1 [INFO] [stderr] Downloaded toml_write v0.1.2 [INFO] [stderr] Downloaded instability v0.3.9 [INFO] [stderr] Downloaded tracing-error v0.2.1 [INFO] [stderr] Downloaded color-spantrace v0.3.0 [INFO] [stderr] Downloaded indenter v0.3.4 [INFO] [stderr] Downloaded owo-colors v4.2.2 [INFO] [stderr] Downloaded csv-core v0.1.12 [INFO] [stderr] Downloaded arboard v3.6.1 [INFO] [stderr] Downloaded env_logger v0.10.2 [INFO] [stderr] Downloaded castaway v0.2.4 [INFO] [stderr] Downloaded url v2.5.6 [INFO] [stderr] Downloaded redis v0.24.0 [INFO] [stderr] Downloaded compact_str v0.8.1 [INFO] [stderr] Downloaded ratatui v0.29.0 [INFO] [stderr] Downloaded color-eyre v0.6.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 157cba79c01048883412d6ba753604c5024da01e6353c0f094cd503efc6c9dd3 [INFO] running `Command { std: "docker" "start" "-a" "157cba79c01048883412d6ba753604c5024da01e6353c0f094cd503efc6c9dd3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "157cba79c01048883412d6ba753604c5024da01e6353c0f094cd503efc6c9dd3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "157cba79c01048883412d6ba753604c5024da01e6353c0f094cd503efc6c9dd3", kill_on_drop: false }` [INFO] [stdout] 157cba79c01048883412d6ba753604c5024da01e6353c0f094cd503efc6c9dd3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 17948c2c27034fdd4d1e0a85f0d2091f6f0a2cb23efd887e571545b2eb2bfe9e [INFO] running `Command { std: "docker" "start" "-a" "17948c2c27034fdd4d1e0a85f0d2091f6f0a2cb23efd887e571545b2eb2bfe9e", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.101 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling cfg-if v1.0.3 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling memchr v2.7.5 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling pin-project-lite v0.2.16 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling log v0.4.27 [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Compiling litemap v0.8.0 [INFO] [stderr] Compiling writeable v0.6.1 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling icu_properties_data v2.0.1 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling equivalent v1.0.2 [INFO] [stderr] Compiling adler2 v2.0.1 [INFO] [stderr] Compiling icu_normalizer_data v2.0.0 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling miniz_oxide v0.8.9 [INFO] [stderr] Compiling ryu v1.0.20 [INFO] [stderr] Compiling itoa v1.0.15 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling crc32fast v1.5.0 [INFO] [stderr] Compiling tracing-core v0.1.34 [INFO] [stderr] Compiling bitflags v2.9.3 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling fnv v1.0.7 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling lock_api v0.4.13 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling futures-channel v0.3.31 [INFO] [stderr] Compiling slab v0.4.11 [INFO] [stderr] Compiling owo-colors v4.2.2 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling object v0.36.7 [INFO] [stderr] Compiling bytes v1.10.1 [INFO] [stderr] Compiling flate2 v1.1.2 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling indexmap v2.11.0 [INFO] [stderr] Compiling tracing v0.1.41 [INFO] [stderr] Compiling aho-corasick v1.1.3 [INFO] [stderr] Compiling fdeflate v0.3.7 [INFO] [stderr] Compiling gimli v0.31.1 [INFO] [stderr] Compiling color-spantrace v0.3.0 [INFO] [stderr] Compiling either v1.15.0 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Compiling instability v0.3.9 [INFO] [stderr] Compiling eyre v0.6.12 [INFO] [stderr] Compiling signal-hook-registry v1.4.6 [INFO] [stderr] Compiling mio v1.0.4 [INFO] [stderr] Compiling socket2 v0.6.0 [INFO] [stderr] Compiling tracing-subscriber v0.3.19 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling parking_lot v0.12.4 [INFO] [stderr] Compiling png v0.17.16 [INFO] [stderr] Compiling signal-hook-mio v0.2.4 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling unicode-width v0.1.14 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling serde_json v1.0.143 [INFO] [stderr] Compiling rustc-demangle v0.1.26 [INFO] [stderr] Compiling indenter v0.3.4 [INFO] [stderr] Compiling byteorder-lite v0.1.0 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling bytemuck v1.23.2 [INFO] [stderr] Compiling winnow v0.7.13 [INFO] [stderr] Compiling x11rb-protocol v0.13.1 [INFO] [stderr] Compiling indoc v2.0.6 [INFO] [stderr] Compiling regex-automata v0.4.9 [INFO] [stderr] Compiling tracing-error v0.2.1 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling image v0.25.6 [INFO] [stderr] Compiling is-terminal v0.4.16 [INFO] [stderr] Compiling socket2 v0.4.10 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling csv-core v0.1.12 [INFO] [stderr] Compiling unicode-truncate v1.1.0 [INFO] [stderr] Compiling unicode-width v0.2.0 [INFO] [stderr] Compiling cassowary v0.3.0 [INFO] [stderr] Compiling sha1_smol v1.0.1 [INFO] [stderr] Compiling iana-time-zone v0.1.63 [INFO] [stderr] Compiling termcolor v1.4.1 [INFO] [stderr] Compiling humantime v2.2.0 [INFO] [stderr] Compiling uuid v1.18.0 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling addr2line v0.24.2 [INFO] [stderr] Compiling regex v1.11.1 [INFO] [stderr] Compiling env_logger v0.10.2 [INFO] [stderr] Compiling backtrace v0.3.75 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling color-eyre v0.6.5 [INFO] [stderr] Compiling x11rb v0.13.1 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling tokio v1.47.1 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling arboard v3.6.1 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling yoke v0.8.0 [INFO] [stderr] Compiling zerovec v0.11.4 [INFO] [stderr] Compiling zerotrie v0.2.2 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling tinystr v0.8.1 [INFO] [stderr] Compiling potential_utf v0.1.2 [INFO] [stderr] Compiling icu_collections v2.0.0 [INFO] [stderr] Compiling icu_locale_core v2.0.0 [INFO] [stderr] Compiling icu_provider v2.0.0 [INFO] [stderr] Compiling icu_properties v2.0.1 [INFO] [stderr] Compiling icu_normalizer v2.0.0 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling url v2.5.6 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling csv v1.3.1 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling chrono v0.4.41 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling tokio-util v0.7.16 [INFO] [stderr] Compiling combine v4.6.7 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling redis v0.24.0 [INFO] [stderr] Compiling rudis v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `color_eyre::Result` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use color_eyre::Result; [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: `AppEvent` [INFO] [stdout] --> src/app/controller.rs:7:21 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::events::{AppEvent, EventHandler}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::states::*` [INFO] [stdout] --> src/app/state.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub use super::states::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_connection::*` [INFO] [stdout] --> src/app/state.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub use super::state_connection::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_database::*` [INFO] [stdout] --> src/app/state.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use super::state_database::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_key_navigation::*` [INFO] [stdout] --> src/app/state.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use super::state_key_navigation::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_search::*` [INFO] [stdout] --> src/app/state.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use super::state_search::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_tree_view::*` [INFO] [stdout] --> src/app/state.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use super::state_tree_view::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_progress::*` [INFO] [stdout] --> src/app/state.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use super::state_progress::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_confirmation::*` [INFO] [stdout] --> src/app/state.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use super::state_confirmation::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_export_import::*` [INFO] [stdout] --> src/app/state.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use super::state_export_import::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_bulk_operations::*` [INFO] [stdout] --> src/app/state.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use super::state_bulk_operations::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `connection_list_state::ConnectionListState` [INFO] [stdout] --> src/app/states/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use connection_list_state::ConnectionListState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DatabaseBrowserState` [INFO] [stdout] --> src/app/states/mod.rs:13:34 [INFO] [stdout] | [INFO] [stdout] 13 | pub use database_browser_state::{DatabaseBrowserState, KeyInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CommandInputState` [INFO] [stdout] --> src/app/states/mod.rs:14:31 [INFO] [stdout] | [INFO] [stdout] 14 | pub use command_input_state::{CommandInputState, CommandResult}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConnectionDialogState` [INFO] [stdout] --> src/app/states/mod.rs:15:35 [INFO] [stdout] | [INFO] [stdout] 15 | pub use connection_dialog_state::{ConnectionDialogState, ConnectionDialogField, ConnectionFormData}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConnectionConfig` [INFO] [stdout] --> src/app/state_core.rs:3:37 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::app::config::{AppConfig, ConnectionConfig}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `KeyInfo` [INFO] [stdout] --> src/app/state_core.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | ViewMode, UiState, KeyInfo, FocusedPanel [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::AppResult` [INFO] [stdout] --> src/app/state_key_navigation.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::error::AppResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossterm::terminal` [INFO] [stdout] --> src/app/state_key_navigation.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crossterm::terminal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::AppResult` [INFO] [stdout] --> src/app/state_tree_view.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::error::AppResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Client`, `Connection`, and `RedisResult` [INFO] [stdout] --> src/redis/connection.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use redis::{Client, Connection, RedisResult}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/redis/connection.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/redis/value_types.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client::*` [INFO] [stdout] --> src/redis/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use client::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `commands::*` [INFO] [stdout] --> src/redis/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use commands::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::*` [INFO] [stdout] --> src/redis/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use types::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `value_types::*` [INFO] [stdout] --> src/redis/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use value_types::*; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::Command` [INFO] [stdout] --> src/events/handler.rs:587:13 [INFO] [stdout] | [INFO] [stdout] 587 | use std::process::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EnterAlternateScreen` and `enable_raw_mode` [INFO] [stdout] --> src/events/handler.rs:623:57 [INFO] [stdout] | [INFO] [stdout] 623 | use crossterm::terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `execute` [INFO] [stdout] --> src/events/handler.rs:664:47 [INFO] [stdout] | [INFO] [stdout] 664 | use crossterm::{terminal, cursor, execute, queue}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/confirmation_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line`, `Span`, and `Wrap` [INFO] [stdout] --> src/ui/export_import_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] 5 | widgets::{Block, Borders, Clear, Paragraph, Wrap}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/progress_bar.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `export_import_dialog::*` [INFO] [stdout] --> src/ui/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use export_import_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bulk_operations_dialog::*` [INFO] [stdout] --> src/ui/mod.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub use bulk_operations_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `progress_bar::*` [INFO] [stdout] --> src/ui/mod.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub use progress_bar::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tree_view::*` [INFO] [stdout] --> src/ui/mod.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub use tree_view::*; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `layout::*` [INFO] [stdout] --> src/ui/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub use layout::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `themes::*` [INFO] [stdout] --> src/ui/mod.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use themes::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::redis::value_types::RedisValue` [INFO] [stdout] --> src/utils/bulk_operations.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::redis::value_types::RedisValue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode [INFO] [stdout] --> src/ui/binary_viewer.rs:391:37 [INFO] [stdout] | [INFO] [stdout] 391 | let base64_string = base64::encode(data); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exported_data` [INFO] [stdout] --> src/app/state_export_import.rs:68:16 [INFO] [stdout] | [INFO] [stdout] 68 | Ok(exported_data) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exported_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:690:33 [INFO] [stdout] | [INFO] [stdout] 689 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 690 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:698:33 [INFO] [stdout] | [INFO] [stdout] 695 | ... redis::Value::Data(bytes) => { [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 698 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default().parse().unwrap_or(0.0), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:758:37 [INFO] [stdout] | [INFO] [stdout] 757 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 758 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:768:49 [INFO] [stdout] | [INFO] [stdout] 767 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 768 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:774:49 [INFO] [stdout] | [INFO] [stdout] 773 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 774 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `connection` [INFO] [stdout] --> src/utils/bulk_operations.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 271 | connection: &mut crate::redis::RedisConnection, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/utils/bulk_operations.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_db` [INFO] [stdout] --> src/utils/bulk_operations.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | target_db: u8, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude::Stylize` [INFO] [stdout] --> src/ui/binary_viewer.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | prelude::Stylize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude::Stylize` [INFO] [stdout] --> src/ui/confirmation_dialog.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | prelude::Stylize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `delay_ms` [INFO] [stdout] --> src/app/state_progress.rs:70:63 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn schedule_progress_removal(&mut self, index: usize, delay_ms: u64) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delay_ms` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key_name` [INFO] [stdout] --> src/ui/renderer.rs:621:9 [INFO] [stdout] | [INFO] [stdout] 621 | key_name: &str, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `progress_ratio` [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:314:17 [INFO] [stdout] | [INFO] [stdout] 314 | let progress_ratio = progress.progress_percentage() / 100.0; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_progress_ratio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `save_to_file`, `remove_connection`, and `get_connection` are never used [INFO] [stdout] --> src/app/config.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl AppConfig { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn save_to_file(&self, path: &PathBuf) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn get_connection(&self, id: &str) -> Option<&ConnectionConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Settings` is never constructed [INFO] [stdout] --> src/app/states/view_mode.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Settings, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` 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 `selected_index` and `scroll_offset` are never read [INFO] [stdout] --> src/app/states/connection_list_state.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct ConnectionListState { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 4 | /// Currently selected connection index [INFO] [stdout] 5 | pub selected_index: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 6 | /// Scroll offset for the list [INFO] [stdout] 7 | pub scroll_offset: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConnectionListState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_keys` and `tree_separator` are never read [INFO] [stdout] --> src/app/states/database_browser_state.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct DatabaseBrowserState { [INFO] [stdout] | -------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | pub total_keys: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub tree_separator: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DatabaseBrowserState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `size` and `matches_filter` are never read [INFO] [stdout] --> src/app/states/database_browser_state.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct KeyInfo { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 71 | pub size: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 72 | /// Whether this key matches current filter [INFO] [stdout] 73 | pub matches_filter: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyInfo` 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 `cursor_position` and `history_index` are never read [INFO] [stdout] --> src/app/states/command_input_state.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct CommandInputState { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 7 | pub cursor_position: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | pub history_index: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandInputState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `command`, `result`, and `timestamp` are never read [INFO] [stdout] --> src/app/states/command_input_state.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct CommandResult { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 19 | pub command: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | pub result: Result, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 21 | pub timestamp: std::time::SystemTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandResult` 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 `connection_list` is never read [INFO] [stdout] --> src/app/states/ui_state.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct UiState { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 16 | pub connection_list: ConnectionListState, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UiState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/app/states/key_viewer_state.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyViewerState { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub original_value: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub selected_hash_field: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub original_field_name: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub selected_list_element: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub selected_set_member: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub selected_zset_member: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub selected_stream_entry: Option, // Entry ID [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyViewerState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/app/states/key_viewer_state.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl KeyViewerState { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 136 | /// Enter edit mode for string values [INFO] [stdout] 137 | pub fn enter_edit_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn exit_edit_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn insert_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn delete_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn move_cursor_left(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn move_cursor_right(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | pub fn move_cursor_end(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn get_edit_value(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn apply_edit_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn select_hash_field(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 314 | pub fn start_edit_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn start_edit_hash_value(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn start_add_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | pub fn cancel_hash_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | pub fn insert_hash_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | pub fn delete_hash_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 386 | pub fn next_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | pub fn prev_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn apply_hash_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn delete_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn select_list_element(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 480 | pub fn start_edit_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | pub fn start_insert_list_element(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn start_append_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub fn cancel_list_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 513 | pub fn insert_list_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 521 | pub fn delete_list_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 529 | pub fn next_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn prev_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 549 | pub fn apply_list_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 586 | pub fn delete_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 608 | pub fn move_list_element_up(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 621 | pub fn move_list_element_down(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 636 | pub fn select_set_member(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn start_add_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 653 | pub fn start_remove_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 661 | pub fn cancel_set_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 668 | pub fn insert_set_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 676 | pub fn delete_set_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 684 | pub fn next_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 694 | pub fn prev_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 704 | pub fn apply_set_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 759 | pub fn select_zset_member(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 769 | pub fn start_add_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 777 | pub fn start_update_zset_score(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 788 | pub fn start_remove_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 796 | pub fn cancel_zset_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 804 | pub fn insert_zset_char(&mut self, c: char, is_score_field: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn delete_zset_char(&mut self, is_score_field: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 845 | pub fn next_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 855 | pub fn prev_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 865 | pub fn apply_zset_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 945 | pub fn select_stream_entry(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 956 | pub fn toggle_stream_view_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 964 | pub fn next_stream_entry(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 975 | pub fn prev_stream_entry(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 986 | pub fn next_stream_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1000 | pub fn prev_stream_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1007 | pub fn get_current_stream_entry(&self) -> Option<&crate::redis::value_types::StreamEntry> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1016 | pub fn get_stream_entry_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn cycle_binary_display_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1035 | pub fn toggle_json_highlighting(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1040 | pub fn has_binary_data(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1050 | pub fn get_value_bytes(&self) -> Option<&[u8]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `key_type`, `size`, and `encoding` are never read [INFO] [stdout] --> src/app/state_core.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct KeyMetadata { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 54 | pub key_type: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 55 | pub ttl: Option, [INFO] [stdout] 56 | pub size: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 57 | pub encoding: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyMetadata` 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: variant `Detail` is never constructed [INFO] [stdout] --> src/app/state_core.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 101 | pub enum StreamViewMode { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 104 | Detail, // Detail view showing selected entry fields [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamViewMode` 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 `get_active_connection`, `remove_connection`, and `set_active_connection` are never used [INFO] [stdout] --> src/app/state_core.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn get_active_connection(&self) -> Option<&RedisConnection> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn set_active_connection(&mut self, id: String) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `select_database` is never used [INFO] [stdout] --> src/app/state_database.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 5 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn select_database(&mut self, db_num: u8) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_max_scroll_offset` is never used [INFO] [stdout] --> src/app/state_key_navigation.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn get_max_scroll_offset(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_key_filter` is never used [INFO] [stdout] --> src/app/state_search.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 5 | /// Set filter pattern for key search [INFO] [stdout] 6 | pub async fn set_key_filter(&mut self, pattern: String) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_bulk_progress`, `hide_progress`, and `remove_progress` are never used [INFO] [stdout] --> src/app/state_progress.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 3 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn update_bulk_progress( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn hide_progress(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn remove_progress(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/app/state_confirmation.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 3 | impl AppState { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 4 | /// Open confirmation dialog for saving changes [INFO] [stdout] 5 | pub fn confirm_save_changes(&mut self, key_name: String, old_value: String, new_value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn confirm_delete_key(&mut self, key_name: String, key_type: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn confirm_discard_changes(&mut self, key_name: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn confirm_large_value_edit(&mut self, key_name: String, size: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn confirm_binary_data_edit(&mut self, key_name: String, binary_info: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn validate_edit_and_confirm(&mut self, key_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn handle_confirmation_response(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn close_confirmation_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn create_value_summary(value: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_export_dialog`, `open_import_dialog`, `export_current_key`, and `import_data` are never used [INFO] [stdout] --> src/app/state_export_import.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 5 | /// Open export dialog for current key [INFO] [stdout] 6 | pub fn open_export_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn open_import_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub async fn export_current_key(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn import_data(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_bulk_operations_dialog`, `execute_bulk_operation`, and `get_selected_keys_for_bulk` are never used [INFO] [stdout] --> src/app/state_bulk_operations.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 5 | /// Open bulk operations dialog with selected keys [INFO] [stdout] 6 | pub fn open_bulk_operations_dialog(&mut self, selected_keys: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | pub async fn execute_bulk_operation(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn get_selected_keys_for_bulk(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Ui` is never constructed [INFO] [stdout] --> src/error.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum AppError { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | Ui(String), [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `bytes_sent` and `bytes_received` are never read [INFO] [stdout] --> src/redis/connection.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct ConnectionStats { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 68 | pub bytes_sent: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub bytes_received: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConnectionStats` 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 methods are never used [INFO] [stdout] --> src/redis/connection.rs:148:18 [INFO] [stdout] | [INFO] [stdout] 74 | impl RedisConnection { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn disconnect(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub async fn ping(&mut self) -> AppResult { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 240 | pub async fn get_server_info(&mut self) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub async fn get_database_size(&mut self) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | pub async fn rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub async fn expire_key(&mut self, key: &str, seconds: u64) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | pub async fn get_string_value(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | pub async fn key_exists(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 459 | pub async fn get_key_memory_usage(&mut self, key: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub async fn get_hash_field(&mut self, key: &str, field: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub async fn set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub async fn delete_hash_field(&mut self, key: &str, field: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 574 | pub async fn get_list_length(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 584 | pub async fn list_push(&mut self, key: &str, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 589 | pub async fn list_set(&mut self, key: &str, index: i64, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 657 | pub async fn set_add(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub async fn set_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 724 | pub async fn zset_add(&mut self, key: &str, score: f64, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 729 | pub async fn zset_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/redis/connection.rs:819:12 [INFO] [stdout] | [INFO] [stdout] 817 | impl RedisConnection { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 818 | /// Get current database number [INFO] [stdout] 819 | pub fn get_current_database(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 824 | pub async fn bulk_delete_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 830 | pub async fn set_ttl(&mut self, key: &str, ttl: i64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 836 | pub async fn persist_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 842 | pub async fn bulk_rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 848 | pub async fn bulk_set_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 854 | pub async fn increment_key(&mut self, key: &str, amount: i64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 860 | pub async fn append_to_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 866 | pub async fn add_to_set(&mut self, key: &str, member: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 872 | pub async fn add_to_sorted_set(&mut self, key: &str, member: &str, score: f64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 878 | pub async fn bulk_set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 884 | pub async fn push_to_list(&mut self, key: &str, value: &str, to_front: bool) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `description`, `is_empty`, and `size` are never used [INFO] [stdout] --> src/redis/value_types.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl RedisValue { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn size(&self) -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValuePage` is never constructed [INFO] [stdout] --> src/redis/value_types.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct ValuePage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start_index`, `end_index`, and `total_pages` are never used [INFO] [stdout] --> src/redis/value_types.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl ValuePage { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 136 | /// Create a new value page [INFO] [stdout] 137 | pub fn new(page: usize, page_size: usize, total_items: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn start_index(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub fn end_index(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn total_pages(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValueDisplayConfig` is never constructed [INFO] [stdout] --> src/redis/value_types.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 165 | pub struct ValueDisplayConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_string_value` is never used [INFO] [stdout] --> src/redis/value_types.rs:192:12 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn format_string_value(value: &str, max_length: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_json_like` is never used [INFO] [stdout] --> src/redis/value_types.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn is_json_like(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_binary_data` is never used [INFO] [stdout] --> src/redis/value_types.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 214 | pub fn is_binary_data(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_as_hex` is never used [INFO] [stdout] --> src/redis/value_types.rs:219:12 [INFO] [stdout] | [INFO] [stdout] 219 | pub fn format_as_hex(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/events/types.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum AppEvent { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 7 | /// User input events [INFO] [stdout] 8 | KeyPressed(KeyEvent), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | DatabaseSelected { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | KeySelected { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | KeysLoaded { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | KeyContentLoaded { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | CommandExecuted { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | StatusMessage(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppEvent` 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: enum `InputEvent` is never used [INFO] [stdout] --> src/events/types.rs:63:10 [INFO] [stdout] | [INFO] [stdout] 63 | pub enum InputEvent { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_valid`, `has_warning`, `has_error`, and `message` are never used [INFO] [stdout] --> src/ui/validation.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl ValidationResult { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] 12 | /// Check if the validation result is valid [INFO] [stdout] 13 | pub fn is_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 18 | pub fn has_warning(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | pub fn has_error(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn message(&self) -> Option<&str> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/ui/validation.rs:68:12 [INFO] [stdout] | [INFO] [stdout] 66 | impl StringValidator { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] 67 | /// Create a new string validator with custom limits [INFO] [stdout] 68 | pub fn new(max_size: usize, max_lines: usize, require_utf8: bool) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `validate_json_detailed` is never used [INFO] [stdout] --> src/ui/validation.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl JsonValidator { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn validate_json_detailed(value: &str) -> (ValidationResult, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsonInfo` is never constructed [INFO] [stdout] --> src/ui/validation.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 201 | pub struct JsonInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `JsonValueType` is never used [INFO] [stdout] --> src/ui/validation.rs:209:10 [INFO] [stdout] | [INFO] [stdout] 209 | pub enum JsonValueType { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `from_value` and `calculate_nesting_level` are never used [INFO] [stdout] --> src/ui/validation.rs:219:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl JsonInfo { [INFO] [stdout] | ------------- associated functions in this implementation [INFO] [stdout] 219 | fn from_value(value: &serde_json::Value) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn calculate_nesting_level(value: &serde_json::Value) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `format_json`, `get_json_info`, `get_json_type`, `calculate_json_size`, `calculate_json_depth`, and `format_size` are never used [INFO] [stdout] --> src/ui/json_highlighter.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl JsonHighlighter { [INFO] [stdout] | -------------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn format_json(text: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn get_json_info(text: &str) -> JsonInfo { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 296 | fn get_json_type(value: &Value) -> JsonValueType { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 307 | fn calculate_json_size(value: &Value) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | fn calculate_json_depth(value: &Value) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 333 | fn format_size(bytes: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsonInfo` is never constructed [INFO] [stdout] --> src/ui/json_highlighter.rs:346:12 [INFO] [stdout] | [INFO] [stdout] 346 | pub struct JsonInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `JsonValueType` is never used [INFO] [stdout] --> src/ui/json_highlighter.rs:356:10 [INFO] [stdout] | [INFO] [stdout] 356 | pub enum JsonValueType { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/ui/confirmation_dialog.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ConfirmationType { [INFO] [stdout] | ---------------- variants in this enum [INFO] [stdout] 13 | /// Confirm saving changes to a key value [INFO] [stdout] 14 | SaveChanges { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | DeleteKey { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | DiscardChanges { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | LargeValueEdit { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | BinaryDataEdit { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | TypeConversion { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | BulkOperation { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConfirmationType` 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: enum `ConfirmationResponse` is never used [INFO] [stdout] --> src/ui/confirmation_dialog.rs:53:10 [INFO] [stdout] | [INFO] [stdout] 53 | pub enum ConfirmationResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/ui/confirmation_dialog.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 92 | impl ConfirmationDialog { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] 93 | /// Open a confirmation dialog [INFO] [stdout] 94 | pub fn open(&mut self, confirmation_type: ConfirmationType) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn open_custom(&mut self, title: String, message: String, details: Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn next_button(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn prev_button(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn toggle_details(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn get_response(&self) -> ConfirmationResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Import` is never constructed [INFO] [stdout] --> src/ui/export_import_dialog.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum ExportImportMode { [INFO] [stdout] | ---------------- variant in this enum [INFO] [stdout] 26 | Export, [INFO] [stdout] 27 | Import, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportImportMode` 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 methods are never used [INFO] [stdout] --> src/ui/export_import_dialog.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ExportImportDialog { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] 54 | pub fn open_export(&mut self, default_path: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn open_import(&mut self, default_path: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn next_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn cycle_format(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn add_path_char(&mut self, ch: char) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn backspace_path(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn toggle_metadata(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn toggle_ttl(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `editing_field` is never read [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct BulkOperationParams { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 59 | pub editing_field: ParameterField, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkOperationParams` 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/ui/bulk_operations_dialog.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 64 | pub enum ParameterField { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 65 | None, [INFO] [stdout] 66 | TtlValue, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 67 | TargetDb, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 68 | RenamePattern, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 69 | RenameReplacement, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 70 | SetValue, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 71 | IncrementAmount, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | AppendSuffix, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParameterField` 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 methods are never used [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 117 | impl BulkOperationsDialog { [INFO] [stdout] | ------------------------- methods in this implementation [INFO] [stdout] 118 | /// Open the bulk operations dialog with selected keys [INFO] [stdout] 119 | pub fn open(&mut self, selected_keys: Vec) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn next_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn next_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn prev_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn start_execution(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn update_progress(&mut self, progress: BulkProgress) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn add_param_char(&mut self, ch: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | pub fn backspace_param(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Transfer`, `BulkOperation`, and `Network` are never constructed [INFO] [stdout] --> src/ui/progress_bar.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ProgressType { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 16 | Transfer, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | /// Bulk operations with success/failure counts [INFO] [stdout] 18 | BulkOperation, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | Network, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressType` 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 `is_paused` is never read [INFO] [stdout] --> src/ui/progress_bar.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct ProgressBar { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 55 | pub is_paused: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressBar` 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 `memory_usage` and `custom_fields` are never read [INFO] [stdout] --> src/ui/progress_bar.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ProgressMetadata { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 70 | pub memory_usage: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 71 | /// Custom attributes [INFO] [stdout] 72 | pub custom_fields: Vec<(String, String)>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressMetadata` 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 `show`, `update_bulk`, `set_errors`, `add_error`, `pause`, and `resume` are never used [INFO] [stdout] --> src/ui/progress_bar.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 98 | impl ProgressBar { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update_bulk(&mut self, completed: u64, successful: u64, failed: u64, current_op: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn set_errors(&mut self, errors: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn add_error(&mut self, error: String) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn pause(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn resume(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `remove_progress_bar` and `get_active_mut` are never used [INFO] [stdout] --> src/ui/progress_bar.rs:521:12 [INFO] [stdout] | [INFO] [stdout] 511 | impl ProgressBarManager { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 521 | pub fn remove_progress_bar(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn get_active_mut(&mut self) -> Option<&mut ProgressBar> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `full_path` and `is_leaf` are never read [INFO] [stdout] --> src/ui/tree_view.rs:302:9 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct TreeDisplayInfo { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 302 | pub full_path: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub is_leaf: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeDisplayInfo` 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 `Yaml`, `Csv`, `Raw`, and `Redis` are never constructed [INFO] [stdout] --> src/utils/export_import.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum ExportFormat { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | Yaml, [INFO] [stdout] | ^^^^ [INFO] [stdout] 15 | /// CSV format (for tabular data like hashes) [INFO] [stdout] 16 | Csv, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | /// Raw binary data [INFO] [stdout] 18 | Raw, [INFO] [stdout] | ^^^ [INFO] [stdout] 19 | /// Redis protocol format (RESP) [INFO] [stdout] 20 | Redis, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportFormat` 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: struct `ExportData` is never constructed [INFO] [stdout] --> src/utils/export_import.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 37 | pub struct ExportData { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExportMetadata` is never constructed [INFO] [stdout] --> src/utils/export_import.rs:46:12 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct ExportMetadata { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ExportedValue` is never constructed [INFO] [stdout] --> src/utils/export_import.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct ExportedValue { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DataExporter` is never constructed [INFO] [stdout] --> src/utils/export_import.rs:75:12 [INFO] [stdout] | [INFO] [stdout] 75 | pub struct DataExporter; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils/export_import.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 77 | impl DataExporter { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] 78 | /// Export a single Redis value to the specified format [INFO] [stdout] 79 | pub fn export_value( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn export_values( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn import_data(data: &str, format: &ExportFormat) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | fn convert_to_exported_value( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | fn export_to_json(values: &[ExportedValue]) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn export_to_json_with_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 217 | fn export_to_yaml(values: &[ExportedValue]) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | fn export_to_yaml_with_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 242 | fn export_to_csv(values: &[ExportedValue]) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 317 | fn export_to_raw(value: &ExportedValue) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 325 | fn export_to_redis(value: &ExportedValue) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 398 | fn import_from_json(data: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | fn import_from_yaml(data: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | fn import_from_csv(data: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | fn import_from_redis(data: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 501 | fn parse_redis_command( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 548 | pub fn get_supported_formats(value_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Export`, `AddToSet`, and `AddToHash` are never constructed [INFO] [stdout] --> src/utils/bulk_operations.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum BulkOperation { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 21 | Export { format: crate::utils::export_import::ExportFormat }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | AddToSet { members: Vec }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 30 | /// Add fields to hashes [INFO] [stdout] 31 | AddToHash { fields: HashMap }, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkOperation` 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 `is_complete` is never read [INFO] [stdout] --> src/utils/bulk_operations.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct BulkProgress { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 48 | pub is_complete: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkProgress` 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 `update` are never used [INFO] [stdout] --> src/utils/bulk_operations.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl BulkProgress { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 54 | pub fn new(total: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn update(&mut self, operation: String, success: bool, error: Option) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BulkOperationResult` is never constructed [INFO] [stdout] --> src/utils/bulk_operations.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub struct BulkOperationResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils/bulk_operations.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 107 | impl BulkOperationsManager { [INFO] [stdout] | -------------------------- associated functions in this implementation [INFO] [stdout] 108 | /// Execute a single operation on a key (for progress tracking) [INFO] [stdout] 109 | pub async fn execute_single_operation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub async fn execute_bulk_operation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | async fn delete_key( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | async fn set_key_ttl( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | async fn remove_key_ttl( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 270 | async fn copy_key( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | async fn rename_key( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | async fn set_key_value( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | async fn increment_key( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | async fn append_to_key( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | async fn add_to_set( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | async fn add_to_hash( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn filter_keys_by_pattern(keys: &[String], pattern: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 369 | fn glob_to_regex(pattern: &str) -> regex::Regex { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 387 | pub fn validate_operation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_from_clipboard` is never used [INFO] [stdout] --> src/utils/clipboard.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl ClipboardUtils { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn get_from_clipboard() -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.56s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.24.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3` [INFO] running `Command { std: "docker" "inspect" "17948c2c27034fdd4d1e0a85f0d2091f6f0a2cb23efd887e571545b2eb2bfe9e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "17948c2c27034fdd4d1e0a85f0d2091f6f0a2cb23efd887e571545b2eb2bfe9e", kill_on_drop: false }` [INFO] [stdout] 17948c2c27034fdd4d1e0a85f0d2091f6f0a2cb23efd887e571545b2eb2bfe9e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] fbdee527ca5ee0b44c7e1b94e780454e289500f4362643a00a0386f92fda283c [INFO] running `Command { std: "docker" "start" "-a" "fbdee527ca5ee0b44c7e1b94e780454e289500f4362643a00a0386f92fda283c", kill_on_drop: false }` [INFO] [stderr] Compiling rudis v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `color_eyre::Result` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use color_eyre::Result; [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: `AppEvent` [INFO] [stdout] --> src/app/controller.rs:7:21 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::events::{AppEvent, EventHandler}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::states::*` [INFO] [stdout] --> src/app/state.rs:3:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub use super::states::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_connection::*` [INFO] [stdout] --> src/app/state.rs:6:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub use super::state_connection::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_database::*` [INFO] [stdout] --> src/app/state.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use super::state_database::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_key_navigation::*` [INFO] [stdout] --> src/app/state.rs:8:9 [INFO] [stdout] | [INFO] [stdout] 8 | pub use super::state_key_navigation::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_search::*` [INFO] [stdout] --> src/app/state.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use super::state_search::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_tree_view::*` [INFO] [stdout] --> src/app/state.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use super::state_tree_view::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_progress::*` [INFO] [stdout] --> src/app/state.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use super::state_progress::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_confirmation::*` [INFO] [stdout] --> src/app/state.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use super::state_confirmation::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_export_import::*` [INFO] [stdout] --> src/app/state.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub use super::state_export_import::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::state_bulk_operations::*` [INFO] [stdout] --> src/app/state.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub use super::state_bulk_operations::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `connection_list_state::ConnectionListState` [INFO] [stdout] --> src/app/states/mod.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | pub use connection_list_state::ConnectionListState; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DatabaseBrowserState` [INFO] [stdout] --> src/app/states/mod.rs:13:34 [INFO] [stdout] | [INFO] [stdout] 13 | pub use database_browser_state::{DatabaseBrowserState, KeyInfo}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CommandInputState` [INFO] [stdout] --> src/app/states/mod.rs:14:31 [INFO] [stdout] | [INFO] [stdout] 14 | pub use command_input_state::{CommandInputState, CommandResult}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConnectionDialogState` [INFO] [stdout] --> src/app/states/mod.rs:15:35 [INFO] [stdout] | [INFO] [stdout] 15 | pub use connection_dialog_state::{ConnectionDialogState, ConnectionDialogField, ConnectionFormData}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConnectionConfig` [INFO] [stdout] --> src/app/state_core.rs:3:37 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::app::config::{AppConfig, ConnectionConfig}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `KeyInfo` [INFO] [stdout] --> src/app/state_core.rs:8:24 [INFO] [stdout] | [INFO] [stdout] 8 | ViewMode, UiState, KeyInfo, FocusedPanel [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::AppResult` [INFO] [stdout] --> src/app/state_key_navigation.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::error::AppResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crossterm::terminal` [INFO] [stdout] --> src/app/state_key_navigation.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crossterm::terminal; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::AppResult` [INFO] [stdout] --> src/app/state_tree_view.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::error::AppResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Client`, `Connection`, and `RedisResult` [INFO] [stdout] --> src/redis/connection.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use redis::{Client, Connection, RedisResult}; [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/redis/connection.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/redis/value_types.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `client::*` [INFO] [stdout] --> src/redis/mod.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub use client::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `commands::*` [INFO] [stdout] --> src/redis/mod.rs:9:9 [INFO] [stdout] | [INFO] [stdout] 9 | pub use commands::*; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `types::*` [INFO] [stdout] --> src/redis/mod.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub use types::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `value_types::*` [INFO] [stdout] --> src/redis/mod.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub use value_types::*; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::process::Command` [INFO] [stdout] --> src/events/handler.rs:587:13 [INFO] [stdout] | [INFO] [stdout] 587 | use std::process::Command; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `EnterAlternateScreen` and `enable_raw_mode` [INFO] [stdout] --> src/events/handler.rs:623:57 [INFO] [stdout] | [INFO] [stdout] 623 | use crossterm::terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `execute` [INFO] [stdout] --> src/events/handler.rs:664:47 [INFO] [stdout] | [INFO] [stdout] 664 | use crossterm::{terminal, cursor, execute, queue}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/confirmation_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line`, `Span`, and `Wrap` [INFO] [stdout] --> src/ui/export_import_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] 5 | widgets::{Block, Borders, Clear, Paragraph, Wrap}, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Line` and `Span` [INFO] [stdout] --> src/ui/progress_bar.rs:4:12 [INFO] [stdout] | [INFO] [stdout] 4 | text::{Line, Span}, [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `export_import_dialog::*` [INFO] [stdout] --> src/ui/mod.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | pub use export_import_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `bulk_operations_dialog::*` [INFO] [stdout] --> src/ui/mod.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub use bulk_operations_dialog::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `progress_bar::*` [INFO] [stdout] --> src/ui/mod.rs:22:9 [INFO] [stdout] | [INFO] [stdout] 22 | pub use progress_bar::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tree_view::*` [INFO] [stdout] --> src/ui/mod.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | pub use tree_view::*; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `layout::*` [INFO] [stdout] --> src/ui/mod.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | pub use layout::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `themes::*` [INFO] [stdout] --> src/ui/mod.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub use themes::*; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::redis::value_types::RedisValue` [INFO] [stdout] --> src/utils/bulk_operations.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use crate::redis::value_types::RedisValue; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode [INFO] [stdout] --> src/ui/binary_viewer.rs:391:37 [INFO] [stdout] | [INFO] [stdout] 391 | let base64_string = base64::encode(data); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `exported_data` [INFO] [stdout] --> src/app/state_export_import.rs:68:16 [INFO] [stdout] | [INFO] [stdout] 68 | Ok(exported_data) => { [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exported_data` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:690:33 [INFO] [stdout] | [INFO] [stdout] 689 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 690 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:698:33 [INFO] [stdout] | [INFO] [stdout] 695 | ... redis::Value::Data(bytes) => { [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] ... [INFO] [stdout] 698 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default().parse().unwrap_or(0.0), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:758:37 [INFO] [stdout] | [INFO] [stdout] 757 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 758 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:768:49 [INFO] [stdout] | [INFO] [stdout] 767 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 768 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/redis/connection.rs:774:49 [INFO] [stdout] | [INFO] [stdout] 773 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stdout] | ------------------------- matches all the relevant values [INFO] [stdout] 774 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `connection` [INFO] [stdout] --> src/utils/bulk_operations.rs:271:9 [INFO] [stdout] | [INFO] [stdout] 271 | connection: &mut crate::redis::RedisConnection, [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/utils/bulk_operations.rs:272:9 [INFO] [stdout] | [INFO] [stdout] 272 | key: &str, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target_db` [INFO] [stdout] --> src/utils/bulk_operations.rs:273:9 [INFO] [stdout] | [INFO] [stdout] 273 | target_db: u8, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_db` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude::Stylize` [INFO] [stdout] --> src/ui/binary_viewer.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | prelude::Stylize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `prelude::Stylize` [INFO] [stdout] --> src/ui/confirmation_dialog.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | prelude::Stylize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `delay_ms` [INFO] [stdout] --> src/app/state_progress.rs:70:63 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn schedule_progress_removal(&mut self, index: usize, delay_ms: u64) { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delay_ms` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key_name` [INFO] [stdout] --> src/ui/renderer.rs:621:9 [INFO] [stdout] | [INFO] [stdout] 621 | key_name: &str, [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `progress_ratio` [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:314:17 [INFO] [stdout] | [INFO] [stdout] 314 | let progress_ratio = progress.progress_percentage() / 100.0; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_progress_ratio` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `save_to_file`, `remove_connection`, and `get_connection` are never used [INFO] [stdout] --> src/app/config.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 93 | impl AppConfig { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn save_to_file(&self, path: &PathBuf) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn get_connection(&self, id: &str) -> Option<&ConnectionConfig> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Settings` is never constructed [INFO] [stdout] --> src/app/states/view_mode.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum ViewMode { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 13 | Settings, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ViewMode` 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 `selected_index` and `scroll_offset` are never read [INFO] [stdout] --> src/app/states/connection_list_state.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct ConnectionListState { [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 4 | /// Currently selected connection index [INFO] [stdout] 5 | pub selected_index: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 6 | /// Scroll offset for the list [INFO] [stdout] 7 | pub scroll_offset: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConnectionListState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `total_keys` and `tree_separator` are never read [INFO] [stdout] --> src/app/states/database_browser_state.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 6 | pub struct DatabaseBrowserState { [INFO] [stdout] | -------------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 28 | pub total_keys: Option, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | pub tree_separator: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DatabaseBrowserState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `size` and `matches_filter` are never read [INFO] [stdout] --> src/app/states/database_browser_state.rs:71:9 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct KeyInfo { [INFO] [stdout] | ------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 71 | pub size: Option, [INFO] [stdout] | ^^^^ [INFO] [stdout] 72 | /// Whether this key matches current filter [INFO] [stdout] 73 | pub matches_filter: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyInfo` 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 `cursor_position` and `history_index` are never read [INFO] [stdout] --> src/app/states/command_input_state.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 3 | pub struct CommandInputState { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 7 | pub cursor_position: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | pub history_index: usize, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandInputState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `command`, `result`, and `timestamp` are never read [INFO] [stdout] --> src/app/states/command_input_state.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct CommandResult { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 19 | pub command: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 20 | pub result: Result, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 21 | pub timestamp: std::time::SystemTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CommandResult` 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 `connection_list` is never read [INFO] [stdout] --> src/app/states/ui_state.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct UiState { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 16 | pub connection_list: ConnectionListState, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `UiState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/app/states/key_viewer_state.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct KeyViewerState { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 25 | pub original_value: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | pub selected_hash_field: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 41 | pub original_field_name: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub selected_list_element: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | pub selected_set_member: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub selected_zset_member: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 73 | pub selected_stream_entry: Option, // Entry ID [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyViewerState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/app/states/key_viewer_state.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl KeyViewerState { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] 136 | /// Enter edit mode for string values [INFO] [stdout] 137 | pub fn enter_edit_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn exit_edit_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn insert_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 166 | pub fn delete_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 184 | pub fn move_cursor_left(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | pub fn move_cursor_right(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn move_cursor_home(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 256 | pub fn move_cursor_end(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 263 | pub fn get_edit_value(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 268 | pub fn apply_edit_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn select_hash_field(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 314 | pub fn start_edit_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 324 | pub fn start_edit_hash_value(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 335 | pub fn start_add_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | pub fn cancel_hash_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | pub fn insert_hash_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | pub fn delete_hash_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 386 | pub fn next_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | pub fn prev_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn apply_hash_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | pub fn delete_hash_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn select_list_element(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 480 | pub fn start_edit_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 489 | pub fn start_insert_list_element(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 497 | pub fn start_append_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub fn cancel_list_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 513 | pub fn insert_list_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 521 | pub fn delete_list_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 529 | pub fn next_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn prev_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 549 | pub fn apply_list_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 586 | pub fn delete_list_element(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 608 | pub fn move_list_element_up(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 621 | pub fn move_list_element_down(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 636 | pub fn select_set_member(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn start_add_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 653 | pub fn start_remove_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 661 | pub fn cancel_set_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 668 | pub fn insert_set_char(&mut self, c: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 676 | pub fn delete_set_char(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 684 | pub fn next_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 694 | pub fn prev_set_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 704 | pub fn apply_set_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 759 | pub fn select_zset_member(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 769 | pub fn start_add_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 777 | pub fn start_update_zset_score(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 788 | pub fn start_remove_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 796 | pub fn cancel_zset_edit(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 804 | pub fn insert_zset_char(&mut self, c: char, is_score_field: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 823 | pub fn delete_zset_char(&mut self, is_score_field: bool) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 845 | pub fn next_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 855 | pub fn prev_zset_member(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 865 | pub fn apply_zset_changes(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 945 | pub fn select_stream_entry(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 956 | pub fn toggle_stream_view_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 964 | pub fn next_stream_entry(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 975 | pub fn prev_stream_entry(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 986 | pub fn next_stream_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1000 | pub fn prev_stream_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1007 | pub fn get_current_stream_entry(&self) -> Option<&crate::redis::value_types::StreamEntry> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1016 | pub fn get_stream_entry_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1025 | pub fn cycle_binary_display_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1035 | pub fn toggle_json_highlighting(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1040 | pub fn has_binary_data(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1050 | pub fn get_value_bytes(&self) -> Option<&[u8]> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `key_type`, `size`, and `encoding` are never read [INFO] [stdout] --> src/app/state_core.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct KeyMetadata { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 54 | pub key_type: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 55 | pub ttl: Option, [INFO] [stdout] 56 | pub size: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 57 | pub encoding: Option, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `KeyMetadata` 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: variant `Detail` is never constructed [INFO] [stdout] --> src/app/state_core.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 101 | pub enum StreamViewMode { [INFO] [stdout] | -------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 104 | Detail, // Detail view showing selected entry fields [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StreamViewMode` 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 `get_active_connection`, `remove_connection`, and `set_active_connection` are never used [INFO] [stdout] --> src/app/state_core.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn get_active_connection(&self) -> Option<&RedisConnection> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn set_active_connection(&mut self, id: String) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `select_database` is never used [INFO] [stdout] --> src/app/state_database.rs:23:18 [INFO] [stdout] | [INFO] [stdout] 5 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 23 | pub async fn select_database(&mut self, db_num: u8) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_max_scroll_offset` is never used [INFO] [stdout] --> src/app/state_key_navigation.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 5 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 61 | pub fn get_max_scroll_offset(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `set_key_filter` is never used [INFO] [stdout] --> src/app/state_search.rs:6:18 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 5 | /// Set filter pattern for key search [INFO] [stdout] 6 | pub async fn set_key_filter(&mut self, pattern: String) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update_bulk_progress`, `hide_progress`, and `remove_progress` are never used [INFO] [stdout] --> src/app/state_progress.rs:30:12 [INFO] [stdout] | [INFO] [stdout] 3 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 30 | pub fn update_bulk_progress( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fn hide_progress(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | pub fn remove_progress(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/app/state_confirmation.rs:5:12 [INFO] [stdout] | [INFO] [stdout] 3 | impl AppState { [INFO] [stdout] | ------------- associated items in this implementation [INFO] [stdout] 4 | /// Open confirmation dialog for saving changes [INFO] [stdout] 5 | pub fn confirm_save_changes(&mut self, key_name: String, old_value: String, new_value: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | pub fn confirm_delete_key(&mut self, key_name: String, key_type: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | pub fn confirm_discard_changes(&mut self, key_name: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 32 | pub fn confirm_large_value_edit(&mut self, key_name: String, size: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub fn confirm_binary_data_edit(&mut self, key_name: String, binary_info: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub fn validate_edit_and_confirm(&mut self, key_name: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn handle_confirmation_response(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub fn close_confirmation_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn create_value_summary(value: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_export_dialog`, `open_import_dialog`, `export_current_key`, and `import_data` are never used [INFO] [stdout] --> src/app/state_export_import.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 5 | /// Open export dialog for current key [INFO] [stdout] 6 | pub fn open_export_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 14 | pub fn open_import_dialog(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | pub async fn export_current_key(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub async fn import_data(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `open_bulk_operations_dialog`, `execute_bulk_operation`, and `get_selected_keys_for_bulk` are never used [INFO] [stdout] --> src/app/state_bulk_operations.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 4 | impl AppState { [INFO] [stdout] | ------------- methods in this implementation [INFO] [stdout] 5 | /// Open bulk operations dialog with selected keys [INFO] [stdout] 6 | pub fn open_bulk_operations_dialog(&mut self, selected_keys: Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | pub async fn execute_bulk_operation(&mut self) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn get_selected_keys_for_bulk(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Ui` is never constructed [INFO] [stdout] --> src/error.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 5 | pub enum AppError { [INFO] [stdout] | -------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 15 | Ui(String), [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `bytes_sent` and `bytes_received` are never read [INFO] [stdout] --> src/redis/connection.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct ConnectionStats { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 68 | pub bytes_sent: u64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | pub bytes_received: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConnectionStats` 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 methods are never used [INFO] [stdout] --> src/redis/connection.rs:148:18 [INFO] [stdout] | [INFO] [stdout] 74 | impl RedisConnection { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 148 | pub async fn disconnect(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub async fn ping(&mut self) -> AppResult { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 240 | pub async fn get_server_info(&mut self) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 245 | pub async fn get_database_size(&mut self) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | pub async fn rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub async fn expire_key(&mut self, key: &str, seconds: u64) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 413 | pub async fn get_string_value(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 418 | pub async fn key_exists(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 459 | pub async fn get_key_memory_usage(&mut self, key: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 518 | pub async fn get_hash_field(&mut self, key: &str, field: &str) -> AppResult> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 532 | pub async fn set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub async fn delete_hash_field(&mut self, key: &str, field: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 574 | pub async fn get_list_length(&mut self, key: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 584 | pub async fn list_push(&mut self, key: &str, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 589 | pub async fn list_set(&mut self, key: &str, index: i64, value: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 657 | pub async fn set_add(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 662 | pub async fn set_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 724 | pub async fn zset_add(&mut self, key: &str, score: f64, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 729 | pub async fn zset_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/redis/connection.rs:819:12 [INFO] [stdout] | [INFO] [stdout] 817 | impl RedisConnection { [INFO] [stdout] | -------------------- methods in this implementation [INFO] [stdout] 818 | /// Get current database number [INFO] [stdout] 819 | pub fn get_current_database(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 824 | pub async fn bulk_delete_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 830 | pub async fn set_ttl(&mut self, key: &str, ttl: i64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 836 | pub async fn persist_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 842 | pub async fn bulk_rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 848 | pub async fn bulk_set_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 854 | pub async fn increment_key(&mut self, key: &str, amount: i64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 860 | pub async fn append_to_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 866 | pub async fn add_to_set(&mut self, key: &str, member: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 872 | pub async fn add_to_sorted_set(&mut self, key: &str, member: &str, score: f64) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 878 | pub async fn bulk_set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 884 | pub async fn push_to_list(&mut self, key: &str, value: &str, to_front: bool) -> AppResult<()> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `description`, `is_empty`, and `size` are never used [INFO] [stdout] --> src/redis/value_types.rs:37:12 [INFO] [stdout] | [INFO] [stdout] 22 | impl RedisValue { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 37 | pub fn description(&self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | pub fn is_empty(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn size(&self) -> usize { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValuePage` is never constructed [INFO] [stdout] --> src/redis/value_types.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 124 | pub struct ValuePage { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `start_index`, `end_index`, and `total_pages` are never used [INFO] [stdout] --> src/redis/value_types.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl ValuePage { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 136 | /// Create a new value page [INFO] [stdout] 137 | pub fn new(page: usize, page_size: usize, total_items: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn start_index(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub fn end_index(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub fn total_pages(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ValueDisplayConfig` is never constructed [INFO] [stdout] --> src/redis/value_types.rs:165:12 [INFO] [stdout] | [INFO] [stdout] 165 | pub struct ValueDisplayConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_string_value` is never used [INFO] [stdout] --> src/redis/value_types.rs:192:12 [INFO] [stdout] | [INFO] [stdout] 192 | pub fn format_string_value(value: &str, max_length: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_json_like` is never used [INFO] [stdout] --> src/redis/value_types.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 207 | pub fn is_json_like(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `is_binary_data` is never used [INFO] [stdout] --> src/redis/value_types.rs:214:12 [INFO] [stdout] | [INFO] [stdout] 214 | pub fn is_binary_data(value: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_as_hex` is never used [INFO] [stdout] --> src/redis/value_types.rs:219:12 [INFO] [stdout] | [INFO] [stdout] 219 | pub fn format_as_hex(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/events/types.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum AppEvent { [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 7 | /// User input events [INFO] [stdout] 8 | KeyPressed(KeyEvent), [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 17 | DatabaseSelected { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 23 | KeySelected { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 28 | KeysLoaded { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 35 | KeyContentLoaded { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | CommandExecuted { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 52 | StatusMessage(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 55 | Error(String), [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppEvent` 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: enum `InputEvent` is never used [INFO] [stdout] --> src/events/types.rs:63:10 [INFO] [stdout] | [INFO] [stdout] 63 | pub enum InputEvent { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `message` is never used [INFO] [stdout] --> src/ui/validation.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl ValidationResult { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 28 | pub fn message(&self) -> Option<&str> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `validate_json_detailed` is never used [INFO] [stdout] --> src/ui/validation.rs:181:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl JsonValidator { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn validate_json_detailed(value: &str) -> (ValidationResult, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsonInfo` is never constructed [INFO] [stdout] --> src/ui/validation.rs:201:12 [INFO] [stdout] | [INFO] [stdout] 201 | pub struct JsonInfo { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `JsonValueType` is never used [INFO] [stdout] --> src/ui/validation.rs:209:10 [INFO] [stdout] | [INFO] [stdout] 209 | pub enum JsonValueType { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `from_value` and `calculate_nesting_level` are never used [INFO] [stdout] --> src/ui/validation.rs:219:8 [INFO] [stdout] | [INFO] [stdout] 218 | impl JsonInfo { [INFO] [stdout] | ------------- associated functions in this implementation [INFO] [stdout] 219 | fn from_value(value: &serde_json::Value) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn calculate_nesting_level(value: &serde_json::Value) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `format_json` is never used [INFO] [stdout] --> src/ui/json_highlighter.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 26 | impl JsonHighlighter { [INFO] [stdout] | -------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 38 | pub fn format_json(text: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `size`, `depth`, and `formatted_size` are never read [INFO] [stdout] --> src/ui/json_highlighter.rs:350:9 [INFO] [stdout] | [INFO] [stdout] 346 | pub struct JsonInfo { [INFO] [stdout] | -------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 350 | pub size: usize, [INFO] [stdout] | ^^^^ [INFO] [stdout] 351 | pub depth: usize, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 352 | pub formatted_size: String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `JsonInfo` 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/ui/confirmation_dialog.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ConfirmationType { [INFO] [stdout] | ---------------- variants in this enum [INFO] [stdout] 13 | /// Confirm saving changes to a key value [INFO] [stdout] 14 | SaveChanges { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 20 | DeleteKey { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 25 | DiscardChanges { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | LargeValueEdit { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 34 | BinaryDataEdit { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | TypeConversion { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | BulkOperation { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ConfirmationType` 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: enum `ConfirmationResponse` is never used [INFO] [stdout] --> src/ui/confirmation_dialog.rs:53:10 [INFO] [stdout] | [INFO] [stdout] 53 | pub enum ConfirmationResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/ui/confirmation_dialog.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 92 | impl ConfirmationDialog { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] 93 | /// Open a confirmation dialog [INFO] [stdout] 94 | pub fn open(&mut self, confirmation_type: ConfirmationType) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 105 | pub fn open_custom(&mut self, title: String, message: String, details: Vec) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn next_button(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn prev_button(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn toggle_details(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn get_response(&self) -> ConfirmationResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Import` is never constructed [INFO] [stdout] --> src/ui/export_import_dialog.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum ExportImportMode { [INFO] [stdout] | ---------------- variant in this enum [INFO] [stdout] 26 | Export, [INFO] [stdout] 27 | Import, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportImportMode` 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 methods are never used [INFO] [stdout] --> src/ui/export_import_dialog.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl ExportImportDialog { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] 54 | pub fn open_export(&mut self, default_path: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | pub fn open_import(&mut self, default_path: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 76 | pub fn next_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn cycle_format(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn add_path_char(&mut self, ch: char) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn backspace_path(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn toggle_metadata(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn toggle_ttl(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `editing_field` is never read [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 43 | pub struct BulkOperationParams { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 59 | pub editing_field: ParameterField, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkOperationParams` 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/ui/bulk_operations_dialog.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 64 | pub enum ParameterField { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 65 | None, [INFO] [stdout] 66 | TtlValue, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 67 | TargetDb, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 68 | RenamePattern, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 69 | RenameReplacement, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 70 | SetValue, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 71 | IncrementAmount, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | AppendSuffix, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ParameterField` 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 methods are never used [INFO] [stdout] --> src/ui/bulk_operations_dialog.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 117 | impl BulkOperationsDialog { [INFO] [stdout] | ------------------------- methods in this implementation [INFO] [stdout] 118 | /// Open the bulk operations dialog with selected keys [INFO] [stdout] 119 | pub fn open(&mut self, selected_keys: Vec) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn next_field(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn next_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn prev_operation(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 178 | pub fn start_execution(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn update_progress(&mut self, progress: BulkProgress) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 194 | pub fn add_param_char(&mut self, ch: char) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 208 | pub fn backspace_param(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Transfer`, `BulkOperation`, and `Network` are never constructed [INFO] [stdout] --> src/ui/progress_bar.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum ProgressType { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 16 | Transfer, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 17 | /// Bulk operations with success/failure counts [INFO] [stdout] 18 | BulkOperation, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 22 | Network, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressType` 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 `is_paused` is never read [INFO] [stdout] --> src/ui/progress_bar.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct ProgressBar { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 55 | pub is_paused: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressBar` 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 `memory_usage` and `custom_fields` are never read [INFO] [stdout] --> src/ui/progress_bar.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct ProgressMetadata { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 70 | pub memory_usage: Option, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 71 | /// Custom attributes [INFO] [stdout] 72 | pub custom_fields: Vec<(String, String)>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ProgressMetadata` 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 `show`, `update_bulk`, `set_errors`, `add_error`, `pause`, and `resume` are never used [INFO] [stdout] --> src/ui/progress_bar.rs:113:12 [INFO] [stdout] | [INFO] [stdout] 98 | impl ProgressBar { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 113 | pub fn show(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update_bulk(&mut self, completed: u64, successful: u64, failed: u64, current_op: String) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn set_errors(&mut self, errors: Vec) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 159 | pub fn add_error(&mut self, error: String) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub fn pause(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn resume(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `remove_progress_bar` and `get_active_mut` are never used [INFO] [stdout] --> src/ui/progress_bar.rs:521:12 [INFO] [stdout] | [INFO] [stdout] 511 | impl ProgressBarManager { [INFO] [stdout] | ----------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 521 | pub fn remove_progress_bar(&mut self, index: usize) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 545 | pub fn get_active_mut(&mut self) -> Option<&mut ProgressBar> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `full_path` and `is_leaf` are never read [INFO] [stdout] --> src/ui/tree_view.rs:302:9 [INFO] [stdout] | [INFO] [stdout] 298 | pub struct TreeDisplayInfo { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 302 | pub full_path: String, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 308 | pub is_leaf: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TreeDisplayInfo` 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 `Yaml`, `Csv`, `Raw`, and `Redis` are never constructed [INFO] [stdout] --> src/utils/export_import.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 10 | pub enum ExportFormat { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 14 | Yaml, [INFO] [stdout] | ^^^^ [INFO] [stdout] 15 | /// CSV format (for tabular data like hashes) [INFO] [stdout] 16 | Csv, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | /// Raw binary data [INFO] [stdout] 18 | Raw, [INFO] [stdout] | ^^^ [INFO] [stdout] 19 | /// Redis protocol format (RESP) [INFO] [stdout] 20 | Redis, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ExportFormat` 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 `export_values`, `export_to_json_with_metadata`, `export_to_yaml_with_metadata`, and `get_supported_formats` are never used [INFO] [stdout] --> src/utils/export_import.rs:97:12 [INFO] [stdout] | [INFO] [stdout] 77 | impl DataExporter { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn export_values( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 197 | fn export_to_json_with_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 222 | fn export_to_yaml_with_metadata( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 548 | pub fn get_supported_formats(value_type: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Export`, `AddToSet`, and `AddToHash` are never constructed [INFO] [stdout] --> src/utils/bulk_operations.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum BulkOperation { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 21 | Export { format: crate::utils::export_import::ExportFormat }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 29 | AddToSet { members: Vec }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 30 | /// Add fields to hashes [INFO] [stdout] 31 | AddToHash { fields: HashMap }, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkOperation` 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 `is_complete` is never read [INFO] [stdout] --> src/utils/bulk_operations.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct BulkProgress { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 48 | pub is_complete: bool, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `BulkProgress` 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 `update` are never used [INFO] [stdout] --> src/utils/bulk_operations.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl BulkProgress { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 54 | pub fn new(total: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn update(&mut self, operation: String, success: bool, error: Option) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BulkOperationResult` is never constructed [INFO] [stdout] --> src/utils/bulk_operations.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 93 | pub struct BulkOperationResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated functions are never used [INFO] [stdout] --> src/utils/bulk_operations.rs:109:18 [INFO] [stdout] | [INFO] [stdout] 107 | impl BulkOperationsManager { [INFO] [stdout] | -------------------------- associated functions in this implementation [INFO] [stdout] 108 | /// Execute a single operation on a key (for progress tracking) [INFO] [stdout] 109 | pub async fn execute_single_operation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub async fn execute_bulk_operation( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 244 | async fn delete_key( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 253 | async fn set_key_ttl( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 262 | async fn remove_key_ttl( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 270 | async fn copy_key( [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | async fn rename_key( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | async fn set_key_value( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 313 | async fn increment_key( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | async fn append_to_key( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | async fn add_to_set( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 343 | async fn add_to_hash( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `get_from_clipboard` is never used [INFO] [stdout] --> src/utils/clipboard.rs:21:12 [INFO] [stdout] | [INFO] [stdout] 6 | impl ClipboardUtils { [INFO] [stdout] | ------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 21 | pub fn get_from_clipboard() -> AppResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 1.90s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.24.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3` [INFO] running `Command { std: "docker" "inspect" "fbdee527ca5ee0b44c7e1b94e780454e289500f4362643a00a0386f92fda283c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fbdee527ca5ee0b44c7e1b94e780454e289500f4362643a00a0386f92fda283c", kill_on_drop: false }` [INFO] [stdout] fbdee527ca5ee0b44c7e1b94e780454e289500f4362643a00a0386f92fda283c [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 1d0c53c7a7491ddd3725fb27b90f5437332402743c8cbf4718e368f3387a04da [INFO] running `Command { std: "docker" "start" "-a" "1d0c53c7a7491ddd3725fb27b90f5437332402743c8cbf4718e368f3387a04da", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `color_eyre::Result` [INFO] [stderr] --> src/main.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use color_eyre::Result; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `AppEvent` [INFO] [stderr] --> src/app/controller.rs:7:21 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::events::{AppEvent, EventHandler}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::states::*` [INFO] [stderr] --> src/app/state.rs:3:9 [INFO] [stderr] | [INFO] [stderr] 3 | pub use super::states::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_connection::*` [INFO] [stderr] --> src/app/state.rs:6:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub use super::state_connection::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_database::*` [INFO] [stderr] --> src/app/state.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | pub use super::state_database::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_key_navigation::*` [INFO] [stderr] --> src/app/state.rs:8:9 [INFO] [stderr] | [INFO] [stderr] 8 | pub use super::state_key_navigation::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_search::*` [INFO] [stderr] --> src/app/state.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | pub use super::state_search::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_tree_view::*` [INFO] [stderr] --> src/app/state.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 10 | pub use super::state_tree_view::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_progress::*` [INFO] [stderr] --> src/app/state.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | pub use super::state_progress::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_confirmation::*` [INFO] [stderr] --> src/app/state.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | pub use super::state_confirmation::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_export_import::*` [INFO] [stderr] --> src/app/state.rs:13:9 [INFO] [stderr] | [INFO] [stderr] 13 | pub use super::state_export_import::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::state_bulk_operations::*` [INFO] [stderr] --> src/app/state.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | pub use super::state_bulk_operations::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `connection_list_state::ConnectionListState` [INFO] [stderr] --> src/app/states/mod.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | pub use connection_list_state::ConnectionListState; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `DatabaseBrowserState` [INFO] [stderr] --> src/app/states/mod.rs:13:34 [INFO] [stderr] | [INFO] [stderr] 13 | pub use database_browser_state::{DatabaseBrowserState, KeyInfo}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `CommandInputState` [INFO] [stderr] --> src/app/states/mod.rs:14:31 [INFO] [stderr] | [INFO] [stderr] 14 | pub use command_input_state::{CommandInputState, CommandResult}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ConnectionDialogState` [INFO] [stderr] --> src/app/states/mod.rs:15:35 [INFO] [stderr] | [INFO] [stderr] 15 | pub use connection_dialog_state::{ConnectionDialogState, ConnectionDialogField, ConnectionFormData}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ConnectionConfig` [INFO] [stderr] --> src/app/state_core.rs:3:37 [INFO] [stderr] | [INFO] [stderr] 3 | use crate::app::config::{AppConfig, ConnectionConfig}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `KeyInfo` [INFO] [stderr] --> src/app/state_core.rs:8:24 [INFO] [stderr] | [INFO] [stderr] 8 | ViewMode, UiState, KeyInfo, FocusedPanel [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::error::AppResult` [INFO] [stderr] --> src/app/state_key_navigation.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::error::AppResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crossterm::terminal` [INFO] [stderr] --> src/app/state_key_navigation.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use crossterm::terminal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::error::AppResult` [INFO] [stderr] --> src/app/state_tree_view.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use crate::error::AppResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Client`, `Connection`, and `RedisResult` [INFO] [stderr] --> src/redis/connection.rs:1:13 [INFO] [stderr] | [INFO] [stderr] 1 | use redis::{Client, Connection, RedisResult}; [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/redis/connection.rs:2:17 [INFO] [stderr] | [INFO] [stderr] 2 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/redis/value_types.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `client::*` [INFO] [stderr] --> src/redis/mod.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 7 | pub use client::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `commands::*` [INFO] [stderr] --> src/redis/mod.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | pub use commands::*; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `types::*` [INFO] [stderr] --> src/redis/mod.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 10 | pub use types::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `value_types::*` [INFO] [stderr] --> src/redis/mod.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | pub use value_types::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::process::Command` [INFO] [stderr] --> src/events/handler.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | use std::process::Command; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `EnterAlternateScreen` and `enable_raw_mode` [INFO] [stderr] --> src/events/handler.rs:623:57 [INFO] [stderr] | [INFO] [stderr] 623 | use crossterm::terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}; [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `execute` [INFO] [stderr] --> src/events/handler.rs:664:47 [INFO] [stderr] | [INFO] [stderr] 664 | use crossterm::{terminal, cursor, execute, queue}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Line` and `Span` [INFO] [stderr] --> src/ui/confirmation_dialog.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | text::{Line, Span}, [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Line`, `Span`, and `Wrap` [INFO] [stderr] --> src/ui/export_import_dialog.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | text::{Line, Span}, [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] 5 | widgets::{Block, Borders, Clear, Paragraph, Wrap}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Line` and `Span` [INFO] [stderr] --> src/ui/bulk_operations_dialog.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | text::{Line, Span}, [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Line` and `Span` [INFO] [stderr] --> src/ui/progress_bar.rs:4:12 [INFO] [stderr] | [INFO] [stderr] 4 | text::{Line, Span}, [INFO] [stderr] | ^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `export_import_dialog::*` [INFO] [stderr] --> src/ui/mod.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | pub use export_import_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `bulk_operations_dialog::*` [INFO] [stderr] --> src/ui/mod.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | pub use bulk_operations_dialog::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `progress_bar::*` [INFO] [stderr] --> src/ui/mod.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | pub use progress_bar::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `tree_view::*` [INFO] [stderr] --> src/ui/mod.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | pub use tree_view::*; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `layout::*` [INFO] [stderr] --> src/ui/mod.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | pub use layout::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `themes::*` [INFO] [stderr] --> src/ui/mod.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | pub use themes::*; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::redis::value_types::RedisValue` [INFO] [stderr] --> src/utils/bulk_operations.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use crate::redis::value_types::RedisValue; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `base64::encode`: Use Engine::encode [INFO] [stderr] --> src/ui/binary_viewer.rs:391:37 [INFO] [stderr] | [INFO] [stderr] 391 | let base64_string = base64::encode(data); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `exported_data` [INFO] [stderr] --> src/app/state_export_import.rs:68:16 [INFO] [stderr] | [INFO] [stderr] 68 | Ok(exported_data) => { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_exported_data` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/redis/connection.rs:690:33 [INFO] [stderr] | [INFO] [stderr] 689 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stderr] | ------------------------- matches all the relevant values [INFO] [stderr] 690 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/redis/connection.rs:698:33 [INFO] [stderr] | [INFO] [stderr] 695 | ... redis::Value::Data(bytes) => { [INFO] [stderr] | ------------------------- matches all the relevant values [INFO] [stderr] ... [INFO] [stderr] 698 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default().parse().unwrap_or(0.0), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/redis/connection.rs:758:37 [INFO] [stderr] | [INFO] [stderr] 757 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stderr] | ------------------------- matches all the relevant values [INFO] [stderr] 758 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/redis/connection.rs:768:49 [INFO] [stderr] | [INFO] [stderr] 767 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stderr] | ------------------------- matches all the relevant values [INFO] [stderr] 768 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/redis/connection.rs:774:49 [INFO] [stderr] | [INFO] [stderr] 773 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.clone()).unwrap_or_default(), [INFO] [stderr] | ------------------------- matches all the relevant values [INFO] [stderr] 774 | ... redis::Value::Data(bytes) => String::from_utf8(bytes.to_vec()).unwrap_or_default(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this [INFO] [stderr] [INFO] [stderr] warning: unused variable: `connection` [INFO] [stderr] --> src/utils/bulk_operations.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 271 | connection: &mut crate::redis::RedisConnection, [INFO] [stderr] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_connection` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/utils/bulk_operations.rs:272:9 [INFO] [stderr] | [INFO] [stderr] 272 | key: &str, [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `target_db` [INFO] [stderr] --> src/utils/bulk_operations.rs:273:9 [INFO] [stderr] | [INFO] [stderr] 273 | target_db: u8, [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_db` [INFO] [stderr] [INFO] [stderr] warning: unused import: `prelude::Stylize` [INFO] [stderr] --> src/ui/binary_viewer.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | prelude::Stylize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `prelude::Stylize` [INFO] [stderr] --> src/ui/confirmation_dialog.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | prelude::Stylize, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `delay_ms` [INFO] [stderr] --> src/app/state_progress.rs:70:63 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn schedule_progress_removal(&mut self, index: usize, delay_ms: u64) { [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delay_ms` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key_name` [INFO] [stderr] --> src/ui/renderer.rs:621:9 [INFO] [stderr] | [INFO] [stderr] 621 | key_name: &str, [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_key_name` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `progress_ratio` [INFO] [stderr] --> src/ui/bulk_operations_dialog.rs:314:17 [INFO] [stderr] | [INFO] [stderr] 314 | let progress_ratio = progress.progress_percentage() / 100.0; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_progress_ratio` [INFO] [stderr] [INFO] [stderr] warning: methods `save_to_file`, `remove_connection`, and `get_connection` are never used [INFO] [stderr] --> src/app/config.rs:107:12 [INFO] [stderr] | [INFO] [stderr] 93 | impl AppConfig { [INFO] [stderr] | -------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 107 | pub fn save_to_file(&self, path: &PathBuf) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 132 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 137 | pub fn get_connection(&self, id: &str) -> Option<&ConnectionConfig> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variant `Settings` is never constructed [INFO] [stderr] --> src/app/states/view_mode.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 3 | pub enum ViewMode { [INFO] [stderr] | -------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 13 | Settings, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `selected_index` and `scroll_offset` are never read [INFO] [stderr] --> src/app/states/connection_list_state.rs:5:9 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct ConnectionListState { [INFO] [stderr] | ------------------- fields in this struct [INFO] [stderr] 4 | /// Currently selected connection index [INFO] [stderr] 5 | pub selected_index: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] 6 | /// Scroll offset for the list [INFO] [stderr] 7 | pub scroll_offset: usize, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ConnectionListState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `total_keys` and `tree_separator` are never read [INFO] [stderr] --> src/app/states/database_browser_state.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct DatabaseBrowserState { [INFO] [stderr] | -------------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 28 | pub total_keys: Option, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 34 | pub tree_separator: String, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DatabaseBrowserState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `size` and `matches_filter` are never read [INFO] [stderr] --> src/app/states/database_browser_state.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 63 | pub struct KeyInfo { [INFO] [stderr] | ------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 71 | pub size: Option, [INFO] [stderr] | ^^^^ [INFO] [stderr] 72 | /// Whether this key matches current filter [INFO] [stderr] 73 | pub matches_filter: bool, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `KeyInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `cursor_position` and `history_index` are never read [INFO] [stderr] --> src/app/states/command_input_state.rs:7:9 [INFO] [stderr] | [INFO] [stderr] 3 | pub struct CommandInputState { [INFO] [stderr] | ----------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 7 | pub cursor_position: usize, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 11 | pub history_index: usize, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CommandInputState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `command`, `result`, and `timestamp` are never read [INFO] [stderr] --> src/app/states/command_input_state.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 18 | pub struct CommandResult { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 19 | pub command: String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 20 | pub result: Result, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 21 | pub timestamp: std::time::SystemTime, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CommandResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `connection_list` is never read [INFO] [stderr] --> src/app/states/ui_state.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 11 | pub struct UiState { [INFO] [stderr] | ------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 16 | pub connection_list: ConnectionListState, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `UiState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple fields are never read [INFO] [stderr] --> src/app/states/key_viewer_state.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct KeyViewerState { [INFO] [stderr] | -------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 25 | pub original_value: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 33 | pub selected_hash_field: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 41 | pub original_field_name: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | pub selected_list_element: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 55 | pub selected_set_member: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 63 | pub selected_zset_member: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 73 | pub selected_stream_entry: Option, // Entry ID [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `KeyViewerState` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/app/states/key_viewer_state.rs:137:12 [INFO] [stderr] | [INFO] [stderr] 135 | impl KeyViewerState { [INFO] [stderr] | ------------------- methods in this implementation [INFO] [stderr] 136 | /// Enter edit mode for string values [INFO] [stderr] 137 | pub fn enter_edit_mode(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 148 | pub fn exit_edit_mode(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 157 | pub fn insert_char(&mut self, c: char) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 166 | pub fn delete_char(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 184 | pub fn move_cursor_left(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 195 | pub fn move_cursor_right(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 206 | pub fn move_cursor_home(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 256 | pub fn move_cursor_end(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 263 | pub fn get_edit_value(&self) -> &str { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 268 | pub fn apply_edit_changes(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 304 | pub fn select_hash_field(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 314 | pub fn start_edit_hash_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 324 | pub fn start_edit_hash_value(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 335 | pub fn start_add_hash_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 343 | pub fn cancel_hash_edit(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 352 | pub fn insert_hash_char(&mut self, c: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 367 | pub fn delete_hash_char(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 386 | pub fn next_hash_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 396 | pub fn prev_hash_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 406 | pub fn apply_hash_changes(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 446 | pub fn delete_hash_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 470 | pub fn select_list_element(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 480 | pub fn start_edit_list_element(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 489 | pub fn start_insert_list_element(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 497 | pub fn start_append_list_element(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 505 | pub fn cancel_list_edit(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 513 | pub fn insert_list_char(&mut self, c: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 521 | pub fn delete_list_char(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 529 | pub fn next_list_element(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 539 | pub fn prev_list_element(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 549 | pub fn apply_list_changes(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 586 | pub fn delete_list_element(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 608 | pub fn move_list_element_up(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 621 | pub fn move_list_element_down(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 636 | pub fn select_set_member(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 646 | pub fn start_add_set_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 653 | pub fn start_remove_set_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 661 | pub fn cancel_set_edit(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 668 | pub fn insert_set_char(&mut self, c: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 676 | pub fn delete_set_char(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 684 | pub fn next_set_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 694 | pub fn prev_set_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 704 | pub fn apply_set_changes(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 759 | pub fn select_zset_member(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 769 | pub fn start_add_zset_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 777 | pub fn start_update_zset_score(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 788 | pub fn start_remove_zset_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 796 | pub fn cancel_zset_edit(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 804 | pub fn insert_zset_char(&mut self, c: char, is_score_field: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 823 | pub fn delete_zset_char(&mut self, is_score_field: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 845 | pub fn next_zset_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 855 | pub fn prev_zset_member(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 865 | pub fn apply_zset_changes(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 945 | pub fn select_stream_entry(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 956 | pub fn toggle_stream_view_mode(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 964 | pub fn next_stream_entry(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 975 | pub fn prev_stream_entry(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 986 | pub fn next_stream_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1000 | pub fn prev_stream_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1007 | pub fn get_current_stream_entry(&self) -> Option<&crate::redis::value_types::StreamEntry> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1016 | pub fn get_stream_entry_count(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1025 | pub fn cycle_binary_display_mode(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1035 | pub fn toggle_json_highlighting(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1040 | pub fn has_binary_data(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 1050 | pub fn get_value_bytes(&self) -> Option<&[u8]> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `key_type`, `size`, and `encoding` are never read [INFO] [stderr] --> src/app/state_core.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 53 | pub struct KeyMetadata { [INFO] [stderr] | ----------- fields in this struct [INFO] [stderr] 54 | pub key_type: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 55 | pub ttl: Option, [INFO] [stderr] 56 | pub size: usize, [INFO] [stderr] | ^^^^ [INFO] [stderr] 57 | pub encoding: Option, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `KeyMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variant `Detail` is never constructed [INFO] [stderr] --> src/app/state_core.rs:104:5 [INFO] [stderr] | [INFO] [stderr] 101 | pub enum StreamViewMode { [INFO] [stderr] | -------------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 104 | Detail, // Detail view showing selected entry fields [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `StreamViewMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `get_active_connection`, `remove_connection`, and `set_active_connection` are never used [INFO] [stderr] --> src/app/state_core.rs:144:12 [INFO] [stderr] | [INFO] [stderr] 107 | impl AppState { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 144 | pub fn get_active_connection(&self) -> Option<&RedisConnection> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 164 | pub fn remove_connection(&mut self, id: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 173 | pub fn set_active_connection(&mut self, id: String) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `select_database` is never used [INFO] [stderr] --> src/app/state_database.rs:23:18 [INFO] [stderr] | [INFO] [stderr] 5 | impl AppState { [INFO] [stderr] | ------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 23 | pub async fn select_database(&mut self, db_num: u8) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `get_max_scroll_offset` is never used [INFO] [stderr] --> src/app/state_key_navigation.rs:61:12 [INFO] [stderr] | [INFO] [stderr] 5 | impl AppState { [INFO] [stderr] | ------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 61 | pub fn get_max_scroll_offset(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `set_key_filter` is never used [INFO] [stderr] --> src/app/state_search.rs:6:18 [INFO] [stderr] | [INFO] [stderr] 4 | impl AppState { [INFO] [stderr] | ------------- method in this implementation [INFO] [stderr] 5 | /// Set filter pattern for key search [INFO] [stderr] 6 | pub async fn set_key_filter(&mut self, pattern: String) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `update_bulk_progress`, `hide_progress`, and `remove_progress` are never used [INFO] [stderr] --> src/app/state_progress.rs:30:12 [INFO] [stderr] | [INFO] [stderr] 3 | impl AppState { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 30 | pub fn update_bulk_progress( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 51 | pub fn hide_progress(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 58 | pub fn remove_progress(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> src/app/state_confirmation.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 3 | impl AppState { [INFO] [stderr] | ------------- associated items in this implementation [INFO] [stderr] 4 | /// Open confirmation dialog for saving changes [INFO] [stderr] 5 | pub fn confirm_save_changes(&mut self, key_name: String, old_value: String, new_value: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 17 | pub fn confirm_delete_key(&mut self, key_name: String, key_type: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 25 | pub fn confirm_discard_changes(&mut self, key_name: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 32 | pub fn confirm_large_value_edit(&mut self, key_name: String, size: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 40 | pub fn confirm_binary_data_edit(&mut self, key_name: String, binary_info: String) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 48 | pub fn validate_edit_and_confirm(&mut self, key_name: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 77 | pub fn handle_confirmation_response(&mut self) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 92 | pub fn close_confirmation_dialog(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 97 | fn create_value_summary(value: &str) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `open_export_dialog`, `open_import_dialog`, `export_current_key`, and `import_data` are never used [INFO] [stderr] --> src/app/state_export_import.rs:6:12 [INFO] [stderr] | [INFO] [stderr] 4 | impl AppState { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] 5 | /// Open export dialog for current key [INFO] [stderr] 6 | pub fn open_export_dialog(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 14 | pub fn open_import_dialog(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 20 | pub async fn export_current_key(&mut self) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 105 | pub async fn import_data(&mut self) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `open_bulk_operations_dialog`, `execute_bulk_operation`, and `get_selected_keys_for_bulk` are never used [INFO] [stderr] --> src/app/state_bulk_operations.rs:6:12 [INFO] [stderr] | [INFO] [stderr] 4 | impl AppState { [INFO] [stderr] | ------------- methods in this implementation [INFO] [stderr] 5 | /// Open bulk operations dialog with selected keys [INFO] [stderr] 6 | pub fn open_bulk_operations_dialog(&mut self, selected_keys: Vec) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 11 | pub async fn execute_bulk_operation(&mut self) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 108 | pub fn get_selected_keys_for_bulk(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `Ui` is never constructed [INFO] [stderr] --> src/error.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 5 | pub enum AppError { [INFO] [stderr] | -------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 15 | Ui(String), [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: `AppError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `bytes_sent` and `bytes_received` are never read [INFO] [stderr] --> src/redis/connection.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 57 | pub struct ConnectionStats { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 68 | pub bytes_sent: u64, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 71 | pub bytes_received: u64, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ConnectionStats` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/redis/connection.rs:148:18 [INFO] [stderr] | [INFO] [stderr] 74 | impl RedisConnection { [INFO] [stderr] | -------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 148 | pub async fn disconnect(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 161 | pub async fn ping(&mut self) -> AppResult { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 240 | pub async fn get_server_info(&mut self) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 245 | pub async fn get_database_size(&mut self) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 403 | pub async fn rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 408 | pub async fn expire_key(&mut self, key: &str, seconds: u64) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 413 | pub async fn get_string_value(&mut self, key: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 418 | pub async fn key_exists(&mut self, key: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 459 | pub async fn get_key_memory_usage(&mut self, key: &str) -> AppResult> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 518 | pub async fn get_hash_field(&mut self, key: &str, field: &str) -> AppResult> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 532 | pub async fn set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 537 | pub async fn delete_hash_field(&mut self, key: &str, field: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 574 | pub async fn get_list_length(&mut self, key: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 584 | pub async fn list_push(&mut self, key: &str, value: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 589 | pub async fn list_set(&mut self, key: &str, index: i64, value: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 657 | pub async fn set_add(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 662 | pub async fn set_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 724 | pub async fn zset_add(&mut self, key: &str, score: f64, member: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 729 | pub async fn zset_remove(&mut self, key: &str, member: &str) -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/redis/connection.rs:819:12 [INFO] [stderr] | [INFO] [stderr] 817 | impl RedisConnection { [INFO] [stderr] | -------------------- methods in this implementation [INFO] [stderr] 818 | /// Get current database number [INFO] [stderr] 819 | pub fn get_current_database(&self) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 824 | pub async fn bulk_delete_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 830 | pub async fn set_ttl(&mut self, key: &str, ttl: i64) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 836 | pub async fn persist_key(&mut self, key: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 842 | pub async fn bulk_rename_key(&mut self, old_key: &str, new_key: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 848 | pub async fn bulk_set_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 854 | pub async fn increment_key(&mut self, key: &str, amount: i64) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 860 | pub async fn append_to_string(&mut self, key: &str, value: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 866 | pub async fn add_to_set(&mut self, key: &str, member: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 872 | pub async fn add_to_sorted_set(&mut self, key: &str, member: &str, score: f64) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 878 | pub async fn bulk_set_hash_field(&mut self, key: &str, field: &str, value: &str) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 884 | pub async fn push_to_list(&mut self, key: &str, value: &str, to_front: bool) -> AppResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `description`, `is_empty`, and `size` are never used [INFO] [stderr] --> src/redis/value_types.rs:37:12 [INFO] [stderr] | [INFO] [stderr] 22 | impl RedisValue { [INFO] [stderr] | --------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 37 | pub fn description(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 68 | pub fn is_empty(&self) -> bool { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 81 | pub fn size(&self) -> usize { [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ValuePage` is never constructed [INFO] [stderr] --> src/redis/value_types.rs:124:12 [INFO] [stderr] | [INFO] [stderr] 124 | pub struct ValuePage { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `new`, `start_index`, `end_index`, and `total_pages` are never used [INFO] [stderr] --> src/redis/value_types.rs:137:12 [INFO] [stderr] | [INFO] [stderr] 135 | impl ValuePage { [INFO] [stderr] | -------------- associated items in this implementation [INFO] [stderr] 136 | /// Create a new value page [INFO] [stderr] 137 | pub fn new(page: usize, page_size: usize, total_items: usize) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 148 | pub fn start_index(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 153 | pub fn end_index(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 158 | pub fn total_pages(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `ValueDisplayConfig` is never constructed [INFO] [stderr] --> src/redis/value_types.rs:165:12 [INFO] [stderr] | [INFO] [stderr] 165 | pub struct ValueDisplayConfig { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `format_string_value` is never used [INFO] [stderr] --> src/redis/value_types.rs:192:12 [INFO] [stderr] | [INFO] [stderr] 192 | pub fn format_string_value(value: &str, max_length: usize) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_json_like` is never used [INFO] [stderr] --> src/redis/value_types.rs:207:12 [INFO] [stderr] | [INFO] [stderr] 207 | pub fn is_json_like(value: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `is_binary_data` is never used [INFO] [stderr] --> src/redis/value_types.rs:214:12 [INFO] [stderr] | [INFO] [stderr] 214 | pub fn is_binary_data(value: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `format_as_hex` is never used [INFO] [stderr] --> src/redis/value_types.rs:219:12 [INFO] [stderr] | [INFO] [stderr] 219 | pub fn format_as_hex(data: &[u8]) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/events/types.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub enum AppEvent { [INFO] [stderr] | -------- variants in this enum [INFO] [stderr] 7 | /// User input events [INFO] [stderr] 8 | KeyPressed(KeyEvent), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 17 | DatabaseSelected { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 23 | KeySelected { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 28 | KeysLoaded { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 35 | KeyContentLoaded { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 43 | CommandExecuted { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 52 | StatusMessage(String), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 55 | Error(String), [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 58 | Quit, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `AppEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: enum `InputEvent` is never used [INFO] [stderr] --> src/events/types.rs:63:10 [INFO] [stderr] | [INFO] [stderr] 63 | pub enum InputEvent { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `message` is never used [INFO] [stderr] --> src/ui/validation.rs:28:12 [INFO] [stderr] | [INFO] [stderr] 11 | impl ValidationResult { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 28 | pub fn message(&self) -> Option<&str> { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `validate_json_detailed` is never used [INFO] [stderr] --> src/ui/validation.rs:181:12 [INFO] [stderr] | [INFO] [stderr] 164 | impl JsonValidator { [INFO] [stderr] | ------------------ associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 181 | pub fn validate_json_detailed(value: &str) -> (ValidationResult, Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `JsonInfo` is never constructed [INFO] [stderr] --> src/ui/validation.rs:201:12 [INFO] [stderr] | [INFO] [stderr] 201 | pub struct JsonInfo { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: enum `JsonValueType` is never used [INFO] [stderr] --> src/ui/validation.rs:209:10 [INFO] [stderr] | [INFO] [stderr] 209 | pub enum JsonValueType { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated functions `from_value` and `calculate_nesting_level` are never used [INFO] [stderr] --> src/ui/validation.rs:219:8 [INFO] [stderr] | [INFO] [stderr] 218 | impl JsonInfo { [INFO] [stderr] | ------------- associated functions in this implementation [INFO] [stderr] 219 | fn from_value(value: &serde_json::Value) -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 260 | fn calculate_nesting_level(value: &serde_json::Value) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `format_json` is never used [INFO] [stderr] --> src/ui/json_highlighter.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 26 | impl JsonHighlighter { [INFO] [stderr] | -------------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 38 | pub fn format_json(text: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `size`, `depth`, and `formatted_size` are never read [INFO] [stderr] --> src/ui/json_highlighter.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 346 | pub struct JsonInfo { [INFO] [stderr] | -------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 350 | pub size: usize, [INFO] [stderr] | ^^^^ [INFO] [stderr] 351 | pub depth: usize, [INFO] [stderr] | ^^^^^ [INFO] [stderr] 352 | pub formatted_size: String, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `JsonInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/ui/confirmation_dialog.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 12 | pub enum ConfirmationType { [INFO] [stderr] | ---------------- variants in this enum [INFO] [stderr] 13 | /// Confirm saving changes to a key value [INFO] [stderr] 14 | SaveChanges { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 20 | DeleteKey { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 25 | DiscardChanges { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 29 | LargeValueEdit { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 34 | BinaryDataEdit { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 39 | TypeConversion { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | BulkOperation { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ConfirmationType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: enum `ConfirmationResponse` is never used [INFO] [stderr] --> src/ui/confirmation_dialog.rs:53:10 [INFO] [stderr] | [INFO] [stderr] 53 | pub enum ConfirmationResponse { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/ui/confirmation_dialog.rs:94:12 [INFO] [stderr] | [INFO] [stderr] 92 | impl ConfirmationDialog { [INFO] [stderr] | ----------------------- methods in this implementation [INFO] [stderr] 93 | /// Open a confirmation dialog [INFO] [stderr] 94 | pub fn open(&mut self, confirmation_type: ConfirmationType) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 105 | pub fn open_custom(&mut self, title: String, message: String, details: Vec) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 116 | pub fn close(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 127 | pub fn next_button(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 132 | pub fn prev_button(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 137 | pub fn toggle_details(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 144 | pub fn get_response(&self) -> ConfirmationResponse { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `Import` is never constructed [INFO] [stderr] --> src/ui/export_import_dialog.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub enum ExportImportMode { [INFO] [stderr] | ---------------- variant in this enum [INFO] [stderr] 26 | Export, [INFO] [stderr] 27 | Import, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ExportImportMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/ui/export_import_dialog.rs:54:12 [INFO] [stderr] | [INFO] [stderr] 53 | impl ExportImportDialog { [INFO] [stderr] | ----------------------- methods in this implementation [INFO] [stderr] 54 | pub fn open_export(&mut self, default_path: String) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 62 | pub fn open_import(&mut self, default_path: String) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 70 | pub fn close(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 76 | pub fn next_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 85 | pub fn cycle_format(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 95 | pub fn add_path_char(&mut self, ch: char) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 102 | pub fn backspace_path(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 109 | pub fn toggle_metadata(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 113 | pub fn toggle_ttl(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `editing_field` is never read [INFO] [stderr] --> src/ui/bulk_operations_dialog.rs:59:9 [INFO] [stderr] | [INFO] [stderr] 43 | pub struct BulkOperationParams { [INFO] [stderr] | ------------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 59 | pub editing_field: ParameterField, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `BulkOperationParams` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple variants are never constructed [INFO] [stderr] --> src/ui/bulk_operations_dialog.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 64 | pub enum ParameterField { [INFO] [stderr] | -------------- variants in this enum [INFO] [stderr] 65 | None, [INFO] [stderr] 66 | TtlValue, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 67 | TargetDb, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 68 | RenamePattern, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] 69 | RenameReplacement, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] 70 | SetValue, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 71 | IncrementAmount, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 72 | AppendSuffix, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ParameterField` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> src/ui/bulk_operations_dialog.rs:119:12 [INFO] [stderr] | [INFO] [stderr] 117 | impl BulkOperationsDialog { [INFO] [stderr] | ------------------------- methods in this implementation [INFO] [stderr] 118 | /// Open the bulk operations dialog with selected keys [INFO] [stderr] 119 | pub fn open(&mut self, selected_keys: Vec) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 129 | pub fn close(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 137 | pub fn next_field(&mut self) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 151 | pub fn next_operation(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 160 | pub fn prev_operation(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 178 | pub fn start_execution(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 186 | pub fn update_progress(&mut self, progress: BulkProgress) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 194 | pub fn add_param_char(&mut self, ch: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 208 | pub fn backspace_param(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Transfer`, `BulkOperation`, and `Network` are never constructed [INFO] [stderr] --> src/ui/progress_bar.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 12 | pub enum ProgressType { [INFO] [stderr] | ------------ variants in this enum [INFO] [stderr] ... [INFO] [stderr] 16 | Transfer, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 17 | /// Bulk operations with success/failure counts [INFO] [stderr] 18 | BulkOperation, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 22 | Network, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ProgressType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `is_paused` is never read [INFO] [stderr] --> src/ui/progress_bar.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 27 | pub struct ProgressBar { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 55 | pub is_paused: bool, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ProgressBar` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `memory_usage` and `custom_fields` are never read [INFO] [stderr] --> src/ui/progress_bar.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 64 | pub struct ProgressMetadata { [INFO] [stderr] | ---------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 70 | pub memory_usage: Option, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] 71 | /// Custom attributes [INFO] [stderr] 72 | pub custom_fields: Vec<(String, String)>, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ProgressMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `show`, `update_bulk`, `set_errors`, `add_error`, `pause`, and `resume` are never used [INFO] [stderr] --> src/ui/progress_bar.rs:113:12 [INFO] [stderr] | [INFO] [stderr] 98 | impl ProgressBar { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 113 | pub fn show(&mut self) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 138 | pub fn update_bulk(&mut self, completed: u64, successful: u64, failed: u64, current_op: String) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 154 | pub fn set_errors(&mut self, errors: Vec) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 159 | pub fn add_error(&mut self, error: String) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 164 | pub fn pause(&mut self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 169 | pub fn resume(&mut self) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `remove_progress_bar` and `get_active_mut` are never used [INFO] [stderr] --> src/ui/progress_bar.rs:521:12 [INFO] [stderr] | [INFO] [stderr] 511 | impl ProgressBarManager { [INFO] [stderr] | ----------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 521 | pub fn remove_progress_bar(&mut self, index: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 545 | pub fn get_active_mut(&mut self) -> Option<&mut ProgressBar> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `full_path` and `is_leaf` are never read [INFO] [stderr] --> src/ui/tree_view.rs:302:9 [INFO] [stderr] | [INFO] [stderr] 298 | pub struct TreeDisplayInfo { [INFO] [stderr] | --------------- fields in this struct [INFO] [stderr] ... [INFO] [stderr] 302 | pub full_path: String, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 308 | pub is_leaf: bool, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `TreeDisplayInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: variants `Yaml`, `Csv`, `Raw`, and `Redis` are never constructed [INFO] [stderr] --> src/utils/export_import.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 10 | pub enum ExportFormat { [INFO] [stderr] | ------------ variants in this enum [INFO] [stderr] ... [INFO] [stderr] 14 | Yaml, [INFO] [stderr] | ^^^^ [INFO] [stderr] 15 | /// CSV format (for tabular data like hashes) [INFO] [stderr] 16 | Csv, [INFO] [stderr] | ^^^ [INFO] [stderr] 17 | /// Raw binary data [INFO] [stderr] 18 | Raw, [INFO] [stderr] | ^^^ [INFO] [stderr] 19 | /// Redis protocol format (RESP) [INFO] [stderr] 20 | Redis, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ExportFormat` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated functions `export_values`, `export_to_json_with_metadata`, `export_to_yaml_with_metadata`, and `get_supported_formats` are never used [INFO] [stderr] --> src/utils/export_import.rs:97:12 [INFO] [stderr] | [INFO] [stderr] 77 | impl DataExporter { [INFO] [stderr] | ----------------- associated functions in this implementation [INFO] [stderr] ... [INFO] [stderr] 97 | pub fn export_values( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 197 | fn export_to_json_with_metadata( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 222 | fn export_to_yaml_with_metadata( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 548 | pub fn get_supported_formats(value_type: &str) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Export`, `AddToSet`, and `AddToHash` are never constructed [INFO] [stderr] --> src/utils/bulk_operations.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 9 | pub enum BulkOperation { [INFO] [stderr] | ------------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 21 | Export { format: crate::utils::export_import::ExportFormat }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 29 | AddToSet { members: Vec }, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 30 | /// Add fields to hashes [INFO] [stderr] 31 | AddToHash { fields: HashMap }, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `BulkOperation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `is_complete` is never read [INFO] [stderr] --> src/utils/bulk_operations.rs:48:9 [INFO] [stderr] | [INFO] [stderr] 36 | pub struct BulkProgress { [INFO] [stderr] | ------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 48 | pub is_complete: bool, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `BulkProgress` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: associated items `new` and `update` are never used [INFO] [stderr] --> src/utils/bulk_operations.rs:54:12 [INFO] [stderr] | [INFO] [stderr] 53 | impl BulkProgress { [INFO] [stderr] | ----------------- associated items in this implementation [INFO] [stderr] 54 | pub fn new(total: usize) -> Self { [INFO] [stderr] | ^^^ [INFO] [stderr] ... [INFO] [stderr] 66 | pub fn update(&mut self, operation: String, success: bool, error: Option) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `BulkOperationResult` is never constructed [INFO] [stderr] --> src/utils/bulk_operations.rs:93:12 [INFO] [stderr] | [INFO] [stderr] 93 | pub struct BulkOperationResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated functions are never used [INFO] [stderr] --> src/utils/bulk_operations.rs:109:18 [INFO] [stderr] | [INFO] [stderr] 107 | impl BulkOperationsManager { [INFO] [stderr] | -------------------------- associated functions in this implementation [INFO] [stderr] 108 | /// Execute a single operation on a key (for progress tracking) [INFO] [stderr] 109 | pub async fn execute_single_operation( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 153 | pub async fn execute_bulk_operation( [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 244 | async fn delete_key( [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 253 | async fn set_key_ttl( [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 262 | async fn remove_key_ttl( [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 270 | async fn copy_key( [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 287 | async fn rename_key( [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 304 | async fn set_key_value( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 313 | async fn increment_key( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 322 | async fn append_to_key( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 331 | async fn add_to_set( [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 343 | async fn add_to_hash( [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated function `get_from_clipboard` is never used [INFO] [stderr] --> src/utils/clipboard.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 6 | impl ClipboardUtils { [INFO] [stderr] | ------------------- associated function in this implementation [INFO] [stderr] ... [INFO] [stderr] 21 | pub fn get_from_clipboard() -> AppResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `rudis` (bin "rudis" test) generated 120 warnings (run `cargo fix --bin "rudis" --tests` to apply 42 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.13s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: redis v0.24.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3` [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/rudis-5d06b87713b96d84) [INFO] [stdout] [INFO] [stdout] running 11 tests [INFO] [stdout] test ui::json_highlighter::tests::test_json_validation ... ok [INFO] [stdout] test ui::json_highlighter::tests::test_json_detection ... ok [INFO] [stdout] test ui::binary_viewer::tests::test_mode_detection ... ok [INFO] [stdout] test ui::binary_viewer::tests::test_binary_analysis ... ok [INFO] [stdout] test utils::bulk_operations::tests::test_validate_operation ... ok [INFO] [stdout] test utils::export_import::tests::test_string_export_import ... ok [INFO] [stdout] test utils::export_import::tests::test_hash_export_import ... ok [INFO] [stdout] test ui::validation::tests::test_json_validation ... FAILED [INFO] [stdout] test utils::bulk_operations::tests::test_glob_to_regex ... FAILED [INFO] [stdout] test utils::bulk_operations::tests::test_filter_keys_by_pattern ... FAILED [INFO] [stdout] test ui::validation::tests::test_string_validation ... ok [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] [INFO] [stdout] ---- ui::validation::tests::test_json_validation stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'ui::validation::tests::test_json_validation' (29) panicked at src/ui/validation.rs:308:9: [INFO] [stdout] assertion failed: JsonValidator::validate_json("Hello, World!").is_valid() [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5c47e586bee2 - std::backtrace_rs::backtrace::libunwind::trace::h52580dd202462214 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5c47e586bee2 - std::backtrace_rs::backtrace::trace_unsynchronized::hc969519abce0f52b [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5c47e586bee2 - std::sys::backtrace::_print_fmt::hfd5825900b6e0030 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x5c47e586bee2 - ::fmt::h427144ad75cfb218 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x5c47e587da1f - core::fmt::rt::Argument::fmt::hd5ccc9cf97cea7f7 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x5c47e587da1f - core::fmt::write::h593aaf5adf0f5dae [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x5c47e58394c1 - std::io::default_write_fmt::h305b5a0727055346 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5c47e58394c1 - std::io::Write::write_fmt::h76f14a8a88733dc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x5c47e5845422 - std::sys::backtrace::BacktraceLock::print::h3953113552dca3ca [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x5c47e5849f6f - std::panicking::default_hook::{{closure}}::h486b96ad75eafbb8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x5c47e5849e01 - std::panicking::default_hook::h99456317c5a1a20c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x5c47e579d0fe - as core::ops::function::Fn>::call::h441e4551014e4cf8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 12: 0x5c47e579d0fe - test::test_main_with_exit_callback::{{closure}}::hdbca54e17f1a00e4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5c47e584a62f - as core::ops::function::Fn>::call::h1e57b72c4e1d3045 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 14: 0x5c47e584a62f - std::panicking::panic_with_hook::h67ab0df20212e4ea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x5c47e584a456 - std::panicking::panic_handler::{{closure}}::hc9e4a933ae92e208 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:700:13 [INFO] [stdout] 16: 0x5c47e5845559 - std::sys::backtrace::__rust_end_short_backtrace::hbfa72df9b68c2d19 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x5c47e582d76d - __rustc[8cce077e14951490]::rust_begin_unwind [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x5c47e5887b40 - core::panicking::panic_fmt::h49931053d20abf41 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:75:14 [INFO] [stdout] 19: 0x5c47e5887b1c - core::panicking::panic::h5b3f22493728bee0 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:145:5 [INFO] [stdout] 20: 0x5c47e546a680 - rudis::ui::validation::tests::test_json_validation::h3de0867166410136 [INFO] [stdout] at /opt/rustwide/workdir/src/ui/validation.rs:308:9 [INFO] [stdout] 21: 0x5c47e546a6c7 - rudis::ui::validation::tests::test_json_validation::{{closure}}::h1027c23f13986905 [INFO] [stdout] at /opt/rustwide/workdir/src/ui/validation.rs:300:30 [INFO] [stdout] 22: 0x5c47e5484066 - core::ops::function::FnOnce::call_once::h561b4c2146f45468 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 23: 0x5c47e579cebb - core::ops::function::FnOnce::call_once::h5d9016d521f5aee4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 24: 0x5c47e579cebb - test::__rust_begin_short_backtrace::h123fcee610330442 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x5c47e57b29a5 - test::run_test_in_process::{{closure}}::h0442efda2e6359b2 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x5c47e57b29a5 - as core::ops::function::FnOnce<()>>::call_once::hfe3528c8dd09682c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x5c47e57b29a5 - std::panicking::catch_unwind::do_call::hb1659f7844fe8531 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x5c47e57b29a5 - std::panicking::catch_unwind::hdc1f4be0019e72ad [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x5c47e57b29a5 - std::panic::catch_unwind::hd6d7ccfa4513e770 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x5c47e57b29a5 - test::run_test_in_process::h6bbb839ed0802366 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x5c47e57b29a5 - test::run_test::{{closure}}::he4fad7398c8acc11 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x5c47e5789314 - test::run_test::{{closure}}::h41975797e198d26c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x5c47e5789314 - std::sys::backtrace::__rust_begin_short_backtrace::hfb46c397857336f1 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hddf826a64f532bea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x5c47e578ccba - as core::ops::function::FnOnce<()>>::call_once::hc3518c3eab91aeb3 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x5c47e578ccba - std::panicking::catch_unwind::do_call::h7bf3ad6dc012415a [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x5c47e578ccba - std::panicking::catch_unwind::h8b88f0375c767e36 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x5c47e578ccba - std::panic::catch_unwind::h66cb5d61a90f7bc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::h65bc9d15fb966bbd [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x5c47e578ccba - core::ops::function::FnOnce::call_once{{vtable.shim}}::he8d2c9a8796342e5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 41: 0x5c47e583f68f - as core::ops::function::FnOnce>::call_once::hef12b47e5c033835 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1985:9 [INFO] [stdout] 42: 0x5c47e583f68f - std::sys::pal::unix::thread::Thread::new::thread_start::h135087e7c97657bc [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/pal/unix/thread.rs:118:17 [INFO] [stdout] 43: 0x7a64b5e38aa4 - [INFO] [stdout] 44: 0x7a64b5ec5a34 - clone [INFO] [stdout] 45: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- utils::bulk_operations::tests::test_glob_to_regex stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'utils::bulk_operations::tests::test_glob_to_regex' (32) panicked at src/utils/bulk_operations.rs:488:9: [INFO] [stdout] assertion failed: regex.is_match("user:123") [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5c47e586bee2 - std::backtrace_rs::backtrace::libunwind::trace::h52580dd202462214 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5c47e586bee2 - std::backtrace_rs::backtrace::trace_unsynchronized::hc969519abce0f52b [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5c47e586bee2 - std::sys::backtrace::_print_fmt::hfd5825900b6e0030 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x5c47e586bee2 - ::fmt::h427144ad75cfb218 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x5c47e587da1f - core::fmt::rt::Argument::fmt::hd5ccc9cf97cea7f7 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x5c47e587da1f - core::fmt::write::h593aaf5adf0f5dae [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x5c47e58394c1 - std::io::default_write_fmt::h305b5a0727055346 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5c47e58394c1 - std::io::Write::write_fmt::h76f14a8a88733dc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x5c47e5845422 - std::sys::backtrace::BacktraceLock::print::h3953113552dca3ca [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x5c47e5849f6f - std::panicking::default_hook::{{closure}}::h486b96ad75eafbb8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x5c47e5849e01 - std::panicking::default_hook::h99456317c5a1a20c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x5c47e579d0fe - as core::ops::function::Fn>::call::h441e4551014e4cf8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 12: 0x5c47e579d0fe - test::test_main_with_exit_callback::{{closure}}::hdbca54e17f1a00e4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5c47e584a62f - as core::ops::function::Fn>::call::h1e57b72c4e1d3045 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 14: 0x5c47e584a62f - std::panicking::panic_with_hook::h67ab0df20212e4ea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x5c47e584a456 - std::panicking::panic_handler::{{closure}}::hc9e4a933ae92e208 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:700:13 [INFO] [stdout] 16: 0x5c47e5845559 - std::sys::backtrace::__rust_end_short_backtrace::hbfa72df9b68c2d19 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x5c47e582d76d - __rustc[8cce077e14951490]::rust_begin_unwind [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x5c47e5887b40 - core::panicking::panic_fmt::h49931053d20abf41 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:75:14 [INFO] [stdout] 19: 0x5c47e5887b1c - core::panicking::panic::h5b3f22493728bee0 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:145:5 [INFO] [stdout] 20: 0x5c47e547a724 - rudis::utils::bulk_operations::tests::test_glob_to_regex::h5094aab17a57b5d2 [INFO] [stdout] at /opt/rustwide/workdir/src/utils/bulk_operations.rs:488:9 [INFO] [stdout] 21: 0x5c47e547a907 - rudis::utils::bulk_operations::tests::test_glob_to_regex::{{closure}}::h04dcc936b6c6e155 [INFO] [stdout] at /opt/rustwide/workdir/src/utils/bulk_operations.rs:486:28 [INFO] [stdout] 22: 0x5c47e5484496 - core::ops::function::FnOnce::call_once::h96b9f62e769cc4e9 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 23: 0x5c47e579cebb - core::ops::function::FnOnce::call_once::h5d9016d521f5aee4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 24: 0x5c47e579cebb - test::__rust_begin_short_backtrace::h123fcee610330442 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:663:18 [INFO] [stdout] 25: 0x5c47e57b29a5 - test::run_test_in_process::{{closure}}::h0442efda2e6359b2 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:74 [INFO] [stdout] 26: 0x5c47e57b29a5 - as core::ops::function::FnOnce<()>>::call_once::hfe3528c8dd09682c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 27: 0x5c47e57b29a5 - std::panicking::catch_unwind::do_call::hb1659f7844fe8531 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 28: 0x5c47e57b29a5 - std::panicking::catch_unwind::hdc1f4be0019e72ad [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 29: 0x5c47e57b29a5 - std::panic::catch_unwind::hd6d7ccfa4513e770 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 30: 0x5c47e57b29a5 - test::run_test_in_process::h6bbb839ed0802366 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:27 [INFO] [stdout] 31: 0x5c47e57b29a5 - test::run_test::{{closure}}::he4fad7398c8acc11 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:607:43 [INFO] [stdout] 32: 0x5c47e5789314 - test::run_test::{{closure}}::h41975797e198d26c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:637:41 [INFO] [stdout] 33: 0x5c47e5789314 - std::sys::backtrace::__rust_begin_short_backtrace::hfb46c397857336f1 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 34: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hddf826a64f532bea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 35: 0x5c47e578ccba - as core::ops::function::FnOnce<()>>::call_once::hc3518c3eab91aeb3 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 36: 0x5c47e578ccba - std::panicking::catch_unwind::do_call::h7bf3ad6dc012415a [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 37: 0x5c47e578ccba - std::panicking::catch_unwind::h8b88f0375c767e36 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 38: 0x5c47e578ccba - std::panic::catch_unwind::h66cb5d61a90f7bc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 39: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::h65bc9d15fb966bbd [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 40: 0x5c47e578ccba - core::ops::function::FnOnce::call_once{{vtable.shim}}::he8d2c9a8796342e5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 41: 0x5c47e583f68f - as core::ops::function::FnOnce>::call_once::hef12b47e5c033835 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1985:9 [INFO] [stdout] 42: 0x5c47e583f68f - std::sys::pal::unix::thread::Thread::new::thread_start::h135087e7c97657bc [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/pal/unix/thread.rs:118:17 [INFO] [stdout] 43: 0x7a64b5e38aa4 - [INFO] [stdout] 44: 0x7a64b5ec5a34 - clone [INFO] [stdout] 45: 0x0 - [INFO] [stdout] [INFO] [stdout] ---- utils::bulk_operations::tests::test_filter_keys_by_pattern stdout ---- [INFO] [stdout] [INFO] [stdout] thread 'utils::bulk_operations::tests::test_filter_keys_by_pattern' (31) panicked at src/utils/bulk_operations.rs:508:9: [INFO] [stdout] assertion `left == right` failed [INFO] [stdout] left: 0 [INFO] [stdout] right: 2 [INFO] [stdout] stack backtrace: [INFO] [stdout] 0: 0x5c47e586bee2 - std::backtrace_rs::backtrace::libunwind::trace::h52580dd202462214 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9 [INFO] [stdout] 1: 0x5c47e586bee2 - std::backtrace_rs::backtrace::trace_unsynchronized::hc969519abce0f52b [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14 [INFO] [stdout] 2: 0x5c47e586bee2 - std::sys::backtrace::_print_fmt::hfd5825900b6e0030 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:66:9 [INFO] [stdout] 3: 0x5c47e586bee2 - ::fmt::h427144ad75cfb218 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:39:26 [INFO] [stdout] 4: 0x5c47e587da1f - core::fmt::rt::Argument::fmt::hd5ccc9cf97cea7f7 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/rt.rs:173:76 [INFO] [stdout] 5: 0x5c47e587da1f - core::fmt::write::h593aaf5adf0f5dae [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/fmt/mod.rs:1468:25 [INFO] [stdout] 6: 0x5c47e58394c1 - std::io::default_write_fmt::h305b5a0727055346 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:639:11 [INFO] [stdout] 7: 0x5c47e58394c1 - std::io::Write::write_fmt::h76f14a8a88733dc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/io/mod.rs:1954:13 [INFO] [stdout] 8: 0x5c47e5845422 - std::sys::backtrace::BacktraceLock::print::h3953113552dca3ca [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:42:9 [INFO] [stdout] 9: 0x5c47e5849f6f - std::panicking::default_hook::{{closure}}::h486b96ad75eafbb8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:301:27 [INFO] [stdout] 10: 0x5c47e5849e01 - std::panicking::default_hook::h99456317c5a1a20c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:325:9 [INFO] [stdout] 11: 0x5c47e579d0fe - as core::ops::function::Fn>::call::h441e4551014e4cf8 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 12: 0x5c47e579d0fe - test::test_main_with_exit_callback::{{closure}}::hdbca54e17f1a00e4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:145:21 [INFO] [stdout] 13: 0x5c47e584a62f - as core::ops::function::Fn>::call::h1e57b72c4e1d3045 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1999:9 [INFO] [stdout] 14: 0x5c47e584a62f - std::panicking::panic_with_hook::h67ab0df20212e4ea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:842:13 [INFO] [stdout] 15: 0x5c47e584a48a - std::panicking::panic_handler::{{closure}}::hc9e4a933ae92e208 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:707:13 [INFO] [stdout] 16: 0x5c47e5845559 - std::sys::backtrace::__rust_end_short_backtrace::hbfa72df9b68c2d19 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:174:18 [INFO] [stdout] 17: 0x5c47e582d76d - __rustc[8cce077e14951490]::rust_begin_unwind [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:698:5 [INFO] [stdout] 18: 0x5c47e5887b40 - core::panicking::panic_fmt::h49931053d20abf41 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:75:14 [INFO] [stdout] 19: 0x5c47e5887943 - core::panicking::assert_failed_inner::h3eabd3c15a9e5a8c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:439:17 [INFO] [stdout] 20: 0x5c47e5887757 - core::panicking::assert_failed::h424f0825846ef8b6 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panicking.rs:394:5 [INFO] [stdout] 21: 0x5c47e547b0bb - rudis::utils::bulk_operations::tests::test_filter_keys_by_pattern::h32915d552f469f55 [INFO] [stdout] at /opt/rustwide/workdir/src/utils/bulk_operations.rs:508:9 [INFO] [stdout] 22: 0x5c47e547b2c7 - rudis::utils::bulk_operations::tests::test_filter_keys_by_pattern::{{closure}}::h480c0dd31edb9f30 [INFO] [stdout] at /opt/rustwide/workdir/src/utils/bulk_operations.rs:499:37 [INFO] [stdout] 23: 0x5c47e5483fc6 - core::ops::function::FnOnce::call_once::h3db3289fa2256198 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 24: 0x5c47e579cebb - core::ops::function::FnOnce::call_once::h5d9016d521f5aee4 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 25: 0x5c47e579cebb - test::__rust_begin_short_backtrace::h123fcee610330442 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:663:18 [INFO] [stdout] 26: 0x5c47e57b29a5 - test::run_test_in_process::{{closure}}::h0442efda2e6359b2 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:74 [INFO] [stdout] 27: 0x5c47e57b29a5 - as core::ops::function::FnOnce<()>>::call_once::hfe3528c8dd09682c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 28: 0x5c47e57b29a5 - std::panicking::catch_unwind::do_call::hb1659f7844fe8531 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 29: 0x5c47e57b29a5 - std::panicking::catch_unwind::hdc1f4be0019e72ad [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 30: 0x5c47e57b29a5 - std::panic::catch_unwind::hd6d7ccfa4513e770 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 31: 0x5c47e57b29a5 - test::run_test_in_process::h6bbb839ed0802366 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:686:27 [INFO] [stdout] 32: 0x5c47e57b29a5 - test::run_test::{{closure}}::he4fad7398c8acc11 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:607:43 [INFO] [stdout] 33: 0x5c47e5789314 - test::run_test::{{closure}}::h41975797e198d26c [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/test/src/lib.rs:637:41 [INFO] [stdout] 34: 0x5c47e5789314 - std::sys::backtrace::__rust_begin_short_backtrace::hfb46c397857336f1 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/backtrace.rs:158:18 [INFO] [stdout] 35: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::hddf826a64f532bea [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:559:17 [INFO] [stdout] 36: 0x5c47e578ccba - as core::ops::function::FnOnce<()>>::call_once::hc3518c3eab91aeb3 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/panic/unwind_safe.rs:274:9 [INFO] [stdout] 37: 0x5c47e578ccba - std::panicking::catch_unwind::do_call::h7bf3ad6dc012415a [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:590:40 [INFO] [stdout] 38: 0x5c47e578ccba - std::panicking::catch_unwind::h8b88f0375c767e36 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panicking.rs:553:19 [INFO] [stdout] 39: 0x5c47e578ccba - std::panic::catch_unwind::h66cb5d61a90f7bc5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/panic.rs:359:14 [INFO] [stdout] 40: 0x5c47e578ccba - std::thread::Builder::spawn_unchecked_::{{closure}}::h65bc9d15fb966bbd [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/thread/mod.rs:557:30 [INFO] [stdout] 41: 0x5c47e578ccba - core::ops::function::FnOnce::call_once{{vtable.shim}}::he8d2c9a8796342e5 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/core/src/ops/function.rs:253:5 [INFO] [stdout] 42: 0x5c47e583f68f - as core::ops::function::FnOnce>::call_once::hef12b47e5c033835 [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/alloc/src/boxed.rs:1985:9 [INFO] [stdout] 43: 0x5c47e583f68f - std::sys::pal::unix::thread::Thread::new::thread_start::h135087e7c97657bc [INFO] [stdout] at /rustc/ad85bc524b1ad696e42061ad8338d382dffbdbe5/library/std/src/sys/pal/unix/thread.rs:118:17 [INFO] [stdout] 44: 0x7a64b5e38aa4 - [INFO] [stdout] 45: 0x7a64b5ec5a34 - clone [INFO] [stdout] 46: 0x0 - [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] failures: [INFO] [stdout] ui::validation::tests::test_json_validation [INFO] [stdout] utils::bulk_operations::tests::test_filter_keys_by_pattern [INFO] [stdout] utils::bulk_operations::tests::test_glob_to_regex [INFO] [stdout] [INFO] [stdout] test result: FAILED. 8 passed; 3 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s [INFO] [stdout] [INFO] [stderr] error: test failed, to rerun pass `--bin rudis` [INFO] running `Command { std: "docker" "inspect" "1d0c53c7a7491ddd3725fb27b90f5437332402743c8cbf4718e368f3387a04da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1d0c53c7a7491ddd3725fb27b90f5437332402743c8cbf4718e368f3387a04da", kill_on_drop: false }` [INFO] [stdout] 1d0c53c7a7491ddd3725fb27b90f5437332402743c8cbf4718e368f3387a04da