[INFO] cloning repository https://github.com/Artyomkun/HydraVPN
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Artyomkun/HydraVPN" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtyomkun%2FHydraVPN", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtyomkun%2FHydraVPN'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 18672845cae2a812981617d16b0fec4d18e09acd
[INFO] checking Artyomkun/HydraVPN against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6 for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FArtyomkun%2FHydraVPN" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Artyomkun/HydraVPN
[INFO] finished tweaking git repo https://github.com/Artyomkun/HydraVPN
[INFO] tweaked toml for git repo https://github.com/Artyomkun/HydraVPN written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Artyomkun/HydraVPN on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Artyomkun/HydraVPN 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.ar
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.dlltool
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.linker
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.ranlib
[INFO] [stderr] warning: `hydravpn` (manifest) generated 4 warnings
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45
[INFO] running `Command { std: "docker" "start" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45", 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" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45", 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" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.ar
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.dlltool
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.linker
[INFO] [stderr] warning: Cargo.toml: unused manifest key: target.x86_64-pc-windows-gnu.ranlib
[INFO] [stderr] warning: `hydravpn` (manifest) generated 4 warnings
[INFO] [stderr]    Compiling proc-macro2 v1.0.107
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling serde_core v1.0.229
[INFO] [stderr]    Compiling shlex v2.0.1
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]     Checking smallvec v1.15.2
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]    Compiling pkg-config v0.3.33
[INFO] [stderr]     Checking memchr v2.8.3
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling zerocopy v0.8.55
[INFO] [stderr]     Checking futures-core v0.3.33
[INFO] [stderr]     Checking typenum v1.20.1
[INFO] [stderr]    Compiling serde v1.0.229
[INFO] [stderr]     Checking bytes v1.12.1
[INFO] [stderr]     Checking itoa v1.0.18
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.3
[INFO] [stderr]    Compiling vcpkg v0.2.15
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]     Checking futures-sink v0.3.33
[INFO] [stderr]    Compiling cc v1.4.0
[INFO] [stderr]    Compiling cfg-if v1.0.4
[INFO] [stderr]    Compiling autocfg v1.5.1
[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 errno v0.3.14
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.2
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]     Checking crypto-common v0.1.7
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking futures-channel v0.3.33
[INFO] [stderr]     Checking bitflags v2.13.1
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]     Checking futures-io v0.3.33
[INFO] [stderr]     Checking futures-task v0.3.33
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking cpufeatures v0.2.17
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling openssl v0.10.81
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]    Compiling zmij v1.0.23
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling native-tls v0.2.18
[INFO] [stderr]    Compiling openssl-sys v0.9.117
[INFO] [stderr]    Compiling serde_json v1.0.151
[INFO] [stderr]     Checking http v1.5.0
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]     Checking litemap v0.8.2
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking indexmap v2.14.0
[INFO] [stderr]     Checking writeable v0.6.3
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking foreign-types-shared v0.1.1
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]     Checking foreign-types v0.3.2
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking openssl-probe v0.2.1
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]     Checking http-body v1.1.0
[INFO] [stderr]     Checking try-lock v0.2.5
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking want v0.3.1
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking aho-corasick v1.1.5
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling tokio-macros v2.7.2
[INFO] [stderr]     Checking httpdate v1.0.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[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 tracing-attributes v0.1.31
[INFO] [stderr]    Compiling futures-macro v0.3.33
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking futures-util v0.3.33
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling zeroize_derive v1.5.0
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking zeroize v1.9.0
[INFO] [stderr]     Checking rand v0.8.7
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking bytemuck v1.25.2
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]     Checking atomic v0.6.1
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.26.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]     Checking regex-syntax v0.8.11
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling chrono v0.4.45
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]     Checking regex-automata v0.4.16
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]     Checking h2 v0.4.15
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling pest v2.8.8
[INFO] [stderr]    Compiling tokio-stream v0.1.19
[INFO] [stderr]     Checking alloc-stdlib v0.2.4
[INFO] [stderr]     Checking uuid v1.24.0
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling crossbeam-queue v0.3.13
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling either v1.17.0
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]     Checking futures-executor v0.3.33
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]    Compiling async-trait v0.1.91
[INFO] [stderr]    Compiling spin v0.9.9
[INFO] [stderr]     Checking http-body-util v0.1.4
[INFO] [stderr]     Checking sha1 v0.10.7
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking data-encoding v2.11.1
[INFO] [stderr]     Checking utf-8 v0.7.6
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]     Checking adler2 v2.0.1
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]     Checking ipnet v2.12.1
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking opaque-debug v0.3.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling rustversion v1.0.23
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling sqlx-core v0.7.2
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]     Checking hyper v1.11.0
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking brotli-decompressor v5.0.3
[INFO] [stderr]    Compiling pest_meta v2.8.8
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.16
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling unicode-segmentation v1.13.3
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking powerfmt v0.2.0
[INFO] [stderr]     Checking time-core v0.1.9
[INFO] [stderr]    Compiling fastrand v2.5.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]     Checking num-conv v0.2.2
[INFO] [stderr]     Checking event-listener v5.4.2
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]    Compiling pest_generator v2.8.8
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]     Checking brotli v8.0.4
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking rustls-pki-types v1.15.1
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]    Compiling lz4-sys v1.11.1+lz4-1.10.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]    Compiling sqlx-sqlite v0.7.2
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking thread_local v1.1.10
[INFO] [stderr]    Compiling thiserror v2.0.19
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking nu-ansi-term v0.50.3
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking compression-core v0.4.32
[INFO] [stderr]    Compiling procfs v0.16.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]    Compiling portable-atomic v1.14.0
[INFO] [stderr]     Checking mime v0.3.17
[INFO] [stderr]     Checking opentelemetry v0.21.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking compression-codecs v0.4.38
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.2
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]    Compiling pest_derive v2.8.8
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking procfs-core v0.16.0
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking metrics v0.22.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.19
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking base64ct v1.8.3
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]    Compiling anyhow v1.0.104
[INFO] [stderr]     Checking sketches-ddsketch v0.2.2
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]     Checking glob v0.3.4
[INFO] [stderr]     Checking metrics-util v0.16.3
[INFO] [stderr]     Checking opentelemetry_sdk v0.21.2
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]    Compiling sqlx-macros v0.7.2
[INFO] [stderr]     Checking async-lock v3.4.2
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking async-compression v0.4.43
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking poly1305 v0.8.0
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking chacha20 v0.9.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking predicates-core v1.0.10
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking symlink v0.1.0
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking tagptr v0.2.0
[INFO] [stderr]     Checking moka v0.12.15
[INFO] [stderr]     Checking tracing-appender v0.2.5
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking chacha20poly1305 v0.10.1
[INFO] [stderr]     Checking bcrypt v0.15.1
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking x25519-dalek v2.0.1
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking sqlx v0.7.2
[INFO] [stderr]     Checking tracing-opentelemetry v0.22.0
[INFO] [stderr]     Checking metrics-exporter-prometheus v0.13.1
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]     Checking arc-swap v1.9.2
[INFO] [stderr]     Checking webpki v0.22.4
[INFO] [stderr]     Checking futures v0.3.33
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking predicates-tree v1.0.13
[INFO] [stderr]     Checking predicates v3.1.4
[INFO] [stderr]    Compiling mockall_derive v0.12.1
[INFO] [stderr]     Checking fragile v2.1.0
[INFO] [stderr]     Checking yansi v1.0.1
[INFO] [stderr]     Checking deunicode v1.6.2
[INFO] [stderr]     Checking diff v0.1.13
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking pretty_assertions v1.4.1
[INFO] [stderr]     Checking fake v2.10.0
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking mockall v0.12.1
[INFO] [stderr]     Checking lz4 v1.28.1
[INFO] [stderr]     Checking hydravpn v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ProtocolType`
[INFO] [stdout]   --> src/proxy/manager.rs:14:48
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::proxy::protocol::{ProtocolRegistry, ProtocolType, TrafficMeter};
[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: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/hysteria2.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/trojan.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProtocolType`
[INFO] [stdout]   --> src/proxy/manager.rs:14:48
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::proxy::protocol::{ProtocolRegistry, ProtocolType, TrafficMeter};
[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: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/hysteria2.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proxy_tcp_with_metering`
[INFO] [stdout]   --> src/proxy/trojan.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     proxy_tcp_with_metering,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `meter`
[INFO] [stdout]   --> src/proxy/manager.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let meter: Arc<TrafficMeter> = Arc::new(TrafficMeter::new());
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_meter`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_addr`
[INFO] [stdout]    --> src/proxy/shadowsocks.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let target_addr: SocketAddr = format!("{}:{}", target_host, target_port)
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_host`
[INFO] [stdout]    --> src/proxy/trojan.rs:150:14
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let (target_host, target_port) = self.read_address(&mut stream).await?;
[INFO] [stdout]     |              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_port`
[INFO] [stdout]    --> src/proxy/trojan.rs:150:27
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let (target_host, target_port) = self.read_address(&mut stream).await?;
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `meter`
[INFO] [stdout]   --> src/proxy/manager.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let meter: Arc<TrafficMeter> = Arc::new(TrafficMeter::new());
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_meter`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_handler` is never used
[INFO] [stdout]   --> src/api/handlers.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn health_handler() -> &'static str {
[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 `NodeResponse` is never constructed
[INFO] [stdout]  --> src/api/models.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct NodeResponse {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelocateRequest` is never constructed
[INFO] [stdout]   --> src/api/models.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RelocateRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelocateResponse` is never constructed
[INFO] [stdout]   --> src/api/models.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct RelocateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemStatus` is never constructed
[INFO] [stdout]   --> src/api/models.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SystemStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `real_count` and `decoy_multiplier` are never read
[INFO] [stdout]  --> src/node/generator.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct NodeGenerator {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] 6 |     real_count: u32,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 7 |     decoy_multiplier: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kill_threshold` is never read
[INFO] [stdout]  --> src/node/watcher.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct NodeWatcher {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     kill_threshold: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Action` is never used
[INFO] [stdout]  --> src/node/scaler.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Action {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodeScaler` is never constructed
[INFO] [stdout]  --> src/node/scaler.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NodeScaler {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_required_nodes` and `auto_scale` are never used
[INFO] [stdout]   --> src/node/scaler.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl NodeScaler {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 14 |     pub fn calculate_required_nodes(&self, total_connections: u32) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn auto_scale(&self, current_connections: u32, current_nodes: u32) -> Vec<Action> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DbResult` is never used
[INFO] [stdout]  --> src/db/repository.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type DbResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Database` is never constructed
[INFO] [stdout]   --> src/db/repository.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Database {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/db/repository.rs:16:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Database {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  16 |     pub async fn new(db_url: &str) -> DbResult<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn save_node(&self, node: &Node) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub async fn get_all_nodes(&self) -> DbResult<Vec<Node>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn get_node(&self, id: Uuid) -> DbResult<Option<Node>> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub async fn update_node_status(&self, id: Uuid, status: &str) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub async fn increment_kill_count(&self, id: Uuid) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn delete_node(&self, id: Uuid) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn log_kill_event(&self, event: &KillEvent) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_stats(&self) -> DbResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_node` is never used
[INFO] [stdout]    --> src/db/repository.rs:184:4
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn row_to_node(row: &SqliteRow) -> Node {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PoolError` is never used
[INFO] [stdout]  --> src/connection/pool.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PoolError {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PooledConnection` is never constructed
[INFO] [stdout]   --> src/connection/pool.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct PooledConnection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `release` are never used
[INFO] [stdout]   --> src/connection/pool.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl PooledConnection {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(node: String, permit: OwnedSemaphorePermit, active_connections: Arc<AtomicUsize>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn release(self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_connections`, `semaphore`, `active_connections`, and `is_closed` are never read
[INFO] [stdout]   --> src/connection/pool.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct ConnectionPool {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 53 |     max_connections: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 55 |     active_connections: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     is_closed: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `acquire`, `close`, `active_connections`, `available_connections`, `is_closed`, and `max_connections` are never used
[INFO] [stdout]    --> src/connection/pool.rs:69:18
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl ConnectionPool {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn acquire(&self) -> Result<PooledConnection, PoolError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn close(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn active_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn available_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn is_closed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn max_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemMetrics` is never constructed
[INFO] [stdout]  --> src/connection/backpressure.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SystemMetrics {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BackpressureAction` is never used
[INFO] [stdout]   --> src/connection/backpressure.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum BackpressureAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BackpressureManager` is never constructed
[INFO] [stdout]   --> src/connection/backpressure.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct BackpressureManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check_and_apply` are never used
[INFO] [stdout]   --> src/connection/backpressure.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl BackpressureManager {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 27 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn check_and_apply(&self, metrics: &SystemMetrics) -> BackpressureAction {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_timeout`, `keep_alive`, `tcp_nodelay`, `tcp_fastopen`, and `backlog` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ProxyConfig {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub connection_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     pub keep_alive: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 35 |     pub tcp_nodelay: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 36 |     pub tcp_fastopen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub backlog: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `node`, `started_at`, and `last_check` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ProxyInstance {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 42 |     pub id: Uuid,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 43 |     pub node: Node,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 44 |     pub status: ProxyStatus,
[INFO] [stdout] 45 |     pub started_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 46 |     pub last_check: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyInstance` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Degraded`, `Dead`, and `Draining` are never constructed
[INFO] [stdout]   --> src/proxy/manager.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum ProxyStatus {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 53 |     Active,
[INFO] [stdout] 54 |     Degraded,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 55 |     Dead,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 56 |     Draining,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `client_addr`, `connected_at`, `bytes_sent`, `bytes_received`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct ProxyConnection {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 61 |     pub id: Uuid,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 62 |     pub client_addr: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 63 |     pub connected_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 65 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyConnection` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_connections` and `avg_latency` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct ProxyMetrics {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 70 |     pub total_connections: Arc<Mutex<u64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub avg_latency: Arc<Mutex<Vec<u64>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/manager.rs:134:18
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl ProxyManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn get_connection(&self, client_ip: &str) -> Result<ProxyConnection> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     async fn select_best_proxy(&self) -> Result<ProxyInstance> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn health_check(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     async fn check_proxy_health(&self, proxy: &ProxyInstance) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub async fn remove_proxy(&self, id: Uuid) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn regenerate_proxy(&self, old_id: Uuid) -> Result<Uuid> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     async fn notify_clients(&self, proxy_id: Uuid) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_background_tasks` and `auto_scale` are never used
[INFO] [stdout]    --> src/proxy/manager.rs:362:18
[INFO] [stdout]     |
[INFO] [stdout] 361 | impl ProxyManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 362 |     pub async fn start_background_tasks(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     async fn auto_scale(&self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> src/proxy/protocol.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl ProtocolType {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_str(s: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrafficCounter` is never constructed
[INFO] [stdout]   --> src/proxy/protocol.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct TrafficCounter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_in`, `add_out`, `total`, and `avg_rate` are never used
[INFO] [stdout]   --> src/proxy/protocol.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl TrafficCounter {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 57 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn add_in(&mut self, n: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn add_out(&mut self, n: u64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn total(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn avg_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user_id`, `protocol`, `limits`, `used_bytes`, `active_connections`, and `last_reset` are never read
[INFO] [stdout]    --> src/proxy/protocol.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct UserTrafficState {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 111 |     pub user_id: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 112 |     pub protocol: ProtocolType,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 113 |     pub limits: TrafficLimits,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 114 |     pub used_bytes: u64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 115 |     pub active_connections: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 116 |     pub last_reset: Instant,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `UserTrafficState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `can_connect`, `quota_exceeded`, `remaining_bytes`, and `usage_ratio` are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl UserTrafficState {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 120 |     pub fn new(user_id: String, protocol: ProtocolType, limits: TrafficLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn can_connect(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn quota_exceeded(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn remaining_bytes(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn usage_ratio(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `states` and `total_bytes` are never read
[INFO] [stdout]    --> src/proxy/protocol.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub struct TrafficMeter {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 172 |     states: Arc<RwLock<dashmap::DashMap<(String, ProtocolType), UserTrafficState>>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 173 |     total_bytes: Arc<RwLock<u64>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TrafficMeter` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:184:18
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl TrafficMeter {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn register_user(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub async fn get_state(&self, user_id: &str, protocol: ProtocolType) -> Option<UserTrafficState> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub async fn can_connect(&self, user_id: &str, protocol: ProtocolType) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub async fn record_traffic(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub async fn connection_opened(&self, user_id: &str, protocol: ProtocolType) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub async fn connection_closed(&self, user_id: &str, protocol: ProtocolType) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub async fn total_bytes(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub async fn get_all_states(&self) -> Vec<UserTrafficState> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionInfo` is never constructed
[INFO] [stdout]    --> src/proxy/protocol.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct ConnectionInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionResult` is never constructed
[INFO] [stdout]    --> src/proxy/protocol.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct ConnectionResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_tcp`, `handle_udp`, `supports_udp`, and `supports_decoy` are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:273:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub trait ProtocolHandler: Send + Sync {
[INFO] [stdout]     |           --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 273 |     async fn handle_tcp(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     async fn handle_udp(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     fn supports_udp(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn supports_decoy(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]    --> src/proxy/protocol.rs:316:18
[INFO] [stdout]     |
[INFO] [stdout] 302 | impl ProtocolRegistry {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub async fn get(&self, protocol: ProtocolType) -> Result<Arc<dyn ProtocolHandler>> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `proxy_tcp_with_metering` is never used
[INFO] [stdout]    --> src/proxy/protocol.rs:334:14
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub async fn proxy_tcp_with_metering(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/hysteria2.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Hysteria2User {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 17 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 18 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 19 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Hysteria2User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/hysteria2.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Hysteria2Handler {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 23 |     users: Arc<Vec<Hysteria2User>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     decoy_users: Arc<Vec<Hysteria2User>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/hysteria2.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Hysteria2Handler {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn add_user(&self, user: Hysteria2User) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<Hysteria2User> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SS_VERSION` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const SS_VERSION: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV4` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const ATYP_IPV4: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_DOMAIN` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const ATYP_DOMAIN: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV6` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const ATYP_IPV6: u8 = 0x04;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, `method`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ShadowsocksUser {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 22 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 23 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 24 |     pub method: CipherMethod,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShadowsocksUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Aes256Gcm` and `ChaCha20Poly1305` are never constructed
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum CipherMethod {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 30 |     Aes256Gcm,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 31 |     ChaCha20Poly1305,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CipherMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `key_len` and `nonce_len` are never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl CipherMethod {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 35 |     pub fn key_len(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn nonce_len(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct ShadowsocksHandler {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 51 |     users: Arc<Vec<ShadowsocksUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 52 |     decoy_users: Arc<Vec<ShadowsocksUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 53 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/shadowsocks.rs:65:18
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl ShadowsocksHandler {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub async fn add_user(&self, user: ShadowsocksUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<ShadowsocksUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/trojan.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TrojanUser {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 17 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 18 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 19 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrojanUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/trojan.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct TrojanHandler {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 23 |     users: Arc<Vec<TrojanUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     decoy_users: Arc<Vec<TrojanUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/trojan.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl TrojanHandler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn add_user(&self, user: TrojanUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<TrojanUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VLESS_VERSION` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const VLESS_VERSION: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VLESS_VERSION_TEST` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const VLESS_VERSION_TEST: u8 = 0x00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CMD_TCP_CONNECT` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const CMD_TCP_CONNECT: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CMD_UDP_CONNECT` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const CMD_UDP_CONNECT: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV4` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ATYP_IPV4: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_DOMAIN` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ATYP_DOMAIN: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV6` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ATYP_IPV6: u8 = 0x03;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PACKET_SIZE` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const MAX_PACKET_SIZE: usize = 8192;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VlessRequest` is never constructed
[INFO] [stdout]   --> src/proxy/vless.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct VlessRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VlessResponse` is never constructed
[INFO] [stdout]   --> src/proxy/vless.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct VlessResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `error` and `success` are never used
[INFO] [stdout]   --> src/proxy/vless.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl VlessResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 49 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn success(version: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Address` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum Address {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_bytes` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Address {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 74 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users` and `decoy_users` are never read
[INFO] [stdout]    --> src/proxy/vless.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct VlessUserPool {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 109 |     users: Arc<RwLock<Vec<VlessUser>>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 110 |     decoy_users: Arc<RwLock<Vec<VlessUser>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VlessUserPool` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `connection_semaphore`, `max_connections`, `timeout`, `decoy_ratio`, and `meter` are never read
[INFO] [stdout]    --> src/proxy/vless.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct VlessHandler {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 114 |     users: Arc<VlessUserPool>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 115 |     connection_semaphore: Arc<Semaphore>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 116 |     max_connections: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     timeout: Duration,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 118 |     decoy_ratio: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 119 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/vless.rs:134:18
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl VlessHandler {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn add_user(&self, user: VlessUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     async fn read_request(&self, stream: &mut TcpStream) -> Result<VlessRequest> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<Address> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn authenticate(&self, request: &VlessRequest) -> Result<VlessUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     async fn handle_decoy_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     async fn handle_tcp_connect(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     async fn handle_udp_connect(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     async fn proxy_traffic(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 444 |     async fn write_response(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     async fn resolve_address(&self, address: &Address, port: u16) -> Result<SocketAddr> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_real_user` and `add_decoy_user` are never used
[INFO] [stdout]    --> src/proxy/vless.rs:488:18
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl VlessUserPool {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub async fn add_real_user(&self, uuid: Uuid, name: &str, flow: Option<String>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     pub async fn add_decoy_user(&self, uuid: Uuid, name: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `public_key`, `private_key`, `allowed_ips`, `endpoint`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/wireguard.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct WireGuardUser {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 20 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |     pub public_key: Bytes,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 22 |     pub private_key: Bytes,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 23 |     pub allowed_ips: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 24 |     pub endpoint: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 25 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WireGuardUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/wireguard.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct WireGuardHandler {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 29 |     users: Arc<Vec<WireGuardUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     decoy_users: Arc<Vec<WireGuardUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 31 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `decrypt_packet`, and `handle_connection` are never used
[INFO] [stdout]   --> src/proxy/wireguard.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl WireGuardHandler {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub async fn add_user(&self, user: WireGuardUser) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn authenticate(&self, public_key: &Bytes) -> Option<WireGuardUser> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn decrypt_packet(&self, packet: &[u8], private_key: &Bytes) -> Result<Vec<u8>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn handle_connection(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_activity` is never read
[INFO] [stdout]   --> src/relocation/auto.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct RelocatableNode {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub last_activity: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocatableNode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dead` is never constructed
[INFO] [stdout]   --> src/relocation/auto.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum RelocationStatus {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 43 |     Dead,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `old_location` and `reason` are never read
[INFO] [stdout]   --> src/relocation/auto.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct RelocationEvent {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 58 |     pub node_id: Uuid,
[INFO] [stdout] 59 |     pub old_location: Location,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub new_location: Location,
[INFO] [stdout] 61 |     pub reason: RelocationReason,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationEvent` 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: variants `Performance`, `Rotation`, and `Overload` are never constructed
[INFO] [stdout]   --> src/relocation/auto.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum RelocationReason {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 68 |     KillDetected,
[INFO] [stdout] 69 |     Performance,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 70 |     Manual,
[INFO] [stdout] 71 |     Rotation,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 72 |     Overload,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationReason` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kill_threshold`, `relocation_cooldown`, and `max_attempts` are never read
[INFO] [stdout]   --> src/relocation/auto.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct RelocationConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub kill_threshold: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub relocation_cooldown: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub max_attempts: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_node` and `start_watcher` are never used
[INFO] [stdout]    --> src/relocation/auto.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RelocationManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn add_node(&self, node: Node) -> Result<Uuid> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub async fn start_watcher(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `init_metrics`, `record_relocation`, `update_active_nodes`, `update_pending_relocations`, and `record_kill` are never used
[INFO] [stdout]    --> src/relocation/auto.rs:436:12
[INFO] [stdout]     |
[INFO] [stdout] 426 | impl RelocationMetrics {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 436 |     pub fn init_metrics() -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn record_relocation(&self, duration_ms: u64, successful: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn update_active_nodes(&self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub fn update_pending_relocations(&self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn record_kill(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `limits` and `max_requests_per_minute` are never read
[INFO] [stdout]  --> src/security/rate_limiter.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RateLimiter {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 7 |     limits: Mutex<HashMap<String, (u32, Instant)>>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 8 |     max_requests_per_minute: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_limit` is never used
[INFO] [stdout]   --> src/security/rate_limiter.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl RateLimiter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn check_limit(&self, ip: &str) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/monitoring/dashboard.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct MetricsCollector {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout]  9 |     connections: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     active_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 11 |     killed_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 12 |     total_requests: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     avg_latency: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 14 |     bytes_sent: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 15 |     bytes_received: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     request_window: Arc<Mutex<SlidingWindow>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     real_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 18 |     decoy_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MetricsCollector` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/monitoring/dashboard.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MetricsCollector {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn increment_connections(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn decrement_connections(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_connections(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn increment_requests(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn calculate_rps(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn record_latency(&self, latency_us: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn record_traffic(&self, sent: u64, received: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn update_nodes(&self, real: usize, decoy: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `window` and `duration` are never read
[INFO] [stdout]   --> src/monitoring/dashboard.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct SlidingWindow {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 79 |     window: VecDeque<(Instant, u64)>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 80 |     duration: Duration,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `total`, and `cleanup` are never used
[INFO] [stdout]    --> src/monitoring/dashboard.rs:88:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl SlidingWindow {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn add(&mut self, count: u64) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     fn total(&mut self) -> u64 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn cleanup(&mut self, now: Instant) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subscribe`, `notify_proxy_update`, and `notify_relocation` are never used
[INFO] [stdout]   --> src/notifications/web_socket.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl WebSocketNotifier {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn subscribe(&self) -> (broadcast::Receiver<String>, Uuid) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn notify_proxy_update(&self, proxy_id: Uuid) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn notify_relocation(&self, node_id: Uuid, new_location: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_addr`
[INFO] [stdout]    --> src/proxy/shadowsocks.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let target_addr: SocketAddr = format!("{}:{}", target_host, target_port)
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_addr`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_host`
[INFO] [stdout]    --> src/proxy/trojan.rs:150:14
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let (target_host, target_port) = self.read_address(&mut stream).await?;
[INFO] [stdout]     |              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_host`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_port`
[INFO] [stdout]    --> src/proxy/trojan.rs:150:27
[INFO] [stdout]     |
[INFO] [stdout] 150 |         let (target_host, target_port) = self.read_address(&mut stream).await?;
[INFO] [stdout]     |                           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_port`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `health_handler` is never used
[INFO] [stdout]   --> src/api/handlers.rs:18:14
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub async fn health_handler() -> &'static str {
[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 `NodeResponse` is never constructed
[INFO] [stdout]  --> src/api/models.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct NodeResponse {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelocateRequest` is never constructed
[INFO] [stdout]   --> src/api/models.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct RelocateRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RelocateResponse` is never constructed
[INFO] [stdout]   --> src/api/models.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct RelocateResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemStatus` is never constructed
[INFO] [stdout]   --> src/api/models.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct SystemStatus {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `real_count` and `decoy_multiplier` are never read
[INFO] [stdout]  --> src/node/generator.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct NodeGenerator {
[INFO] [stdout]   |            ------------- fields in this struct
[INFO] [stdout] 6 |     real_count: u32,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 7 |     decoy_multiplier: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kill_threshold` is never read
[INFO] [stdout]  --> src/node/watcher.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct NodeWatcher {
[INFO] [stdout]   |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     kill_threshold: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Action` is never used
[INFO] [stdout]  --> src/node/scaler.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Action {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodeScaler` is never constructed
[INFO] [stdout]  --> src/node/scaler.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct NodeScaler {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_required_nodes` and `auto_scale` are never used
[INFO] [stdout]   --> src/node/scaler.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl NodeScaler {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 14 |     pub fn calculate_required_nodes(&self, total_connections: u32) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn auto_scale(&self, current_connections: u32, current_nodes: u32) -> Vec<Action> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `DbResult` is never used
[INFO] [stdout]  --> src/db/repository.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub type DbResult<T> = Result<T, Box<dyn std::error::Error + Send + Sync>>;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Database` is never constructed
[INFO] [stdout]   --> src/db/repository.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Database {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/db/repository.rs:16:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Database {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  16 |     pub async fn new(db_url: &str) -> DbResult<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn save_node(&self, node: &Node) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub async fn get_all_nodes(&self) -> DbResult<Vec<Node>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub async fn get_node(&self, id: Uuid) -> DbResult<Option<Node>> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub async fn update_node_status(&self, id: Uuid, status: &str) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub async fn increment_kill_count(&self, id: Uuid) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub async fn delete_node(&self, id: Uuid) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn log_kill_event(&self, event: &KillEvent) -> DbResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub async fn get_stats(&self) -> DbResult<serde_json::Value> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_to_node` is never used
[INFO] [stdout]    --> src/db/repository.rs:184:4
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn row_to_node(row: &SqliteRow) -> Node {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PoolError` is never used
[INFO] [stdout]  --> src/connection/pool.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum PoolError {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PooledConnection` is never constructed
[INFO] [stdout]   --> src/connection/pool.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct PooledConnection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `release` are never used
[INFO] [stdout]   --> src/connection/pool.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl PooledConnection {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(node: String, permit: OwnedSemaphorePermit, active_connections: Arc<AtomicUsize>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn release(self) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `max_connections`, `semaphore`, `active_connections`, and `is_closed` are never read
[INFO] [stdout]   --> src/connection/pool.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct ConnectionPool {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 53 |     max_connections: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 54 |     semaphore: Arc<Semaphore>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 55 |     active_connections: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     is_closed: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `acquire`, `close`, `active_connections`, `available_connections`, `is_closed`, and `max_connections` are never used
[INFO] [stdout]    --> src/connection/pool.rs:69:18
[INFO] [stdout]     |
[INFO] [stdout]  59 | impl ConnectionPool {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub async fn acquire(&self) -> Result<PooledConnection, PoolError> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn close(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn active_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn available_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn is_closed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn max_connections(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemMetrics` is never constructed
[INFO] [stdout]  --> src/connection/backpressure.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct SystemMetrics {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BackpressureAction` is never used
[INFO] [stdout]   --> src/connection/backpressure.rs:12:10
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum BackpressureAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BackpressureManager` is never constructed
[INFO] [stdout]   --> src/connection/backpressure.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct BackpressureManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `check_and_apply` are never used
[INFO] [stdout]   --> src/connection/backpressure.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl BackpressureManager {
[INFO] [stdout]    | ------------------------ associated items in this implementation
[INFO] [stdout] 27 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn check_and_apply(&self, metrics: &SystemMetrics) -> BackpressureAction {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_timeout`, `keep_alive`, `tcp_nodelay`, `tcp_fastopen`, and `backlog` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ProxyConfig {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub connection_timeout: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     pub keep_alive: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 35 |     pub tcp_nodelay: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 36 |     pub tcp_fastopen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub backlog: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `node`, `started_at`, and `last_check` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ProxyInstance {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 42 |     pub id: Uuid,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 43 |     pub node: Node,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 44 |     pub status: ProxyStatus,
[INFO] [stdout] 45 |     pub started_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 46 |     pub last_check: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyInstance` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Degraded`, `Dead`, and `Draining` are never constructed
[INFO] [stdout]   --> src/proxy/manager.rs:54:5
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum ProxyStatus {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 53 |     Active,
[INFO] [stdout] 54 |     Degraded,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 55 |     Dead,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 56 |     Draining,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `client_addr`, `connected_at`, `bytes_sent`, `bytes_received`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct ProxyConnection {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 61 |     pub id: Uuid,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 62 |     pub client_addr: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 63 |     pub connected_at: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 64 |     pub bytes_sent: u64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 65 |     pub bytes_received: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 66 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyConnection` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `total_connections` and `avg_latency` are never read
[INFO] [stdout]   --> src/proxy/manager.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct ProxyMetrics {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 70 |     pub total_connections: Arc<Mutex<u64>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub avg_latency: Arc<Mutex<Vec<u64>>>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/manager.rs:134:18
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl ProxyManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn get_connection(&self, client_ip: &str) -> Result<ProxyConnection> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     async fn select_best_proxy(&self) -> Result<ProxyInstance> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn health_check(&self) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     async fn check_proxy_health(&self, proxy: &ProxyInstance) -> bool {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub async fn remove_proxy(&self, id: Uuid) -> Result<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 259 |     pub async fn regenerate_proxy(&self, old_id: Uuid) -> Result<Uuid> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     async fn notify_clients(&self, proxy_id: Uuid) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start_background_tasks` and `auto_scale` are never used
[INFO] [stdout]    --> src/proxy/manager.rs:362:18
[INFO] [stdout]     |
[INFO] [stdout] 361 | impl ProxyManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 362 |     pub async fn start_background_tasks(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     async fn auto_scale(&self) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_str` is never used
[INFO] [stdout]   --> src/proxy/protocol.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl ProtocolType {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn from_str(s: &str) -> Result<Self> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrafficCounter` is never constructed
[INFO] [stdout]   --> src/proxy/protocol.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct TrafficCounter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_in`, `add_out`, `total`, and `avg_rate` are never used
[INFO] [stdout]   --> src/proxy/protocol.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl TrafficCounter {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 57 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub fn add_in(&mut self, n: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn add_out(&mut self, n: u64) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn total(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81 |     pub fn avg_rate(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `user_id`, `protocol`, `limits`, `used_bytes`, `active_connections`, and `last_reset` are never read
[INFO] [stdout]    --> src/proxy/protocol.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct UserTrafficState {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 111 |     pub user_id: String,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] 112 |     pub protocol: ProtocolType,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 113 |     pub limits: TrafficLimits,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 114 |     pub used_bytes: u64,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 115 |     pub active_connections: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 116 |     pub last_reset: Instant,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `UserTrafficState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `can_connect`, `quota_exceeded`, `remaining_bytes`, and `usage_ratio` are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl UserTrafficState {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 120 |     pub fn new(user_id: String, protocol: ProtocolType, limits: TrafficLimits) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn can_connect(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn quota_exceeded(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn remaining_bytes(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn usage_ratio(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `states` and `total_bytes` are never read
[INFO] [stdout]    --> src/proxy/protocol.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub struct TrafficMeter {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 172 |     states: Arc<RwLock<dashmap::DashMap<(String, ProtocolType), UserTrafficState>>>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 173 |     total_bytes: Arc<RwLock<u64>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TrafficMeter` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:184:18
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl TrafficMeter {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn register_user(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub async fn get_state(&self, user_id: &str, protocol: ProtocolType) -> Option<UserTrafficState> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     pub async fn can_connect(&self, user_id: &str, protocol: ProtocolType) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub async fn record_traffic(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub async fn connection_opened(&self, user_id: &str, protocol: ProtocolType) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub async fn connection_closed(&self, user_id: &str, protocol: ProtocolType) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub async fn total_bytes(&self) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub async fn get_all_states(&self) -> Vec<UserTrafficState> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionInfo` is never constructed
[INFO] [stdout]    --> src/proxy/protocol.rs:252:12
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct ConnectionInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionResult` is never constructed
[INFO] [stdout]    --> src/proxy/protocol.rs:263:12
[INFO] [stdout]     |
[INFO] [stdout] 263 | pub struct ConnectionResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `handle_tcp`, `handle_udp`, `supports_udp`, and `supports_decoy` are never used
[INFO] [stdout]    --> src/proxy/protocol.rs:273:14
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub trait ProtocolHandler: Send + Sync {
[INFO] [stdout]     |           --------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 273 |     async fn handle_tcp(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     async fn handle_udp(
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 287 |     fn supports_udp(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn supports_decoy(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]    --> src/proxy/protocol.rs:316:18
[INFO] [stdout]     |
[INFO] [stdout] 302 | impl ProtocolRegistry {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub async fn get(&self, protocol: ProtocolType) -> Result<Arc<dyn ProtocolHandler>> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `proxy_tcp_with_metering` is never used
[INFO] [stdout]    --> src/proxy/protocol.rs:334:14
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub async fn proxy_tcp_with_metering(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/hysteria2.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Hysteria2User {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 17 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 18 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 19 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Hysteria2User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/hysteria2.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct Hysteria2Handler {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 23 |     users: Arc<Vec<Hysteria2User>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     decoy_users: Arc<Vec<Hysteria2User>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/hysteria2.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Hysteria2Handler {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn add_user(&self, user: Hysteria2User) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<Hysteria2User> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SS_VERSION` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const SS_VERSION: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV4` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const ATYP_IPV4: u8 = 0x01;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_DOMAIN` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const ATYP_DOMAIN: u8 = 0x03;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV6` is never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const ATYP_IPV6: u8 = 0x04;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, `method`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ShadowsocksUser {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 22 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 23 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 24 |     pub method: CipherMethod,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 25 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ShadowsocksUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Aes256Gcm` and `ChaCha20Poly1305` are never constructed
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum CipherMethod {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 30 |     Aes256Gcm,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 31 |     ChaCha20Poly1305,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CipherMethod` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `key_len` and `nonce_len` are never used
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl CipherMethod {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 35 |     pub fn key_len(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn nonce_len(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/shadowsocks.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct ShadowsocksHandler {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 51 |     users: Arc<Vec<ShadowsocksUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 52 |     decoy_users: Arc<Vec<ShadowsocksUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 53 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/shadowsocks.rs:65:18
[INFO] [stdout]     |
[INFO] [stdout]  56 | impl ShadowsocksHandler {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub async fn add_user(&self, user: ShadowsocksUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<ShadowsocksUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `password`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/trojan.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TrojanUser {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 17 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 18 |     pub password: Bytes,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 19 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TrojanUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/trojan.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct TrojanHandler {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 23 |     users: Arc<Vec<TrojanUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 24 |     decoy_users: Arc<Vec<TrojanUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `read_address`, and `handle_connection` are never used
[INFO] [stdout]    --> src/proxy/trojan.rs:37:18
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl TrojanHandler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn add_user(&self, user: TrojanUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     fn authenticate(&self, user_id: &str, password: &Bytes) -> Option<TrojanUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<(String, u16)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VLESS_VERSION` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const VLESS_VERSION: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VLESS_VERSION_TEST` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const VLESS_VERSION_TEST: u8 = 0x00;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CMD_TCP_CONNECT` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const CMD_TCP_CONNECT: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CMD_UDP_CONNECT` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const CMD_UDP_CONNECT: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV4` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const ATYP_IPV4: u8 = 0x01;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_DOMAIN` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const ATYP_DOMAIN: u8 = 0x02;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ATYP_IPV6` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ATYP_IPV6: u8 = 0x03;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PACKET_SIZE` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const MAX_PACKET_SIZE: usize = 8192;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VlessRequest` is never constructed
[INFO] [stdout]   --> src/proxy/vless.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct VlessRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VlessResponse` is never constructed
[INFO] [stdout]   --> src/proxy/vless.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct VlessResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `error` and `success` are never used
[INFO] [stdout]   --> src/proxy/vless.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | impl VlessResponse {
[INFO] [stdout]    | ------------------ associated functions in this implementation
[INFO] [stdout] 49 |     pub fn error(message: &str) -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn success(version: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Address` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:67:10
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum Address {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_bytes` is never used
[INFO] [stdout]   --> src/proxy/vless.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl Address {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] 74 |     pub fn to_bytes(&self) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users` and `decoy_users` are never read
[INFO] [stdout]    --> src/proxy/vless.rs:109:5
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub struct VlessUserPool {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 109 |     users: Arc<RwLock<Vec<VlessUser>>>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 110 |     decoy_users: Arc<RwLock<Vec<VlessUser>>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VlessUserPool` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `connection_semaphore`, `max_connections`, `timeout`, `decoy_ratio`, and `meter` are never read
[INFO] [stdout]    --> src/proxy/vless.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub struct VlessHandler {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 114 |     users: Arc<VlessUserPool>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 115 |     connection_semaphore: Arc<Semaphore>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 116 |     max_connections: usize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 117 |     timeout: Duration,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 118 |     decoy_ratio: f32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 119 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/proxy/vless.rs:134:18
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl VlessHandler {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn add_user(&self, user: VlessUser) {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn handle_connection(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     async fn read_request(&self, stream: &mut TcpStream) -> Result<VlessRequest> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     async fn read_address(&self, stream: &mut TcpStream) -> Result<Address> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn authenticate(&self, request: &VlessRequest) -> Result<VlessUser> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     async fn handle_decoy_connection(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     async fn handle_tcp_connect(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 346 |     async fn handle_udp_connect(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 421 |     async fn proxy_traffic(
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 444 |     async fn write_response(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     async fn resolve_address(&self, address: &Address, port: u16) -> Result<SocketAddr> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_real_user` and `add_decoy_user` are never used
[INFO] [stdout]    --> src/proxy/vless.rs:488:18
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl VlessUserPool {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub async fn add_real_user(&self, uuid: Uuid, name: &str, flow: Option<String>) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 498 |     pub async fn add_decoy_user(&self, uuid: Uuid, name: &str) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `public_key`, `private_key`, `allowed_ips`, `endpoint`, and `is_decoy` are never read
[INFO] [stdout]   --> src/proxy/wireguard.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct WireGuardUser {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 20 |     pub id: String,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |     pub public_key: Bytes,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 22 |     pub private_key: Bytes,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 23 |     pub allowed_ips: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 24 |     pub endpoint: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 25 |     pub is_decoy: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WireGuardUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `users`, `decoy_users`, and `meter` are never read
[INFO] [stdout]   --> src/proxy/wireguard.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct WireGuardHandler {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 29 |     users: Arc<Vec<WireGuardUser>>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 30 |     decoy_users: Arc<Vec<WireGuardUser>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 31 |     meter: Arc<TrafficMeter>,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_user`, `authenticate`, `decrypt_packet`, and `handle_connection` are never used
[INFO] [stdout]   --> src/proxy/wireguard.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl WireGuardHandler {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub async fn add_user(&self, user: WireGuardUser) {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     fn authenticate(&self, public_key: &Bytes) -> Option<WireGuardUser> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn decrypt_packet(&self, packet: &[u8], private_key: &Bytes) -> Result<Vec<u8>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub async fn handle_connection(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_activity` is never read
[INFO] [stdout]   --> src/relocation/auto.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct RelocatableNode {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub last_activity: Instant,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocatableNode` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dead` is never constructed
[INFO] [stdout]   --> src/relocation/auto.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum RelocationStatus {
[INFO] [stdout]    |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 43 |     Dead,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `old_location` and `reason` are never read
[INFO] [stdout]   --> src/relocation/auto.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct RelocationEvent {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 58 |     pub node_id: Uuid,
[INFO] [stdout] 59 |     pub old_location: Location,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 60 |     pub new_location: Location,
[INFO] [stdout] 61 |     pub reason: RelocationReason,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationEvent` 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: variants `Performance`, `Rotation`, and `Overload` are never constructed
[INFO] [stdout]   --> src/relocation/auto.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub enum RelocationReason {
[INFO] [stdout]    |          ---------------- variants in this enum
[INFO] [stdout] 68 |     KillDetected,
[INFO] [stdout] 69 |     Performance,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 70 |     Manual,
[INFO] [stdout] 71 |     Rotation,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 72 |     Overload,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationReason` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kill_threshold`, `relocation_cooldown`, and `max_attempts` are never read
[INFO] [stdout]   --> src/relocation/auto.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct RelocationConfig {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub kill_threshold: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 80 |     pub relocation_cooldown: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 81 |     pub max_attempts: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RelocationConfig` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_node` and `start_watcher` are never used
[INFO] [stdout]    --> src/relocation/auto.rs:105:18
[INFO] [stdout]     |
[INFO] [stdout]  94 | impl RelocationManager {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub async fn add_node(&self, node: Node) -> Result<Uuid> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub async fn start_watcher(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `init_metrics`, `record_relocation`, `update_active_nodes`, `update_pending_relocations`, and `record_kill` are never used
[INFO] [stdout]    --> src/relocation/auto.rs:436:12
[INFO] [stdout]     |
[INFO] [stdout] 426 | impl RelocationMetrics {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 436 |     pub fn init_metrics() -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn record_relocation(&self, duration_ms: u64, successful: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 463 |     pub fn update_active_nodes(&self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 467 |     pub fn update_pending_relocations(&self, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn record_kill(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `limits` and `max_requests_per_minute` are never read
[INFO] [stdout]  --> src/security/rate_limiter.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RateLimiter {
[INFO] [stdout]   |            ----------- fields in this struct
[INFO] [stdout] 7 |     limits: Mutex<HashMap<String, (u32, Instant)>>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 8 |     max_requests_per_minute: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `check_limit` is never used
[INFO] [stdout]   --> src/security/rate_limiter.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl RateLimiter {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub async fn check_limit(&self, ip: &str) -> Result<()> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/monitoring/dashboard.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct MetricsCollector {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout]  9 |     connections: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     active_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 11 |     killed_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 12 |     total_requests: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     avg_latency: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 14 |     bytes_sent: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 15 |     bytes_received: Arc<AtomicU64>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     request_window: Arc<Mutex<SlidingWindow>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     real_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 18 |     decoy_nodes: Arc<AtomicUsize>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MetricsCollector` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/monitoring/dashboard.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl MetricsCollector {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn increment_connections(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn decrement_connections(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn get_connections(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn increment_requests(&self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn calculate_rps(&self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn record_latency(&self, latency_us: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn record_traffic(&self, sent: u64, received: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn update_nodes(&self, real: usize, decoy: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `window` and `duration` are never read
[INFO] [stdout]   --> src/monitoring/dashboard.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | struct SlidingWindow {
[INFO] [stdout]    |        ------------- fields in this struct
[INFO] [stdout] 79 |     window: VecDeque<(Instant, u64)>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 80 |     duration: Duration,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `total`, and `cleanup` are never used
[INFO] [stdout]    --> src/monitoring/dashboard.rs:88:8
[INFO] [stdout]     |
[INFO] [stdout]  83 | impl SlidingWindow {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn add(&mut self, count: u64) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     fn total(&mut self) -> u64 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn cleanup(&mut self, now: Instant) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `subscribe`, `notify_proxy_update`, and `notify_relocation` are never used
[INFO] [stdout]   --> src/notifications/web_socket.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl WebSocketNotifier {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn subscribe(&self) -> (broadcast::Receiver<String>, Uuid) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn notify_proxy_update(&self, proxy_id: Uuid) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn notify_relocation(&self, node_id: Uuid, new_location: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `arc-swap`
[INFO] [stderr]   --> Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | arc-swap = "1"
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `arc-swap`
[INFO] [stderr] warning: unused dependency `argon2`
[INFO] [stderr]   --> Cargo.toml:13:1
[INFO] [stderr]    |
[INFO] [stderr] 13 | argon2 = "0.5"
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `argon2`
[INFO] [stderr] warning: unused dependency `bcrypt`
[INFO] [stderr]   --> Cargo.toml:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | bcrypt = "0.15"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `bcrypt`
[INFO] [stderr] warning: unused dependency `config`
[INFO] [stderr]   --> Cargo.toml:62:15
[INFO] [stderr]    |
[INFO] [stderr] 62 | [dependencies.config]
[INFO] [stderr]    |               ^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `config`
[INFO] [stderr] warning: unused dependency `dotenv`
[INFO] [stderr]   --> Cargo.toml:22:1
[INFO] [stderr]    |
[INFO] [stderr] 22 | dotenv = "0.15"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `dotenv`
[INFO] [stderr] warning: unused dependency `hmac`
[INFO] [stderr]   --> Cargo.toml:26:1
[INFO] [stderr]    |
[INFO] [stderr] 26 | hmac = "0.12"
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `hmac`
[INFO] [stderr] warning: unused dependency `lz4`
[INFO] [stderr]   --> Cargo.toml:32:1
[INFO] [stderr]    |
[INFO] [stderr] 32 | lz4 = "1"
[INFO] [stderr]    | ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `lz4`
[INFO] [stderr] warning: unused dependency `moka`
[INFO] [stderr]   --> Cargo.toml:78:15
[INFO] [stderr]    |
[INFO] [stderr] 78 | [dependencies.moka]
[INFO] [stderr]    |               ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `moka`
[INFO] [stderr] warning: unused dependency `nix`
[INFO] [stderr]   --> Cargo.toml:82:15
[INFO] [stderr]    |
[INFO] [stderr] 82 | [dependencies.nix]
[INFO] [stderr]    |               ^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `nix`
[INFO] [stderr] warning: unused dependency `parking_lot`
[INFO] [stderr]   --> Cargo.toml:38:1
[INFO] [stderr]    |
[INFO] [stderr] 38 | parking_lot = "0.11"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `parking_lot`
[INFO] [stderr] warning: unused dependency `prometheus`
[INFO] [stderr]   --> Cargo.toml:86:15
[INFO] [stderr]    |
[INFO] [stderr] 86 | [dependencies.prometheus]
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `prometheus`
[INFO] [stderr] warning: unused dependency `regex`
[INFO] [stderr]   --> Cargo.toml:39:1
[INFO] [stderr]    |
[INFO] [stderr] 39 | regex = "1"
[INFO] [stderr]    | ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `regex`
[INFO] [stderr] warning: unused dependency `rustls`
[INFO] [stderr]   --> Cargo.toml:40:1
[INFO] [stderr]    |
[INFO] [stderr] 40 | rustls = "0.22"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rustls`
[INFO] [stderr] warning: unused dependency `tokio-tungstenite`
[INFO] [stderr]    --> Cargo.toml:110:15
[INFO] [stderr]     |
[INFO] [stderr] 110 | [dependencies.tokio-tungstenite]
[INFO] [stderr]     |               ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider removing the dependency on `tokio-tungstenite`
[INFO] [stderr] warning: unused dependency `tower`
[INFO] [stderr]   --> Cargo.toml:46:1
[INFO] [stderr]    |
[INFO] [stderr] 46 | tower = "0.4"
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tower`
[INFO] [stderr] warning: unused dependency `tower-http`
[INFO] [stderr]    --> Cargo.toml:118:15
[INFO] [stderr]     |
[INFO] [stderr] 118 | [dependencies.tower-http]
[INFO] [stderr]     |               ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider removing the dependency on `tower-http`
[INFO] [stderr] warning: unused dependency `tracing-appender`
[INFO] [stderr]   --> Cargo.toml:48:1
[INFO] [stderr]    |
[INFO] [stderr] 48 | tracing-appender = "0.2"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tracing-appender`
[INFO] [stderr] warning: unused dependency `tracing-opentelemetry`
[INFO] [stderr]   --> Cargo.toml:49:1
[INFO] [stderr]    |
[INFO] [stderr] 49 | tracing-opentelemetry = "0.22"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tracing-opentelemetry`
[INFO] [stderr] warning: unused dependency `webpki`
[INFO] [stderr]   --> Cargo.toml:50:1
[INFO] [stderr]    |
[INFO] [stderr] 50 | webpki = "0.22"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `webpki`
[INFO] [stderr] warning: unused dependency `x25519-dalek`
[INFO] [stderr]    --> Cargo.toml:130:15
[INFO] [stderr]     |
[INFO] [stderr] 130 | [dependencies.x25519-dalek]
[INFO] [stderr]     |               ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: consider removing the dependency on `x25519-dalek`
[INFO] [stderr] warning: unused dependency `yaml-rust`
[INFO] [stderr]   --> Cargo.toml:51:1
[INFO] [stderr]    |
[INFO] [stderr] 51 | yaml-rust = "0.4"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `yaml-rust`
[INFO] [stderr] warning: `hydravpn` (manifest) generated 21 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 23s
[INFO] running `Command { std: "docker" "inspect" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45", kill_on_drop: false }`
[INFO] [stdout] 67a91ff10dab9965d57c1f43073c5c67bd3f78bd94acebd76cdf25f93b407f45
