[INFO] cloning repository https://github.com/dextryayers/veltrix
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dextryayers/veltrix" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdextryayers%2Fveltrix", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdextryayers%2Fveltrix'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d85efa920fc1919f2cdf8e056e283b0f7369f68b
[INFO] checking dextryayers/veltrix against 8d1a76430406c877b35d0b627e7f796dcf0dfeca+rustflags=-Aunfulfilled-lint-expectations for pr-163637
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdextryayers%2Fveltrix" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-7-tc1/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/dextryayers/veltrix
[INFO] finished tweaking git repo https://github.com/dextryayers/veltrix
[INFO] tweaked toml for git repo https://github.com/dextryayers/veltrix written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dextryayers/veltrix on toolchain 8d1a76430406c877b35d0b627e7f796dcf0dfeca
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8d1a76430406c877b35d0b627e7f796dcf0dfeca" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dextryayers/veltrix 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" "+8d1a76430406c877b35d0b627e7f796dcf0dfeca" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded lazy-regex-proc_macros v3.6.0
[INFO] [stderr]   Downloaded lazy-regex v3.6.0
[INFO] [stderr]   Downloaded suppaftp v5.4.0
[INFO] [stderr]   Downloaded value-bag v1.13.1
[INFO] [stderr]   Downloaded ssh2 v0.9.6
[INFO] [stderr]   Downloaded hybrid-array v0.4.13
[INFO] [stderr]   Downloaded halfbrown v0.2.5
[INFO] [stderr]   Downloaded value-trait v0.10.1
[INFO] [stderr]   Downloaded simd-json v0.14.3
[INFO] [stderr]   Downloaded libssh2-sys v0.3.2
[INFO] [stderr]   Downloaded mysql_async v0.34.2
[INFO] [stderr]   Downloaded subprocess v0.2.15
[INFO] [stderr]   Downloaded mysql_common v0.32.4
[INFO] [stderr]   Downloaded borsh v1.8.0
[INFO] [stderr]   Downloaded borsh-derive v1.8.0
[INFO] [stderr]   Downloaded mysql-common-derive v0.31.2
[INFO] [stderr]   Downloaded frunk_core v0.4.4
[INFO] [stderr]   Downloaded frunk_derives v0.4.4
[INFO] [stderr]   Downloaded frunk_proc_macros v0.1.5
[INFO] [stderr]   Downloaded frunk_core v0.5.0
[INFO] [stderr]   Downloaded frunk_proc_macro_helpers v0.1.5
[INFO] [stderr]   Downloaded frunk v0.4.4
[INFO] [stderr]   Downloaded bigdecimal v0.4.10
[INFO] [stderr]   Downloaded keyed_priority_queue v0.4.2
[INFO] [stderr]   Downloaded md5 v0.8.1
[INFO] [stderr]   Downloaded quoted_printable v0.5.2
[INFO] [stderr]   Downloaded md4 v0.11.0
[INFO] [stderr]   Downloaded lettre v0.11.22
[INFO] [stderr]   Downloaded email-encoding v0.4.1
[INFO] [stderr]   Downloaded jiff-static v0.2.34
[INFO] [stderr]   Downloaded jiff v0.2.34
[INFO] [stderr]   Downloaded blake3 v1.8.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7
[INFO] running `Command { std: "docker" "start" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7" "/opt/rustwide/cargo-home/bin/cargo" "+8d1a76430406c877b35d0b627e7f796dcf0dfeca" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Aunfulfilled-lint-expectations" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7" "/opt/rustwide/cargo-home/bin/cargo" "+8d1a76430406c877b35d0b627e7f796dcf0dfeca" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking value-bag v1.13.1
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]     Checking futures-io v0.3.33
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]     Checking mio v1.2.2
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling regex-syntax v0.8.11
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling glob v0.3.4
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling time-core v0.1.9
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling num-conv v0.2.2
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking hybrid-array v0.4.13
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling frunk_core v0.5.0
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling bindgen v0.72.1
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]     Checking time v0.3.54
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]    Compiling rustc-hash v2.1.3
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]     Checking tinyvec v1.12.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking crypto-common v0.2.2
[INFO] [stderr]     Checking block-buffer v0.12.1
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]    Compiling subprocess v0.2.15
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling bigdecimal v0.4.10
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]     Checking const-oid v0.10.2
[INFO] [stderr]    Compiling rust_decimal v1.42.1
[INFO] [stderr]     Checking tap v1.0.1
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling frunk_proc_macro_helpers v0.1.5
[INFO] [stderr]     Checking wyz v0.5.1
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]    Compiling frunk_derives v0.4.4
[INFO] [stderr]    Compiling frunk_proc_macros v0.1.5
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]    Compiling libssh2-sys v0.3.2
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]     Checking frunk_core v0.4.4
[INFO] [stderr]     Checking funty v2.0.0
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking bitvec v1.1.1
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking idna v0.4.0
[INFO] [stderr]     Checking clap_builder v4.6.7
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking halfbrown v0.2.5
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]    Compiling mysql-common-derive v0.31.2
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking crossbeam-queue v0.3.13
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling clap_derive v4.6.7
[INFO] [stderr]     Checking btoi v0.4.3
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking saturating v0.1.0
[INFO] [stderr]     Checking jiff-core v0.1.0
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking lru-cache v0.1.2
[INFO] [stderr]     Checking trust-dns-proto v0.23.2
[INFO] [stderr]     Checking value-trait v0.10.1
[INFO] [stderr]     Checking jiff v0.2.34
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking frunk v0.4.4
[INFO] [stderr]     Checking cookie_store v0.22.1
[INFO] [stderr]     Checking lazy-regex v3.6.0
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking env_filter v2.0.0
[INFO] [stderr]     Checking futures-executor v0.3.33
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]     Checking email-encoding v0.4.1
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking keyed_priority_queue v0.4.2
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking hostname v0.4.2
[INFO] [stderr]     Checking rtoolbox v0.0.5
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking clap v4.6.7
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking resolv-conf v0.7.6
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]     Checking quoted_printable v0.5.2
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking simd-json v0.14.3
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking suppaftp v5.4.0
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking env_logger v0.11.11
[INFO] [stderr]     Checking clap_complete v4.6.11
[INFO] [stderr]     Checking rpassword v7.5.4
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking ctrlc v3.5.2
[INFO] [stderr]     Checking futures v0.3.33
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking async-native-tls v0.5.0
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking md4 v0.11.0
[INFO] [stderr]     Checking hmac v0.13.0
[INFO] [stderr]     Checking dashmap v6.2.1
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking md5 v0.8.1
[INFO] [stderr]     Checking trust-dns-resolver v0.23.2
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]    Compiling mysql_common v0.32.4
[INFO] [stderr]     Checking ssh2 v0.9.6
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking lettre v0.11.22
[INFO] [stderr]     Checking mysql_async v0.34.2
[INFO] [stderr]     Checking veltrix v2.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::core::result::AttackSummary`
[INFO] [stdout]    --> src/utils/output.rs:695:9
[INFO] [stdout]     |
[INFO] [stdout] 695 |     use crate::core::result::AttackSummary;
[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: `chrono::Utc`
[INFO] [stdout]    --> src/utils/output.rs:696:9
[INFO] [stdout]     |
[INFO] [stdout] 696 |     use chrono::Utc;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |     let mut ranked: Vec<(String, f64)> =
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `port_to_protocol` is never used
[INFO] [stdout]     --> src/cli.rs:1032:8
[INFO] [stdout]      |
[INFO] [stdout] 1032 | pub fn port_to_protocol(port: u16) -> Option<&'static str> {    match port {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SmallBuf` is never used
[INFO] [stdout]  --> src/core/buffer.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type SmallBuf = SmallVec<[u8; 128]>;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MediumBuf` is never used
[INFO] [stdout]  --> src/core/buffer.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type MediumBuf = SmallVec<[u8; 512]>;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SmallStringBuf` is never used
[INFO] [stdout]  --> src/core/buffer.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub type SmallStringBuf = SmallVec<[u8; 64]>;
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BufferPool` is never constructed
[INFO] [stdout]  --> src/core/buffer.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct BufferPool {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `acquire`, `release`, and `len` are never used
[INFO] [stdout]   --> src/core/buffer.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl BufferPool {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(capacity: usize, buf_size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn acquire(&mut self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn release(&mut self, mut buf: Vec<u8>) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn len(&self) -> usize { self.pool.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_line_small` is never used
[INFO] [stdout]   --> src/core/buffer.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn read_line_small(src: &[u8], start: usize) -> Option<(SmallStringBuf, usize)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Coordinator` and `Worker` are never constructed
[INFO] [stdout]  --> src/core/config.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum DistributedMode {
[INFO] [stdout]   |          --------------- variants in this enum
[INFO] [stdout] 8 |     Coordinator { bind: String },
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 9 |     Worker { connect: String },
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `DistributedMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/core/config.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttackConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub no_banner: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub distributed_name: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     // Plugin system
[INFO] [stdout] 58 |     pub plugins: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub encrypt: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 63 |     pub encrypt_passphrase: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub decrypt_file: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub decrypt_output: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AttackConfig` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `performance` is never read
[INFO] [stdout]   --> src/core/config_loader.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct ConfigFile {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub performance: PerformanceSection,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ConfigFile` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `merge_into` is never used
[INFO] [stdout]    --> src/core/config_loader.rs:183:12
[INFO] [stdout]     |
[INFO] [stdout] 175 | impl ConfigFile {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn merge_into(self, config: &mut AttackConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `protocols` is never read
[INFO] [stdout]   --> src/core/config_toml.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct TomlAttackSection {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub protocols: Option<Vec<String>>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TomlAttackSection` 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 `threads`, `timeout`, `delay`, `rate_limit`, and `retries` are never read
[INFO] [stdout]   --> src/core/config_toml.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TomlPerformanceSection {
[INFO] [stdout]    |            ---------------------- fields in this struct
[INFO] [stdout] 49 |     pub threads: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 50 |     pub timeout: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 51 |     pub delay: Option<u64>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 52 |     pub rate_limit: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 53 |     pub retries: Option<u32>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TomlPerformanceSection` 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 `format` is never read
[INFO] [stdout]   --> src/core/config_toml.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TomlOutputSection {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 65 |     pub file: Option<String>,
[INFO] [stdout] 66 |     pub format: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TomlOutputSection` 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 `verbose`, `quiet`, and `no_banner` are never read
[INFO] [stdout]   --> src/core/config_toml.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct TomlBehaviorSection {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 72 |     pub stop_on_first: Option<bool>,
[INFO] [stdout] 73 |     pub verbose: Option<bool>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 74 |     pub quiet: Option<bool>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 75 |     pub no_banner: Option<bool>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TomlBehaviorSection` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `merge_into` is never used
[INFO] [stdout]   --> src/core/config_toml.rs:86:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TomlConfig {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn merge_into(self, config: &mut AttackConfig) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user_idx`, `pass_idx`, `outer`, `inner`, and `done` are never read
[INFO] [stdout]   --> src/core/credential_stream.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CredentialStream {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     user_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 25 |     pass_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     outer: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     inner: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     done: bool,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CredentialStream` 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 `cartesian`, `is_done`, `next_one`, `next_batch`, `remaining_estimate`, and `produced` are never used
[INFO] [stdout]    --> src/core/credential_stream.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl CredentialStream {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn cartesian(users: Vec<String>, passwords: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn is_done(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     fn next_one(&mut self) -> Option<Credential> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn next_batch(&mut self, n: usize) -> Vec<Credential> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn remaining_estimate(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn produced(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ref` is never used
[INFO] [stdout]   --> src/core/engine.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<S: tokio::io::AsyncRead + Unpin> ProtocolStream<S> {
[INFO] [stdout]    | ------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_ref(&self) -> &S {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_frame_4le` is never used
[INFO] [stdout]    --> src/core/engine.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl<S: tokio::io::AsyncRead + Unpin> ProtocolStream<S> {
[INFO] [stdout]     | ------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub async fn read_frame_4le(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_tcp_tls` is never used
[INFO] [stdout]    --> src/core/engine.rs:204:14
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub async fn connect_tcp_tls(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/engine.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl ResponseBuffer {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn new_with_capacity(cap: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn as_lowercase(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn contains(&self, pattern: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn contains_lower(&self, pattern: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn contains_any(&self, patterns: &[&str]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn contains_all(&self, patterns: &[&str]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `addr_str` is never used
[INFO] [stdout]   --> src/core/target.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Target {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn addr_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/core/worker.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl WorkerPool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn banned_proxy_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn submit(&mut self, task: WorkerTask) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn submitted_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn inflight(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn skipped_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn user_cooldown_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn target_cooldown_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     pub fn proxy_failure_counts(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 |     Failed(String),
[INFO] [stdout]    |     ------ ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChunkStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 58 -     Failed(String),
[INFO] [stdout] 58 +     Failed(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `max_concurrent`, and `addr` are never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | struct WorkerInfo {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 69 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 70 |     hostname: String,
[INFO] [stdout] 71 |     max_concurrent: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     addr: SocketAddr,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `started_at` is never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct Coordinator {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     started_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `status_snapshot` is never used
[INFO] [stdout]    --> src/distributed/coordinator.rs:315:8
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl Coordinator {
[INFO] [stdout]     | ---------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     fn status_snapshot(s: &Shared) -> CoordinatorStatus {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CoordinatorStatus` is never constructed
[INFO] [stdout]    --> src/distributed/coordinator.rs:329:12
[INFO] [stdout]     |
[INFO] [stdout] 329 | pub struct CoordinatorStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `resume_offset` is never used
[INFO] [stdout]   --> src/distributed/protocol.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ChunkSpec {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn resume_offset(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TlsConnector` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub type TlsConnector = tokio_native_tls::TlsConnector;
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_tls_connector` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn build_tls_connector() -> Result<TlsConnector, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_banner` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:69:14
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub async fn connect_and_banner(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upgrade_to_tls` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:84:14
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub async fn upgrade_to_tls(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_until_tls` is never used
[INFO] [stdout]    --> src/protocols/conn.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub async fn read_until_tls(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_race` is never used
[INFO] [stdout]    --> src/protocols/tcp.rs:102:14
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub async fn connect_race(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_IAC` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const TELNET_IAC: u8 = 255;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_DONT` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const TELNET_DONT: u8 = 254;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_DO` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const TELNET_DO: u8 = 253;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_WONT` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const TELNET_WONT: u8 = 252;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_WILL` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const TELNET_WILL: u8 = 251;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_telnet_negotiation` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn handle_telnet_negotiation(buf: &[u8]) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_be_u8` is never used
[INFO] [stdout]  --> src/protocols/parser.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn parse_be_u8(input: &[u8]) -> IResult<&[u8], u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_be_u16` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn parse_be_u16(input: &[u8]) -> IResult<&[u8], u16> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_be_u32` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn parse_be_u32(input: &[u8]) -> IResult<&[u8], u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_le_u16` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn parse_le_u16(input: &[u8]) -> IResult<&[u8], u16> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_le_u32` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn parse_le_u32(input: &[u8]) -> IResult<&[u8], u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_null_terminated` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn parse_null_terminated(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn parse_line(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `skip_crlf` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn skip_crlf(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_until_crlf` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn parse_until_crlf(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_fixed_string` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn parse_fixed_string<'a>(n: usize) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], &'a [u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_cstring` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parse_cstring(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_pascal_string` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn parse_pascal_string(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_pascal_u16_string` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parse_pascal_u16_string(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_whitespace` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn parse_whitespace(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_digit` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub fn parse_digit(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_alphanumeric` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_alphanumeric(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_int` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn parse_int(input: &[u8]) -> IResult<&[u8], u64> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tag` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_tag<'a>(expected: &'static [u8]) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], &'a [u8]> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_version_string` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn parse_version_string(input: &[u8]) -> IResult<&[u8], (u8, u8, u8)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_crlf_line` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn read_crlf_line(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_line` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn write_line(stream: &mut TcpStream, line: &str) -> Result<(), String> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_banner` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub async fn connect_and_banner(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Fingerprint` is never constructed
[INFO] [stdout]    --> src/protocols/transport.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct Fingerprint {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check` is never used
[INFO] [stdout]    --> src/protocols/transport.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 150 | impl Fingerprint {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 151 |     pub fn check(&self, success_claim: bool, evidence: &str) -> FingerprintVerdict {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FingerprintVerdict` is never used
[INFO] [stdout]    --> src/protocols/transport.rs:179:10
[INFO] [stdout]     |
[INFO] [stdout] 179 | pub enum FingerprintVerdict {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fingerprint_for` is never used
[INFO] [stdout]    --> src/protocols/transport.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn fingerprint_for(protocol: &str) -> Option<Fingerprint> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_file` is never used
[INFO] [stdout]   --> src/utils/encrypt.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn encrypt_file(input_path: &std::path::Path, passphrase: &str) -> Result<Vec<u8>, AttackError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `format`, `file`, and `writer` are never read
[INFO] [stdout]   --> src/utils/output.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct LiveDashboard {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     format: OutputFormat,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 51 |     file: Option<std::fs::File>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 52 |     writer: Option<csv::Writer<std::fs::File>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_enabled` is never used
[INFO] [stdout]   --> src/utils/ratelimit.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl KeyedThrottle {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn is_enabled(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `disabled` is never used
[INFO] [stdout]    --> src/utils/ratelimit.rs:123:12
[INFO] [stdout]     |
[INFO] [stdout] 118 | impl SprayCadence {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn disabled() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `leet_variants` is never used
[INFO] [stdout]    --> src/utils/wordlist_gen.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn leet_variants(s: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `FastMap` is never used
[INFO] [stdout]  --> src/utils/fx_map.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type FastMap<K, V> = FxHashMap<K, V>;
[INFO] [stdout]   |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<T: Hash + Eq> DedupSet<T> {
[INFO] [stdout]    | ------------------------------ associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn contains(&self, value: &T) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 29 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 30 |     pub fn clear(&mut self) { self.inner.clear(); }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 31 |
[INFO] [stdout] 32 |     pub fn into_inner(self) -> FastSet<T> { self.inner }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn with_budget(estimated: usize, budget: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl HashedPairDedup {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 51 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 68 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FastCounter` is never constructed
[INFO] [stdout]   --> src/utils/fx_map.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct FastCounter<T: Hash + Eq> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `increment`, `get`, and `entries` are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl<T: Hash + Eq> FastCounter<T> {
[INFO] [stdout]    | --------------------------------- associated items in this implementation
[INFO] [stdout] 76 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn increment(&mut self, key: T) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub fn get(&self, key: &T) -> u64 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn entries(&self) -> &FastMap<T, u64> { &self.inner }
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReadBuffer` is never constructed
[INFO] [stdout]  --> src/utils/byte_buf.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ReadBuffer {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl ReadBuffer {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout]  9 |     pub fn with_capacity(cap: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn reserve(&mut self, additional: usize) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn put_slice(&mut self, data: &[u8]) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn try_get_line(&mut self) -> Option<Bytes> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn try_get_until(&mut self, delim: &[u8]) -> Option<Bytes> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn remaining(&self) -> &[u8] { &self.inner }
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 37 |     pub fn remaining_mut(&mut self) -> &mut BytesMut { &mut self.inner }
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 38 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 39 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 40 |     pub fn clear(&mut self) { self.inner.clear(); }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 41 |
[INFO] [stdout] 42 |     pub fn split(&mut self, at: usize) -> Bytes {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn freeze(&self) -> Bytes {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WriteBuffer` is never constructed
[INFO] [stdout]   --> src/utils/byte_buf.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct WriteBuffer {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl WriteBuffer {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 56 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn with_capacity(cap: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn put_u8(&mut self, v: u8) { self.inner.put_u8(v); }
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 65 |     pub fn put_u16_be(&mut self, v: u16) { self.inner.put_u16(v); }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 66 |     pub fn put_u32_be(&mut self, v: u32) { self.inner.put_u32(v); }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 67 |     pub fn put_slice(&mut self, data: &[u8]) { self.inner.put_slice(data); }
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 68 |     pub fn put(&mut self, bytes: &[u8]) { self.inner.put_slice(bytes); }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 69 |
[INFO] [stdout] 70 |     pub fn as_slice(&self) -> &[u8] { &self.inner }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 71 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 72 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     pub fn to_bytes(self) -> Bytes { self.inner.freeze() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_exact_buf` is never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn read_exact_buf(stream: &mut (impl io::Read + Unpin), buf: &mut BytesMut, n: usize) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_map` is never used
[INFO] [stdout]  --> src/utils/parallel.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn parallel_map<T, R, F>(items: Vec<T>, f: F) -> Vec<R>
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_filter` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn parallel_filter<T, F>(items: Vec<T>, predicate: F) -> Vec<T>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_flat_map` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn parallel_flat_map<T, R, F>(items: Vec<T>, f: F) -> Vec<R>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_for_each` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn parallel_for_each<T, F>(items: Vec<T>, f: F)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_sort` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn parallel_sort<T: Ord + Send>(items: &mut [T]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_sort_by` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn parallel_sort_by<T, F>(items: &mut [T], compare: F)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_unique` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn parallel_unique<T: Ord + Send + Clone>(items: Vec<T>) -> Vec<T> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_dedup` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parallel_dedup<T: Ord + Send>(items: &mut Vec<T>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_mutation_parallel` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn password_mutation_parallel(base: &[String], max_mutations: usize) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha256` is never used
[INFO] [stdout]  --> src/utils/crypto.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn sha256(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha384` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn sha384(data: &[u8]) -> [u8; 48] {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha512` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn sha512(data: &[u8]) -> [u8; 64] {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_hmac_sha256` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn verify_hmac_sha256(key: &[u8], data: &[u8], expected: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `secure_random_bytes` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn secure_random_bytes(len: usize) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pbkdf2_sha256` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn pbkdf2_sha256(password: &[u8], salt: &[u8], iterations: u32) -> [u8; 32] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `constant_time_eq` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn constant_time_eq(a: &[u8], b: &[u8]) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hex_encode` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn hex_encode(data: &[u8]) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hex_decode` is never used
[INFO] [stdout]   --> src/utils/crypto.rs:87:8
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub fn hex_decode(hex: &str) -> Result<Vec<u8>, String> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blake3_hash` is never used
[INFO] [stdout]  --> src/utils/hash.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn blake3_hash(data: &[u8]) -> [u8; 32] {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blake3_hex` is never used
[INFO] [stdout]  --> src/utils/hash.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn blake3_hex(data: &[u8]) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blake3_keyed` is never used
[INFO] [stdout]   --> src/utils/hash.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn blake3_keyed(key: &[u8], data: &[u8]) -> [u8; 32] {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IncrementalHash` is never constructed
[INFO] [stdout]   --> src/utils/hash.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct IncrementalHash {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, `finalize`, and `finalize_hex` are never used
[INFO] [stdout]   --> src/utils/hash.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl IncrementalHash {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn update(&mut self, data: &[u8]) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn finalize(self) -> [u8; 32] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn finalize_hex(self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fast_fingerprint` is never used
[INFO] [stdout]   --> src/utils/hash.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn fast_fingerprint(data: &[u8]) -> u64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blake3_xof` is never used
[INFO] [stdout]   --> src/utils/hash.rs:51:8
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub fn blake3_xof(data: &[u8], len: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_binary` is never used
[INFO] [stdout]  --> src/utils/binary_ser.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn to_binary<T: Serialize>(value: &T) -> Result<Vec<u8>, String> {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `from_binary` is never used
[INFO] [stdout]   --> src/utils/binary_ser.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn from_binary<T: DeserializeOwned>(bytes: &[u8]) -> Result<T, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_binary` is never used
[INFO] [stdout]   --> src/utils/binary_ser.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn save_binary<T: Serialize>(path: &Path, value: &T) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_binary` is never used
[INFO] [stdout]   --> src/utils/binary_ser.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn load_binary<T: DeserializeOwned>(path: &Path) -> Result<T, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Terminal` is never constructed
[INFO] [stdout]  --> src/utils/term.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Terminal {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/utils/term.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Terminal {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn write_line(&self, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn write_str(&self, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn clear_line(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn clear_screen(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn move_cursor_up(&self, n: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn move_cursor_down(&self, n: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn write_line_at(&self, row: usize, col: usize, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn hide_cursor(&self) { let _ = self.term.hide_cursor(); }
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 46 |     pub fn show_cursor(&self) { let _ = self.term.show_cursor(); }
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 47 |
[INFO] [stdout] 48 |     pub fn set_title(&self, title: &str) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn size(&self) -> (u16, u16) { (self.width, self.height) }
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `green` is never used
[INFO] [stdout]   --> src/utils/term.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn green(text: &str) -> StyledObject<&str> { style(text).green() }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `red` is never used
[INFO] [stdout]   --> src/utils/term.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn red(text: &str) -> StyledObject<&str> { style(text).red() }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yellow` is never used
[INFO] [stdout]   --> src/utils/term.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn yellow(text: &str) -> StyledObject<&str> { style(text).yellow() }
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cyan` is never used
[INFO] [stdout]   --> src/utils/term.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn cyan(text: &str) -> StyledObject<&str> { style(text).cyan() }
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold` is never used
[INFO] [stdout]   --> src/utils/term.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn bold(text: &str) -> StyledObject<&str> { style(text).bold() }
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dim` is never used
[INFO] [stdout]   --> src/utils/term.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn dim(text: &str) -> StyledObject<&str> { style(text).dim() }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `white` is never used
[INFO] [stdout]   --> src/utils/term.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn white(text: &str) -> StyledObject<&str> { style(text).white() }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `italic` is never used
[INFO] [stdout]   --> src/utils/term.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn italic(text: &str) -> StyledObject<&str> { style(text).italic() }
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colored_status` is never used
[INFO] [stdout]   --> src/utils/term.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn colored_status(success: bool, text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate_middle` is never used
[INFO] [stdout]   --> src/utils/term.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn truncate_middle(text: &str, max_len: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pad_right` is never used
[INFO] [stdout]   --> src/utils/term.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn pad_right(text: &str, width: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_bar_text` is never used
[INFO] [stdout]   --> src/utils/term.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn progress_bar_text(current: u64, total: u64, width: usize) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:791:9
[INFO] [stdout]     |
[INFO] [stdout] 791 |     let mut ranked: Vec<(String, f64)> =
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `port_to_protocol` is never used
[INFO] [stdout]     --> src/cli.rs:1032:8
[INFO] [stdout]      |
[INFO] [stdout] 1032 | pub fn port_to_protocol(port: u16) -> Option<&'static str> {    match port {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `MediumBuf` is never used
[INFO] [stdout]  --> src/core/buffer.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type MediumBuf = SmallVec<[u8; 512]>;
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Coordinator` and `Worker` are never constructed
[INFO] [stdout]  --> src/core/config.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum DistributedMode {
[INFO] [stdout]   |          --------------- variants in this enum
[INFO] [stdout] 8 |     Coordinator { bind: String },
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 9 |     Worker { connect: String },
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `DistributedMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `distributed_name`, `plugins`, `encrypt`, `encrypt_passphrase`, `decrypt_file`, and `decrypt_output` are never read
[INFO] [stdout]   --> src/core/config.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttackConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub distributed_name: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 57 |     // Plugin system
[INFO] [stdout] 58 |     pub plugins: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub encrypt: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 63 |     pub encrypt_passphrase: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub decrypt_file: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 65 |     pub decrypt_output: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AttackConfig` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user_idx` and `pass_idx` are never read
[INFO] [stdout]   --> src/core/credential_stream.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct CredentialStream {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     user_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 25 |     pass_idx: usize,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CredentialStream` 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 `remaining_estimate` and `produced` are never used
[INFO] [stdout]    --> src/core/credential_stream.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl CredentialStream {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn remaining_estimate(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn produced(&self) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ref` is never used
[INFO] [stdout]   --> src/core/engine.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<S: tokio::io::AsyncRead + Unpin> ProtocolStream<S> {
[INFO] [stdout]    | ------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_ref(&self) -> &S {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `read_frame_4le` is never used
[INFO] [stdout]    --> src/core/engine.rs:101:18
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl<S: tokio::io::AsyncRead + Unpin> ProtocolStream<S> {
[INFO] [stdout]     | ------------------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub async fn read_frame_4le(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_tcp_tls` is never used
[INFO] [stdout]    --> src/core/engine.rs:204:14
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub async fn connect_tcp_tls(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/core/engine.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 219 | impl ResponseBuffer {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn new_with_capacity(cap: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn as_lowercase(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn contains(&self, pattern: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn contains_lower(&self, pattern: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn contains_any(&self, patterns: &[&str]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn contains_all(&self, patterns: &[&str]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `addr_str` is never used
[INFO] [stdout]   --> src/core/target.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Target {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn addr_str(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/core/worker.rs:80:12
[INFO] [stdout]     |
[INFO] [stdout]  50 | impl WorkerPool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn banned_proxy_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn submit(&mut self, task: WorkerTask) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn submitted_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 374 |     pub fn inflight(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 378 |     pub fn skipped_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn user_cooldown_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn target_cooldown_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 390 |     pub fn proxy_failure_counts(&self) -> Vec<u64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 |     Failed(String),
[INFO] [stdout]    |     ------ ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ChunkStatus` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 58 -     Failed(String),
[INFO] [stdout] 58 +     Failed(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `max_concurrent`, and `addr` are never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | struct WorkerInfo {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 69 |     id: String,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 70 |     hostname: String,
[INFO] [stdout] 71 |     max_concurrent: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 72 |     addr: SocketAddr,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `started_at` is never read
[INFO] [stdout]   --> src/distributed/coordinator.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub struct Coordinator {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     started_at: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `chunks_total`, `chunks_done`, `chunks_pending`, `failed_chunks`, `unique_results`, and `workers` are never read
[INFO] [stdout]    --> src/distributed/coordinator.rs:330:9
[INFO] [stdout]     |
[INFO] [stdout] 329 | pub struct CoordinatorStatus {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] 330 |     pub chunks_total: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 331 |     pub chunks_done: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 332 |     pub chunks_pending: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 333 |     pub chunks_inflight: usize,
[INFO] [stdout] 334 |     pub failed_chunks: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout] 335 |     pub unique_results: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 336 |     pub workers: usize,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CoordinatorStatus` 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: type alias `TlsConnector` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub type TlsConnector = tokio_native_tls::TlsConnector;
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_tls_connector` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn build_tls_connector() -> Result<TlsConnector, String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_banner` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:69:14
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub async fn connect_and_banner(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upgrade_to_tls` is never used
[INFO] [stdout]   --> src/protocols/conn.rs:84:14
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub async fn upgrade_to_tls(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_until_tls` is never used
[INFO] [stdout]    --> src/protocols/conn.rs:131:14
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub async fn read_until_tls(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_race` is never used
[INFO] [stdout]    --> src/protocols/tcp.rs:102:14
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub async fn connect_race(
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_IAC` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const TELNET_IAC: u8 = 255;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_DONT` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const TELNET_DONT: u8 = 254;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_DO` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const TELNET_DO: u8 = 253;
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_WONT` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const TELNET_WONT: u8 = 252;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TELNET_WILL` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const TELNET_WILL: u8 = 251;
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_telnet_negotiation` is never used
[INFO] [stdout]  --> src/protocols/telnet/negotiation.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn handle_telnet_negotiation(buf: &[u8]) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_be_u8` is never used
[INFO] [stdout]  --> src/protocols/parser.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn parse_be_u8(input: &[u8]) -> IResult<&[u8], u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_le_u32` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn parse_le_u32(input: &[u8]) -> IResult<&[u8], u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_line` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn parse_line(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `skip_crlf` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn skip_crlf(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_until_crlf` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn parse_until_crlf(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_pascal_u16_string` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn parse_pascal_u16_string(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_whitespace` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn parse_whitespace(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_alphanumeric` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn parse_alphanumeric(input: &[u8]) -> IResult<&[u8], &[u8]> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_tag` is never used
[INFO] [stdout]   --> src/protocols/parser.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn parse_tag<'a>(expected: &'static [u8]) -> impl FnMut(&'a [u8]) -> IResult<&'a [u8], &'a [u8]> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_crlf_line` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:32:14
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub async fn read_crlf_line(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_line` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn write_line(stream: &mut TcpStream, line: &str) -> Result<(), String> {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `connect_and_banner` is never used
[INFO] [stdout]   --> src/protocols/transport.rs:48:14
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub async fn connect_and_banner(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_file` is never used
[INFO] [stdout]   --> src/utils/encrypt.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn encrypt_file(input_path: &std::path::Path, passphrase: &str) -> Result<Vec<u8>, AttackError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `format`, `file`, and `writer` are never read
[INFO] [stdout]   --> src/utils/output.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct LiveDashboard {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     format: OutputFormat,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 51 |     file: Option<std::fs::File>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 52 |     writer: Option<csv::Writer<std::fs::File>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `leet_variants` is never used
[INFO] [stdout]    --> src/utils/wordlist_gen.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn leet_variants(s: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `contains`, `is_empty`, `clear`, `into_inner`, and `with_budget` are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<T: Hash + Eq> DedupSet<T> {
[INFO] [stdout]    | ------------------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn contains(&self, value: &T) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 30 |     pub fn clear(&mut self) { self.inner.clear(); }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 31 |
[INFO] [stdout] 32 |     pub fn into_inner(self) -> FastSet<T> { self.inner }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn with_budget(estimated: usize, budget: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `len`, and `is_empty` are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl HashedPairDedup {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 51 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 68 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `entries` is never used
[INFO] [stdout]   --> src/utils/fx_map.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl<T: Hash + Eq> FastCounter<T> {
[INFO] [stdout]    | --------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn entries(&self) -> &FastMap<T, u64> { &self.inner }
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl ReadBuffer {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn reserve(&mut self, additional: usize) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn remaining_mut(&mut self) -> &mut BytesMut { &mut self.inner }
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 38 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 39 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 40 |     pub fn clear(&mut self) { self.inner.clear(); }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 41 |
[INFO] [stdout] 42 |     pub fn split(&mut self, at: usize) -> Bytes {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn freeze(&self) -> Bytes {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `put_u32_be`, `put`, `len`, `is_empty`, and `to_bytes` are never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl WriteBuffer {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 56 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn put_u32_be(&mut self, v: u32) { self.inner.put_u32(v); }
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 67 |     pub fn put_slice(&mut self, data: &[u8]) { self.inner.put_slice(data); }
[INFO] [stdout] 68 |     pub fn put(&mut self, bytes: &[u8]) { self.inner.put_slice(bytes); }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn len(&self) -> usize { self.inner.len() }
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 72 |     pub fn is_empty(&self) -> bool { self.inner.is_empty() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 73 |
[INFO] [stdout] 74 |     pub fn to_bytes(self) -> Bytes { self.inner.freeze() }
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_exact_buf` is never used
[INFO] [stdout]   --> src/utils/byte_buf.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn read_exact_buf(stream: &mut (impl io::Read + Unpin), buf: &mut BytesMut, n: usize) -> io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_flat_map` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn parallel_flat_map<T, R, F>(items: Vec<T>, f: F) -> Vec<R>
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_for_each` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn parallel_for_each<T, F>(items: Vec<T>, f: F)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_sort` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn parallel_sort<T: Ord + Send>(items: &mut [T]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_sort_by` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn parallel_sort_by<T, F>(items: &mut [T], compare: F)
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parallel_dedup` is never used
[INFO] [stdout]   --> src/utils/parallel.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn parallel_dedup<T: Ord + Send>(items: &mut Vec<T>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `finalize_hex` is never used
[INFO] [stdout]   --> src/utils/hash.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl IncrementalHash {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn finalize_hex(self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Terminal` is never constructed
[INFO] [stdout]  --> src/utils/term.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Terminal {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/utils/term.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Terminal {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn write_line(&self, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn write_str(&self, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn clear_line(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn clear_screen(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn move_cursor_up(&self, n: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn move_cursor_down(&self, n: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn write_line_at(&self, row: usize, col: usize, text: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn hide_cursor(&self) { let _ = self.term.hide_cursor(); }
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 46 |     pub fn show_cursor(&self) { let _ = self.term.show_cursor(); }
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 47 |
[INFO] [stdout] 48 |     pub fn set_title(&self, title: &str) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn size(&self) -> (u16, u16) { (self.width, self.height) }
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `green` is never used
[INFO] [stdout]   --> src/utils/term.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn green(text: &str) -> StyledObject<&str> { style(text).green() }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `red` is never used
[INFO] [stdout]   --> src/utils/term.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn red(text: &str) -> StyledObject<&str> { style(text).red() }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `yellow` is never used
[INFO] [stdout]   --> src/utils/term.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn yellow(text: &str) -> StyledObject<&str> { style(text).yellow() }
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cyan` is never used
[INFO] [stdout]   --> src/utils/term.rs:58:8
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub fn cyan(text: &str) -> StyledObject<&str> { style(text).cyan() }
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bold` is never used
[INFO] [stdout]   --> src/utils/term.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn bold(text: &str) -> StyledObject<&str> { style(text).bold() }
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dim` is never used
[INFO] [stdout]   --> src/utils/term.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn dim(text: &str) -> StyledObject<&str> { style(text).dim() }
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `white` is never used
[INFO] [stdout]   --> src/utils/term.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn white(text: &str) -> StyledObject<&str> { style(text).white() }
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `italic` is never used
[INFO] [stdout]   --> src/utils/term.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn italic(text: &str) -> StyledObject<&str> { style(text).italic() }
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colored_status` is never used
[INFO] [stdout]   --> src/utils/term.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn colored_status(success: bool, text: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `async-native-tls`
[INFO] [stderr]  --> Cargo.toml:4:1
[INFO] [stderr]   |
[INFO] [stderr] 4 | async-native-tls = "0.5"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `async-native-tls`
[INFO] [stderr] warning: unused dependency `lettre`
[INFO] [stderr]   --> Cargo.toml:64:15
[INFO] [stderr]    |
[INFO] [stderr] 64 | [dependencies.lettre]
[INFO] [stderr]    |               ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `lettre`
[INFO] [stderr] warning: unused dependency `mysql_async`
[INFO] [stderr]   --> Cargo.toml:26:1
[INFO] [stderr]    |
[INFO] [stderr] 26 | mysql_async = "0.34"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `mysql_async`
[INFO] [stderr] warning: unused dependency `simd-json`
[INFO] [stderr]   --> Cargo.toml:76:15
[INFO] [stderr]    |
[INFO] [stderr] 76 | [dependencies.simd-json]
[INFO] [stderr]    |               ^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `simd-json`
[INFO] [stderr] warning: unused dependency `suppaftp`
[INFO] [stderr]   --> Cargo.toml:80:15
[INFO] [stderr]    |
[INFO] [stderr] 80 | [dependencies.suppaftp]
[INFO] [stderr]    |               ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `suppaftp`
[INFO] [stderr] warning: unused dependency `trust-dns-resolver`
[INFO] [stderr]   --> Cargo.toml:46:1
[INFO] [stderr]    |
[INFO] [stderr] 46 | trust-dns-resolver = "0.23"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `trust-dns-resolver`
[INFO] [stderr] warning: `veltrix` (manifest) generated 6 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 41s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: proc-macro-error2 v2.0.1
[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" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7", kill_on_drop: false }`
[INFO] [stdout] f7cf565ae43d3b3cd5603391a0bbad926dbd0e9d91ae3e7e9c7b5a4e75561bf7
