[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] 44ac293832da7e00f5918d868666857915e67b22
[INFO] checking dextryayers/veltrix against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdextryayers%2Fveltrix" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[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-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dextryayers/veltrix on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ipconfig v0.3.4
[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 rtoolbox v0.0.5
[INFO] [stderr]   Downloaded value-trait v0.10.1
[INFO] [stderr]   Downloaded halfbrown v0.2.5
[INFO] [stderr]   Downloaded rpassword v7.5.4
[INFO] [stderr]   Downloaded simd-json v0.14.3
[INFO] [stderr]   Downloaded saturating v0.1.0
[INFO] [stderr]   Downloaded mysql_async v0.34.2
[INFO] [stderr]   Downloaded subprocess v0.2.15
[INFO] [stderr]   Downloaded libssh2-sys v0.3.2
[INFO] [stderr]   Downloaded mysql_common v0.32.4
[INFO] [stderr]   Downloaded mysql-common-derive v0.31.2
[INFO] [stderr]   Downloaded frunk_core v0.5.0
[INFO] [stderr]   Downloaded frunk_derives v0.4.4
[INFO] [stderr]   Downloaded borsh-derive v1.8.0
[INFO] [stderr]   Downloaded frunk_proc_macros v0.1.5
[INFO] [stderr]   Downloaded frunk_core v0.4.4
[INFO] [stderr]   Downloaded frunk_proc_macro_helpers v0.1.5
[INFO] [stderr]   Downloaded btoi v0.4.3
[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 hostname v0.4.2
[INFO] [stderr]   Downloaded email-encoding v0.4.1
[INFO] [stderr]   Downloaded md4 v0.11.0
[INFO] [stderr]   Downloaded email_address v0.2.9
[INFO] [stderr]   Downloaded lettre v0.11.22
[INFO] [stderr]   Downloaded hmac v0.13.0
[INFO] [stderr]   Downloaded clap v4.6.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce
[INFO] running `Command { std: "docker" "start" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce", 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" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]     Checking futures-core v0.3.33
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking futures-io v0.3.33
[INFO] [stderr]     Checking futures-sink v0.3.33
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]     Checking futures-channel v0.3.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking value-bag v1.13.1
[INFO] [stderr]     Checking futures-task v0.3.33
[INFO] [stderr]    Compiling memchr v2.8.3
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]    Compiling aho-corasick v1.1.4
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking http v1.4.2
[INFO] [stderr]    Compiling cc v1.3.0
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking mio v1.2.2
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]    Compiling regex-automata v0.4.16
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling time-macros v0.2.32
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling libz-sys v1.1.29
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]     Checking hybrid-array v0.4.13
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling frunk_core v0.5.0
[INFO] [stderr]    Compiling bindgen v0.72.1
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]    Compiling tokio-macros v2.7.1
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling frunk_proc_macro_helpers v0.1.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking time v0.3.54
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking crossbeam-epoch v0.9.20
[INFO] [stderr]     Checking cmov v0.5.4
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]    Compiling bitflags v2.13.1
[INFO] [stderr]    Compiling radium v0.7.0
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]     Checking ctutils v0.4.2
[INFO] [stderr]     Checking tinyvec v1.12.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking crypto-common v0.2.2
[INFO] [stderr]     Checking block-buffer v0.12.1
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking piper v0.2.5
[INFO] [stderr]    Compiling subprocess v0.2.15
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling bigdecimal v0.4.10
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling rust_decimal v1.42.1
[INFO] [stderr]     Checking tap v1.0.1
[INFO] [stderr]     Checking arrayvec v0.7.8
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]     Checking wyz v0.5.1
[INFO] [stderr]    Compiling nix v0.31.3
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]     Checking unicode-normalization v0.1.25
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking async-executor v1.14.0
[INFO] [stderr]    Compiling frunk_derives v0.4.4
[INFO] [stderr]    Compiling frunk_proc_macros v0.1.5
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]    Compiling libssh2-sys v0.3.2
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]    Compiling ref-cast v1.0.26
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]     Checking frunk_core v0.4.4
[INFO] [stderr]     Checking funty v2.0.0
[INFO] [stderr]     Checking publicsuffix v2.3.0
[INFO] [stderr]    Compiling mysql-common-derive v0.31.2
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking bitvec v1.1.1
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking idna v0.4.0
[INFO] [stderr]     Checking async-global-executor v2.4.1
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking halfbrown v0.2.5
[INFO] [stderr]    Compiling lazy-regex-proc_macros v3.6.0
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling blake3 v1.8.5
[INFO] [stderr]     Checking btoi v0.4.3
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking kv-log-macro v1.0.7
[INFO] [stderr]     Checking crossbeam-queue v0.3.13
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]    Compiling ref-cast-impl v1.0.26
[INFO] [stderr]     Checking saturating v0.1.0
[INFO] [stderr]     Checking frunk v0.4.4
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking lru-cache v0.1.2
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking crossbeam v0.8.4
[INFO] [stderr]     Checking async-std v1.13.2
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking jiff v0.2.34
[INFO] [stderr]     Checking clap_builder v4.6.2
[INFO] [stderr]     Checking trust-dns-proto v0.23.2
[INFO] [stderr]     Checking value-trait v0.10.1
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking lazy-regex v3.6.0
[INFO] [stderr]     Checking cookie_store v0.22.1
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]    Compiling mysql_common v0.32.4
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking futures-executor v0.3.33
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking env_filter v2.0.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]     Checking email-encoding v0.4.1
[INFO] [stderr]    Compiling clap_derive v4.6.4
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking rtoolbox v0.0.5
[INFO] [stderr]     Checking hostname v0.4.2
[INFO] [stderr]     Checking keyed_priority_queue v0.4.2
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking quoted_printable v0.5.2
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking resolv-conf v0.7.6
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]     Checking simd-json v0.14.3
[INFO] [stderr]     Checking trust-dns-resolver v0.23.2
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking ssh2 v0.9.6
[INFO] [stderr]     Checking clap v4.6.4
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking rpassword v7.5.4
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking env_logger v0.11.11
[INFO] [stderr]     Checking futures v0.3.33
[INFO] [stderr]     Checking ctrlc v3.5.2
[INFO] [stderr]     Checking suppaftp v5.4.0
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking hmac v0.13.0
[INFO] [stderr]     Checking md4 v0.11.0
[INFO] [stderr]     Checking dashmap v6.2.1
[INFO] [stderr]     Checking async-native-tls v0.5.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking md5 v0.8.1
[INFO] [stderr]     Checking mysql_async v0.34.2
[INFO] [stderr]     Checking lettre v0.11.22
[INFO] [stderr]     Checking veltrix v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Deserialize`
[INFO] [stdout]  --> src/utils/binary_ser.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use serde::{Deserialize, Serialize};
[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: `crate::core::result::AttackSummary`
[INFO] [stdout]    --> src/utils/output.rs:589:9
[INFO] [stdout]     |
[INFO] [stdout] 589 |     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:590:9
[INFO] [stdout]     |
[INFO] [stdout] 590 |     use chrono::Utc;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total`
[INFO] [stdout]    --> src/core/attack.rs:228:13
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let total = users.len() * passwords.len();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_total`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total`
[INFO] [stdout]    --> src/core/attack.rs:228:13
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let total = users.len() * passwords.len();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_total`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remaining`
[INFO] [stdout]   --> src/protocols/parser.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 |             let remaining = &input[line.len() + 2..];
[INFO] [stdout]    |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remaining`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CloudJob` is never constructed
[INFO] [stdout]  --> src/api/cloud.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CloudJob {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CloudScheduler` is never constructed
[INFO] [stdout]   --> src/api/cloud.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct CloudScheduler {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `submit`, `get_job`, and `list_jobs` are never used
[INFO] [stdout]   --> src/api/cloud.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CloudScheduler {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn submit(&self, config: AttackConfig, running: std::sync::Arc<std::sync::atomic::AtomicBool>) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn get_job(&self, id: &str) -> Option<CloudJob> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn list_jobs(&self) -> Vec<CloudJob> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiServer` is never constructed
[INFO] [stdout]   --> src/api/server.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ApiServer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/api/server.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl ApiServer {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 36 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn run(&self) {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_client` is never used
[INFO] [stdout]   --> src/api/server.rs:92:10
[INFO] [stdout]    |
[INFO] [stdout] 92 | async fn handle_client(
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_response` is never used
[INFO] [stdout]    --> src/api/server.rs:455:10
[INFO] [stdout]     |
[INFO] [stdout] 455 | async fn send_response(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_json` is never used
[INFO] [stdout]    --> src/api/server.rs:475:10
[INFO] [stdout]     |
[INFO] [stdout] 475 | async fn send_json(
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WEB_UI_HTML` is never used
[INFO] [stdout]  --> src/api/web_ui.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const WEB_UI_HTML: &str = r###"<!DOCTYPE html>
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `port_to_protocol` is never used
[INFO] [stdout]    --> src/cli.rs:489:8
[INFO] [stdout]     |
[INFO] [stdout] 489 | pub fn port_to_protocol(port: u16) -> Option<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_targets_for_distributed` and `load_credentials_for_distributed` are never used
[INFO] [stdout]   --> src/core/attack.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl AttackOrchestrator {
[INFO] [stdout]    | ----------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub async fn load_targets_for_distributed(config: &AttackConfig) -> Result<Vec<Target>, AttackError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub async fn load_credentials_for_distributed(config: &AttackConfig) -> Result<Vec<Credential>, AttackError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[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:37:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttackConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub quiet: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 38 |     pub no_banner: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub distributed_name: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     // Plugin system
[INFO] [stdout] 55 |     pub plugins: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 56 |     // REST API
[INFO] [stdout] 57 |     pub api_bind: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 58 |     // Encrypted output
[INFO] [stdout] 59 |     pub encrypt: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 60 |     pub encrypt_passphrase: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub decrypt_file: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 62 |     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: struct `ConfigFile` is never constructed
[INFO] [stdout]  --> src/core/config_loader.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct ConfigFile {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AttackSection` is never constructed
[INFO] [stdout]   --> src/core/config_loader.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct AttackSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CredentialsSection` is never constructed
[INFO] [stdout]   --> src/core/config_loader.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct CredentialsSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HybridSection` is never constructed
[INFO] [stdout]   --> src/core/config_loader.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct HybridSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceSection` is never constructed
[INFO] [stdout]   --> src/core/config_loader.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct PerformanceSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProxySection` is never constructed
[INFO] [stdout]    --> src/core/config_loader.rs:121:12
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub struct ProxySection {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OutputSection` is never constructed
[INFO] [stdout]    --> src/core/config_loader.rs:139:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct OutputSection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BehaviorSection` is never constructed
[INFO] [stdout]    --> src/core/config_loader.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct BehaviorSection {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load` and `merge_into` are never used
[INFO] [stdout]    --> src/core/config_loader.rs:176:12
[INFO] [stdout]     |
[INFO] [stdout] 175 | impl ConfigFile {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 176 |     pub fn load(path: &Path) -> Result<Self, AttackError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn merge_into(self, config: &mut AttackConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlConfig` is never constructed
[INFO] [stdout]  --> src/core/config_toml.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct TomlConfig {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlAttackSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct TomlAttackSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlCredentialsSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct TomlCredentialsSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlHybridSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TomlHybridSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlPerformanceSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct TomlPerformanceSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlProxySection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct TomlProxySection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlOutputSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct TomlOutputSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TomlBehaviorSection` is never constructed
[INFO] [stdout]   --> src/core/config_toml.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct TomlBehaviorSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `load` and `merge_into` are never used
[INFO] [stdout]   --> src/core/config_toml.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | impl TomlConfig {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 79 |     pub fn load(path: &Path) -> Result<Self, AttackError> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn merge_into(self, config: &mut AttackConfig) {
[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: methods `submit`, `submitted_count`, and `is_idle` are never used
[INFO] [stdout]    --> src/core/worker.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl WorkerPool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn submit(&mut self, task: WorkerTask) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn submitted_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `handle_worker` are never used
[INFO] [stdout]    --> src/distributed/coordinator.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl Coordinator {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  41 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub async fn run(&mut self) -> Vec<AuthResult> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     async fn handle_worker(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_batch` is never used
[INFO] [stdout]    --> src/distributed/coordinator.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl CoordinatorState {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 314 |     fn next_batch(&mut self, batch_size: usize) -> Option<Vec<SerializedTask>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PROTOCOL_VERSION` is never used
[INFO] [stdout]  --> src/distributed/protocol.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const PROTOCOL_VERSION: &str = "veltrix-dist-v1";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DistributedMessage` is never used
[INFO] [stdout]  --> src/distributed/protocol.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DistributedMessage {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SerializedTask` is never constructed
[INFO] [stdout]   --> src/distributed/protocol.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct SerializedTask {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SerializedResult` is never constructed
[INFO] [stdout]   --> src/distributed/protocol.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct SerializedResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DistributedWorker` is never constructed
[INFO] [stdout]   --> src/distributed/worker.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct DistributedWorker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/distributed/worker.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl DistributedWorker {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn run(&self) -> Vec<AuthResult> {
[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:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | 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:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | 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:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | 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:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | 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:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | 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:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | 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:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | 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:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | 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:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | 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:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | 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:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | 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:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | 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:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn parse_version_string(input: &[u8]) -> IResult<&[u8], (u8, u8, u8)> {
[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: 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: associated items `new`, `len`, `is_empty`, `clear`, and `into_inner` 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] 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] 
[INFO] [stdout] warning: struct `FastCounter` is never constructed
[INFO] [stdout]   --> src/utils/fx_map.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | 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:40:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<T: Hash + Eq> FastCounter<T> {
[INFO] [stdout]    | --------------------------------- associated items in this implementation
[INFO] [stdout] 40 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn increment(&mut self, key: T) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn get(&self, key: &T) -> u64 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     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: unused variable: `remaining`
[INFO] [stdout]   --> src/protocols/parser.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 |             let remaining = &input[line.len() + 2..];
[INFO] [stdout]    |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remaining`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CloudJob` is never constructed
[INFO] [stdout]  --> src/api/cloud.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct CloudJob {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CloudScheduler` is never constructed
[INFO] [stdout]   --> src/api/cloud.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct CloudScheduler {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `submit`, `get_job`, and `list_jobs` are never used
[INFO] [stdout]   --> src/api/cloud.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CloudScheduler {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn submit(&self, config: AttackConfig, running: std::sync::Arc<std::sync::atomic::AtomicBool>) -> String {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn get_job(&self, id: &str) -> Option<CloudJob> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 88 |     pub fn list_jobs(&self) -> Vec<CloudJob> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ApiServer` is never constructed
[INFO] [stdout]   --> src/api/server.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct ApiServer {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/api/server.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl ApiServer {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 36 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn run(&self) {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_client` is never used
[INFO] [stdout]   --> src/api/server.rs:92:10
[INFO] [stdout]    |
[INFO] [stdout] 92 | async fn handle_client(
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_response` is never used
[INFO] [stdout]    --> src/api/server.rs:455:10
[INFO] [stdout]     |
[INFO] [stdout] 455 | async fn send_response(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_json` is never used
[INFO] [stdout]    --> src/api/server.rs:475:10
[INFO] [stdout]     |
[INFO] [stdout] 475 | async fn send_json(
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WEB_UI_HTML` is never used
[INFO] [stdout]  --> src/api/web_ui.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const WEB_UI_HTML: &str = r###"<!DOCTYPE html>
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `port_to_protocol` is never used
[INFO] [stdout]    --> src/cli.rs:489:8
[INFO] [stdout]     |
[INFO] [stdout] 489 | pub fn port_to_protocol(port: u16) -> Option<&'static str> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_targets_for_distributed` and `load_credentials_for_distributed` are never used
[INFO] [stdout]   --> src/core/attack.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl AttackOrchestrator {
[INFO] [stdout]    | ----------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub async fn load_targets_for_distributed(config: &AttackConfig) -> Result<Vec<Target>, AttackError> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub async fn load_credentials_for_distributed(config: &AttackConfig) -> Result<Vec<Credential>, AttackError> {
[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: 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:53:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttackConfig {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub distributed_name: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     // Plugin system
[INFO] [stdout] 55 |     pub plugins: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 56 |     // REST API
[INFO] [stdout] 57 |     pub api_bind: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 58 |     // Encrypted output
[INFO] [stdout] 59 |     pub encrypt: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 60 |     pub encrypt_passphrase: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 61 |     pub decrypt_file: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 62 |     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: 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: methods `submit`, `submitted_count`, and `is_idle` are never used
[INFO] [stdout]    --> src/core/worker.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl WorkerPool {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn submit(&mut self, task: WorkerTask) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn submitted_count(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn is_idle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `run`, and `handle_worker` are never used
[INFO] [stdout]    --> src/distributed/coordinator.rs:41:12
[INFO] [stdout]     |
[INFO] [stdout]  40 | impl Coordinator {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  41 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub async fn run(&mut self) -> Vec<AuthResult> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     async fn handle_worker(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_batch` is never used
[INFO] [stdout]    --> src/distributed/coordinator.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | impl CoordinatorState {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 314 |     fn next_batch(&mut self, batch_size: usize) -> Option<Vec<SerializedTask>> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PROTOCOL_VERSION` is never used
[INFO] [stdout]  --> src/distributed/protocol.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const PROTOCOL_VERSION: &str = "veltrix-dist-v1";
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DistributedMessage` is never used
[INFO] [stdout]  --> src/distributed/protocol.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum DistributedMessage {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SerializedTask` is never constructed
[INFO] [stdout]   --> src/distributed/protocol.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct SerializedTask {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SerializedResult` is never constructed
[INFO] [stdout]   --> src/distributed/protocol.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct SerializedResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DistributedWorker` is never constructed
[INFO] [stdout]   --> src/distributed/worker.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct DistributedWorker {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `run` are never used
[INFO] [stdout]   --> src/distributed/worker.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl DistributedWorker {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn run(&self) -> Vec<AuthResult> {
[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:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | 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:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | 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:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | 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:68:8
[INFO] [stdout]    |
[INFO] [stdout] 68 | 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:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | 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:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | 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:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | 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 `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: methods `is_empty`, `clear`, and `into_inner` are never used
[INFO] [stdout]   --> src/utils/fx_map.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl<T: Hash + Eq> DedupSet<T> {
[INFO] [stdout]    | ------------------------------ methods in this implementation
[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] 
[INFO] [stdout] warning: method `entries` is never used
[INFO] [stdout]   --> src/utils/fx_map.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<T: Hash + Eq> FastCounter<T> {
[INFO] [stdout]    | --------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     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:59:15
[INFO] [stderr]    |
[INFO] [stderr] 59 | [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:25:1
[INFO] [stderr]    |
[INFO] [stderr] 25 | 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:71:15
[INFO] [stderr]    |
[INFO] [stderr] 71 | [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:75:15
[INFO] [stderr]    |
[INFO] [stderr] 75 | [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:45:1
[INFO] [stderr]    |
[INFO] [stderr] 45 | 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 3m 44s
[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 2`
[INFO] running `Command { std: "docker" "inspect" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce", kill_on_drop: false }`
[INFO] [stdout] 7cac72c4278ebf69b2768e1378c3e797b2eb41cc815ef21004afaefbad5877ce
