[INFO] cloning repository https://github.com/Jernans/katsu-tunnel
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Jernans/katsu-tunnel" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJernans%2Fkatsu-tunnel", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJernans%2Fkatsu-tunnel'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 970de8793733a484bd81e4f8fabb5203734afbc1
[INFO] checking Jernans/katsu-tunnel against f4dd856795debe636f2ba39a900f162f5abeb7e8 for pr-160904
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJernans%2Fkatsu-tunnel" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Jernans/katsu-tunnel
[INFO] finished tweaking git repo https://github.com/Jernans/katsu-tunnel
[INFO] tweaked toml for git repo https://github.com/Jernans/katsu-tunnel written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Jernans/katsu-tunnel on toolchain f4dd856795debe636f2ba39a900f162f5abeb7e8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Jernans/katsu-tunnel 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" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352
[INFO] running `Command { std: "docker" "start" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352", 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" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352", 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" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352" "/opt/rustwide/cargo-home/bin/cargo" "+f4dd856795debe636f2ba39a900f162f5abeb7e8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling zerocopy v0.8.48
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking rustls-pki-types v1.14.1
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling typenum v1.20.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling libsqlite3-sys v0.27.0
[INFO] [stderr]    Compiling crypto-common v0.1.7
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[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 zerotrie v0.2.4
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling crc-catalog v2.5.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling pest v2.8.6
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling crc v3.4.0
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling uuid v1.23.1
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling time-macros v0.2.27
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking deranged v0.5.8
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]    Compiling tokio-stream v0.1.18
[INFO] [stderr]    Compiling futures-executor v0.3.32
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking webpki-roots v1.0.7
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling fastrand v2.4.1
[INFO] [stderr]    Compiling urlencoding v2.1.3
[INFO] [stderr]    Compiling tempfile v3.27.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking time v0.3.47
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]    Compiling sqlx-sqlite v0.7.4
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking compression-core v0.4.32
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking compression-codecs v0.4.38
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking multer v3.1.0
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]    Compiling pin-project-internal v1.1.13
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking headers-core v0.3.0
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking unicase v2.9.0
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking pin-project v1.1.13
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking headers v0.4.1
[INFO] [stderr]     Checking simple_asn1 v0.6.4
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking async-compression v0.4.42
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tungstenite v0.21.0
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking pem v3.0.6
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking pathdiff v0.2.3
[INFO] [stderr]     Checking symlink v0.1.0
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking tracing-appender v0.2.5
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking tokio-tungstenite v0.21.0
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking bcrypt v0.15.1
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking axum-extra v0.9.6
[INFO] [stderr]     Checking katsu-tunnel v1.0.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `StatusCode`
[INFO] [stdout]  --> src/api/auth.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 |     http::{header, StatusCode},
[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 imports: `patch` and `put`
[INFO] [stdout]   --> src/api/mod.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 |     routing::{delete, get, patch, post, put},
[INFO] [stdout]    |                            ^^^^^        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Utc`
[INFO] [stdout]  --> src/db/models.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::Row`
[INFO] [stdout]  --> src/db/queries.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sqlx::Row;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tracker::SessionTracker`
[INFO] [stdout]  --> src/manager/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::tracker::SessionTracker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Value` and `json`
[INFO] [stdout]  --> src/protocols/noobzvpn.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::{json, Value};
[INFO] [stdout]   |                  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionTracker`
[INFO] [stdout]   --> src/protocols/noobzvpn.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::tracker::{SessionEntry, SessionTracker};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]  --> src/protocols/shadowsocks.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::{json, Value};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/protocols/shadowsocks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/protocols/udpzivpn.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/protocols/xray.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `xray::XrayManager`
[INFO] [stdout]   --> src/protocols/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use xray::XrayManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/telegram/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusCode`
[INFO] [stdout]  --> src/api/auth.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 |     http::{header, StatusCode},
[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 imports: `patch` and `put`
[INFO] [stdout]   --> src/api/mod.rs:13:28
[INFO] [stdout]    |
[INFO] [stdout] 13 |     routing::{delete, get, patch, post, put},
[INFO] [stdout]    |                            ^^^^^        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Utc`
[INFO] [stdout]  --> src/db/models.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Utc};
[INFO] [stdout]   |              ^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::Row`
[INFO] [stdout]  --> src/db/queries.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sqlx::Row;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tracker::SessionTracker`
[INFO] [stdout]  --> src/manager/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::tracker::SessionTracker;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Value` and `json`
[INFO] [stdout]  --> src/protocols/noobzvpn.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde_json::{json, Value};
[INFO] [stdout]   |                  ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionTracker`
[INFO] [stdout]   --> src/protocols/noobzvpn.rs:12:36
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::tracker::{SessionEntry, SessionTracker};
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Value`
[INFO] [stdout]  --> src/protocols/shadowsocks.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::{json, Value};
[INFO] [stdout]   |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> src/protocols/shadowsocks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/protocols/udpzivpn.rs:8:28
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/protocols/xray.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `xray::XrayManager`
[INFO] [stdout]   --> src/protocols/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use xray::XrayManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/telegram/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{error, info, warn};
[INFO] [stdout]   |               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/protocols/noobzvpn.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let mut backend_stream = match TcpStream::connect(&backend).await {
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/protocols/udpzivpn.rs:30:30
[INFO] [stdout]    |
[INFO] [stdout] 30 | async fn handle_udpgw_client(mut stream: tokio::net::TcpStream, peer: SocketAddr) -> Result<()> {
[INFO] [stdout]    |                              ----^^^^^^
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/protocols/noobzvpn.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     let mut backend_stream = match TcpStream::connect(&backend).await {
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/protocols/udpzivpn.rs:30:30
[INFO] [stdout]    |
[INFO] [stdout] 30 | async fn handle_udpgw_client(mut stream: tokio::net::TcpStream, peer: SocketAddr) -> Result<()> {
[INFO] [stdout]    |                              ----^^^^^^
[INFO] [stdout]    |                              |
[INFO] [stdout]    |                              help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sessions`
[INFO] [stdout]    --> src/api/accounts.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let sessions = state.tracker.sessions_for_account(acc.id);
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sessions`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `protocol`
[INFO] [stdout]   --> src/protocols/xray.rs:44:54
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub async fn remove_user(&self, transport: &str, protocol: &str, uuid: &str) -> Result<()> {
[INFO] [stdout]    |                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sessions`
[INFO] [stdout]    --> src/api/accounts.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let sessions = state.tracker.sessions_for_account(acc.id);
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sessions`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `protocol`
[INFO] [stdout]   --> src/protocols/xray.rs:44:54
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub async fn remove_user(&self, transport: &str, protocol: &str, uuid: &str) -> Result<()> {
[INFO] [stdout]    |                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_protocol`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signature` is never read
[INFO] [stdout]   --> src/api/webhooks.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct BillingCallback {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub signature: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BillingCallback` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_quota_exceeded` is never used
[INFO] [stdout]   --> src/db/models.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Account {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn is_quota_exceeded(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_session_bandwidth` is never used
[INFO] [stdout]    --> src/db/queries.rs:331:14
[INFO] [stdout]     |
[INFO] [stdout] 331 | pub async fn update_session_bandwidth(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_active_ips` is never used
[INFO] [stdout]    --> src/db/queries.rs:366:14
[INFO] [stdout]     |
[INFO] [stdout] 366 | pub async fn count_active_ips(pool: &Pool, account_id: i64) -> ApiResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `all_active_sessions` is never used
[INFO] [stdout]    --> src/db/queries.rs:436:14
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub async fn all_active_sessions(pool: &Pool) -> ApiResult<Vec<Session>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOOBZ_BANNER` is never used
[INFO] [stdout]   --> src/protocols/noobzvpn.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const NOOBZ_BANNER: &[u8] =
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsConfig` is never constructed
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct SsConfig {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsUser` is never constructed
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct SsUser {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_config` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn generate_config(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_config` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub async fn write_config(config: &AppConfig, content: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reload` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:58:14
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub async fn reload() -> Result<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_user` is never used
[INFO] [stdout]  --> src/protocols/ssh.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub async fn create_user(username: &str, password: &str, expire_days: i64) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn delete_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_user_expiry` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn set_user_expiry(username: &str, expire_date: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lock_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:62:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub async fn lock_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unlock_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:70:14
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub async fn unlock_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_logged_in` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn list_logged_in(username: &str) -> Result<Vec<String>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kill_user_sessions` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:98:14
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub async fn kill_user_sessions(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `xray_bin` is never read
[INFO] [stdout]   --> src/protocols/xray.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct XrayManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 15 |     config_dir: String,
[INFO] [stdout] 16 |     xray_bin: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XrayManager` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_ws_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn generate_xray_ws_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_grpc_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:184:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub fn generate_xray_grpc_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_upgrade_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn generate_xray_upgrade_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_xhttp_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn generate_xray_xhttp_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_vmess_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn build_vmess_inbound(tag: &str, port: u16, network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_vless_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:232:4
[INFO] [stdout]     |
[INFO] [stdout] 232 | fn build_vless_inbound(tag: &str, port: u16, network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trojan_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:246:4
[INFO] [stdout]     |
[INFO] [stdout] 246 | fn build_trojan_inbound(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_stream` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn build_stream(network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils/format.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn format_duration(secs: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `signature` is never read
[INFO] [stdout]   --> src/api/webhooks.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct BillingCallback {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub signature: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BillingCallback` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_quota_exceeded` is never used
[INFO] [stdout]   --> src/db/models.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl Account {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn is_quota_exceeded(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `update_session_bandwidth` is never used
[INFO] [stdout]    --> src/db/queries.rs:331:14
[INFO] [stdout]     |
[INFO] [stdout] 331 | pub async fn update_session_bandwidth(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_active_ips` is never used
[INFO] [stdout]    --> src/db/queries.rs:366:14
[INFO] [stdout]     |
[INFO] [stdout] 366 | pub async fn count_active_ips(pool: &Pool, account_id: i64) -> ApiResult<i64> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `all_active_sessions` is never used
[INFO] [stdout]    --> src/db/queries.rs:436:14
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub async fn all_active_sessions(pool: &Pool) -> ApiResult<Vec<Session>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NOOBZ_BANNER` is never used
[INFO] [stdout]   --> src/protocols/noobzvpn.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const NOOBZ_BANNER: &[u8] =
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsConfig` is never constructed
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct SsConfig {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SsUser` is never constructed
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct SsUser {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_config` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:30:14
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub async fn generate_config(
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_config` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:51:14
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub async fn write_config(config: &AppConfig, content: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reload` is never used
[INFO] [stdout]   --> src/protocols/shadowsocks.rs:58:14
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub async fn reload() -> Result<()> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_user` is never used
[INFO] [stdout]  --> src/protocols/ssh.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub async fn create_user(username: &str, password: &str, expire_days: i64) -> Result<()> {
[INFO] [stdout]   |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:40:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub async fn delete_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_user_expiry` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:54:14
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub async fn set_user_expiry(username: &str, expire_date: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lock_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:62:14
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub async fn lock_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unlock_user` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:70:14
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub async fn unlock_user(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_logged_in` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:78:14
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub async fn list_logged_in(username: &str) -> Result<Vec<String>> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kill_user_sessions` is never used
[INFO] [stdout]   --> src/protocols/ssh.rs:98:14
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub async fn kill_user_sessions(username: &str) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `xray_bin` is never read
[INFO] [stdout]   --> src/protocols/xray.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct XrayManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 15 |     config_dir: String,
[INFO] [stdout] 16 |     xray_bin: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `XrayManager` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_ws_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn generate_xray_ws_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_grpc_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:184:8
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub fn generate_xray_grpc_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_upgrade_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:196:8
[INFO] [stdout]     |
[INFO] [stdout] 196 | pub fn generate_xray_upgrade_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_xray_xhttp_config` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn generate_xray_xhttp_config(domain: &str, port: u16) -> Value {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_vmess_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn build_vmess_inbound(tag: &str, port: u16, network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_vless_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:232:4
[INFO] [stdout]     |
[INFO] [stdout] 232 | fn build_vless_inbound(tag: &str, port: u16, network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_trojan_inbound` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:246:4
[INFO] [stdout]     |
[INFO] [stdout] 246 | fn build_trojan_inbound(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_stream` is never used
[INFO] [stdout]    --> src/protocols/xray.rs:263:4
[INFO] [stdout]     |
[INFO] [stdout] 263 | fn build_stream(network: &str, path_or_svc: &str, sni: &str) -> Value {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_duration` is never used
[INFO] [stdout]   --> src/utils/format.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn format_duration(secs: i64) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `arc-swap`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | arc-swap = "1.7"
[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 `axum-extra`
[INFO] [stderr]   --> Cargo.toml:37:15
[INFO] [stderr]    |
[INFO] [stderr] 37 | [dependencies.axum-extra]
[INFO] [stderr]    |               ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `axum-extra`
[INFO] [stderr] warning: unused dependency `config`
[INFO] [stderr]   --> Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | config = "0.14"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `config`
[INFO] [stderr] warning: unused dependency `futures`
[INFO] [stderr]   --> Cargo.toml:15:1
[INFO] [stderr]    |
[INFO] [stderr] 15 | futures = "0.3"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `futures`
[INFO] [stderr] warning: unused dependency `nix`
[INFO] [stderr]   --> Cargo.toml:57:15
[INFO] [stderr]    |
[INFO] [stderr] 57 | [dependencies.nix]
[INFO] [stderr]    |               ^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `nix`
[INFO] [stderr] warning: unused dependency `regex`
[INFO] [stderr]   --> Cargo.toml:23:1
[INFO] [stderr]    |
[INFO] [stderr] 23 | regex = "1.10"
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `regex`
[INFO] [stderr] warning: unused dependency `semver`
[INFO] [stderr]   --> Cargo.toml:24:1
[INFO] [stderr]    |
[INFO] [stderr] 24 | semver = "1.0"
[INFO] [stderr]    | ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `semver`
[INFO] [stderr] warning: unused dependency `tokio-tungstenite`
[INFO] [stderr]   --> Cargo.toml:78:15
[INFO] [stderr]    |
[INFO] [stderr] 78 | [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:86:15
[INFO] [stderr]    |
[INFO] [stderr] 86 | [dependencies.tower]
[INFO] [stderr]    |               ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tower`
[INFO] [stderr] warning: unused dependency `tracing-appender`
[INFO] [stderr]   --> Cargo.toml:30:1
[INFO] [stderr]    |
[INFO] [stderr] 30 | tracing-appender = "0.2"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `tracing-appender`
[INFO] [stderr] warning: `katsu-tunnel` (manifest) generated 10 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 41s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352", kill_on_drop: false }`
[INFO] [stdout] 256c27dee78e7402f27366c23608b36a6cf1d046525ce76f1fe1f17d4e117352
