[INFO] cloning repository https://github.com/hanssamuel/zero-trust-proxy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hanssamuel/zero-trust-proxy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhanssamuel%2Fzero-trust-proxy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhanssamuel%2Fzero-trust-proxy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5af95205890e1d80e949da873778bd0c41cf05ac
[INFO] checking hanssamuel/zero-trust-proxy against try#79452e8441468c5568c20bfca2aa1fe75b645b2d for pr-152210
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhanssamuel%2Fzero-trust-proxy" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hanssamuel/zero-trust-proxy
[INFO] finished tweaking git repo https://github.com/hanssamuel/zero-trust-proxy
[INFO] tweaked toml for git repo https://github.com/hanssamuel/zero-trust-proxy written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hanssamuel/zero-trust-proxy on toolchain 79452e8441468c5568c20bfca2aa1fe75b645b2d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+79452e8441468c5568c20bfca2aa1fe75b645b2d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hanssamuel/zero-trust-proxy 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" "+79452e8441468c5568c20bfca2aa1fe75b645b2d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+79452e8441468c5568c20bfca2aa1fe75b645b2d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6b803bb08e73671a3957b2225f2badca804499e4106b7029479733c9fc1b8103
[INFO] running `Command { std: "docker" "start" "-a" "6b803bb08e73671a3957b2225f2badca804499e4106b7029479733c9fc1b8103", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6b803bb08e73671a3957b2225f2badca804499e4106b7029479733c9fc1b8103", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6b803bb08e73671a3957b2225f2badca804499e4106b7029479733c9fc1b8103", kill_on_drop: false }`
[INFO] [stdout] 6b803bb08e73671a3957b2225f2badca804499e4106b7029479733c9fc1b8103
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+79452e8441468c5568c20bfca2aa1fe75b645b2d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] df242869d21f44debf12b2d8f2f6f310fff3b0c1e5eecc96b69a993785d4a25a
[INFO] running `Command { std: "docker" "start" "-a" "df242869d21f44debf12b2d8f2f6f310fff3b0c1e5eecc96b69a993785d4a25a", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling aws-lc-sys v0.37.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling zstd-sys v2.0.16+zstd.1.5.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking uuid v1.21.0
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]    Compiling yoke v0.8.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]    Compiling zerovec v0.11.5
[INFO] [stderr]    Compiling zerotrie v0.2.3
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling iana-time-zone v0.1.65
[INFO] [stderr]     Checking alloc-no-stdlib v2.0.4
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling tinystr v0.8.2
[INFO] [stderr]    Compiling potential_utf v0.1.4
[INFO] [stderr]    Compiling zstd-safe v7.2.4
[INFO] [stderr]    Compiling chrono v0.4.43
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]     Checking alloc-stdlib v0.2.2
[INFO] [stderr]    Compiling icu_locale_core v2.1.1
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling icu_collections v2.1.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling rustls v0.23.36
[INFO] [stderr]     Checking simd-adler32 v0.3.8
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking brotli-decompressor v5.0.0
[INFO] [stderr]    Compiling pest_meta v2.8.6
[INFO] [stderr]    Compiling icu_provider v2.1.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking num-iter v0.1.45
[INFO] [stderr]    Compiling icu_properties v2.1.2
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking borrow-or-share v0.2.4
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]     Checking brotli v8.0.2
[INFO] [stderr]     Checking fluent-uri v0.3.2
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking phf_shared v0.12.1
[INFO] [stderr]    Compiling pest_generator v2.8.6
[INFO] [stderr]     Checking num v0.4.3
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]     Checking futures-intrusive v0.5.0
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking compression-core v0.4.31
[INFO] [stderr]    Compiling chrono-tz v0.10.4
[INFO] [stderr]     Checking vsimd v0.8.0
[INFO] [stderr]     Checking outref v0.5.2
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]    Compiling pest_derive v2.8.6
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]     Checking uuid-simd v0.8.0
[INFO] [stderr]     Checking const_format v0.2.35
[INFO] [stderr]    Compiling regorus v0.2.8
[INFO] [stderr]     Checking pori v0.0.0
[INFO] [stderr]     Checking referencing v0.26.2
[INFO] [stderr]     Checking fraction v0.15.3
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]     Checking phf v0.12.1
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking simple_asn1 v0.6.4
[INFO] [stderr]     Checking fancy-regex v0.14.0
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]     Checking metrics v0.23.1
[INFO] [stderr]     Checking itertools v0.11.0
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling scientific-macro v0.5.2
[INFO] [stderr]     Checking num-cmp v0.1.0
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking sketches-ddsketch v0.2.2
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking bytecount v0.6.9
[INFO] [stderr]     Checking clap_lex v1.0.0
[INFO] [stderr]     Checking metrics-util v0.17.0
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking jsonschema v0.26.2
[INFO] [stderr]     Checking clap_builder v4.5.59
[INFO] [stderr]     Checking h2 v0.4.13
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking sqlx-core v0.8.6
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking scientific v0.5.3
[INFO] [stderr]     Checking tokio-retry v0.3.0
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking arc-swap v1.8.2
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking wax v0.6.0
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking ipnetwork v0.21.1
[INFO] [stderr]     Checking data-encoding v2.10.0
[INFO] [stderr]     Checking http-range-header v0.4.2
[INFO] [stderr]     Checking base32 v0.5.1
[INFO] [stderr]     Checking semver v1.0.27
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking maxminddb v0.27.3
[INFO] [stderr]     Checking totp-rs v5.7.0
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking sqlx-postgres v0.8.6
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking clap v4.5.59
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking ipnetwork v0.20.0
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking similar v2.7.0
[INFO] [stderr]     Checking colored v3.1.1
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tempfile v3.25.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking redis v0.26.1
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking zstd v0.13.3
[INFO] [stderr]     Checking compression-codecs v0.4.36
[INFO] [stderr]     Checking async-compression v0.4.39
[INFO] [stderr]     Checking mockito v1.7.2
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.6
[INFO] [stderr]    Compiling sqlx-macros v0.8.6
[INFO] [stderr]     Checking sqlx v0.8.6
[INFO] [stderr]    Compiling aws-lc-rs v1.15.4
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking metrics-exporter-prometheus v0.15.3
[INFO] [stderr]     Checking zero-trust-proxy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: method `extract_token_from_header` is never used
[INFO] [stdout]   --> src/auth/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl JwtManager {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn extract_token_from_header(&self, auth_header: &str) -> ProxyResult<String> {
[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 `User` is never constructed
[INFO] [stdout]   --> src/auth/mod.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]    --> src/auth/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct LoginRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginResponse` is never constructed
[INFO] [stdout]    --> src/auth/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct LoginResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `update_activity` and `extend_session` are never used
[INFO] [stdout]   --> src/auth/session.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Session {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn update_activity(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn extend_session(&mut self, duration_minutes: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionManager` is never constructed
[INFO] [stdout]   --> src/auth/session.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct SessionManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/auth/session.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl SessionManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn new(redis: ConnectionManager, session_duration_minutes: i64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn create_session(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn get_session(&mut self, session_id: &str) -> ProxyResult<Session> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn update_session(&mut self, session: &Session) -> ProxyResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn delete_session(&mut self, session_id: &str) -> ProxyResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub async fn get_user_sessions(&mut self, user_id: &str) -> ProxyResult<Vec<Session>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn revoke_user_sessions(&mut self, user_id: &str) -> ProxyResult<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn cleanup_expired_sessions(&mut self) -> ProxyResult<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaConfig` is never constructed
[INFO] [stdout]  --> src/auth/mfa.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MfaConfig {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TotpManager` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TotpManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_secret`, `generate_qr_url`, `verify_token`, and `generate_current_token` are never used
[INFO] [stdout]   --> src/auth/mfa.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TotpManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(config: MfaConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn generate_secret(&self) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn generate_qr_url(&self, secret: &str, account: &str, issuer: &str) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn verify_token(&self, secret: &str, token: &str) -> ProxyResult<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn generate_current_token(&self, secret: &str) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaEnrollmentRequest` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct MfaEnrollmentRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaEnrollmentResponse` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct MfaEnrollmentResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaVerificationRequest` is never constructed
[INFO] [stdout]    --> src/auth/mfa.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct MfaVerificationRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_last_seen` is never used
[INFO] [stdout]    --> src/auth/device.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl DeviceFingerprint {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn update_last_seen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `should_require_step_up_auth` are never used
[INFO] [stdout]    --> src/auth/device.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl DeviceManager {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 129 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn should_require_step_up_auth(device: &DeviceFingerprint) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `db_pool`, and `redis_conn` are never read
[INFO] [stdout]   --> src/proxy/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ProxyServer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 18 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 19 |     db_pool: PgPool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 20 |     redis_conn: ConnectionManager,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskContext` is never constructed
[INFO] [stdout]  --> src/risk/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RiskContext {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeoLocation` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct GeoLocation {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskScore` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RiskScore {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskFactor` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct RiskFactor {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskLevel` is never used
[INFO] [stdout]   --> src/risk/mod.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum RiskLevel {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskRecommendation` is never used
[INFO] [stdout]   --> src/risk/mod.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum RiskRecommendation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskEngine` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct RiskEngine {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/risk/mod.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl RiskEngine {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn new(step_up_threshold: u32, block_threshold: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn calculate_risk(&self, context: &RiskContext) -> ProxyResult<RiskScore> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn calculate_device_risk(&self, device: &DeviceFingerprint) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn calculate_geo_risk(&self) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn calculate_failed_attempts_risk(&self, attempts: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     fn calculate_time_risk(&self, context: &RiskContext) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn calculate_ip_change_risk(&self, context: &RiskContext) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn calculate_session_age_risk(&self, age_minutes: i64) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_metadata` is never used
[INFO] [stdout]   --> src/audit/mod.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl AuditEvent {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn with_metadata(mut self, metadata: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditLogger` is never constructed
[INFO] [stdout]   --> src/audit/mod.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct AuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `log`, `log_authentication`, `log_authorization`, and `log_risk_evaluation` are never used
[INFO] [stdout]    --> src/audit/mod.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl AuditLogger {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  86 |     pub fn new(db_pool: PgPool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn log(&self, event: AuditEvent) -> Result<(), sqlx::Error> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn log_authentication(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub async fn log_authorization(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub async fn log_risk_evaluation(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ProxyError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  9 |     AuthorizationDenied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     InvalidSession(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     RiskThresholdExceeded { score: u32, threshold: u32 },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     PolicyEvaluationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     MfaRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     InvalidMfaToken,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     DeviceNotTrusted(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RateLimitExceeded,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     ConfigError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `status_code` is never used
[INFO] [stdout]   --> src/error.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl ProxyError {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 58 |     pub fn status_code(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Claims` is never constructed
[INFO] [stdout]   --> src/auth/mod.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Claims {
[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 `JwtManager` is never constructed
[INFO] [stdout]   --> src/auth/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct JwtManager {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_token`, `validate_token`, and `extract_token_from_header` are never used
[INFO] [stdout]   --> src/auth/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl JwtManager {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(secret: String, expiration_hours: i64) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn generate_token(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn validate_token(&self, token: &str) -> ProxyResult<Claims> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn extract_token_from_header(&self, auth_header: &str) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `User` is never constructed
[INFO] [stdout]   --> src/auth/mod.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub struct User {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginRequest` is never constructed
[INFO] [stdout]    --> src/auth/mod.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct LoginRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LoginResponse` is never constructed
[INFO] [stdout]    --> src/auth/mod.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct LoginResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_password` is never used
[INFO] [stdout]    --> src/auth/mod.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn hash_password(password: &str) -> ProxyResult<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify_password` is never used
[INFO] [stdout]    --> src/auth/mod.rs:139:8
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub fn verify_password(password: &str, hash: &str) -> ProxyResult<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Session` is never constructed
[INFO] [stdout]  --> src/auth/session.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Session {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_expired`, `update_activity`, and `extend_session` are never used
[INFO] [stdout]   --> src/auth/session.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Session {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 23 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_expired(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn update_activity(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn extend_session(&mut self, duration_minutes: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SessionManager` is never constructed
[INFO] [stdout]   --> src/auth/session.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct SessionManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/auth/session.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl SessionManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn new(redis: ConnectionManager, session_duration_minutes: i64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub async fn create_session(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn get_session(&mut self, session_id: &str) -> ProxyResult<Session> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub async fn update_session(&mut self, session: &Session) -> ProxyResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub async fn delete_session(&mut self, session_id: &str) -> ProxyResult<()> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub async fn get_user_sessions(&mut self, user_id: &str) -> ProxyResult<Vec<Session>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn revoke_user_sessions(&mut self, user_id: &str) -> ProxyResult<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn cleanup_expired_sessions(&mut self) -> ProxyResult<usize> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaConfig` is never constructed
[INFO] [stdout]  --> src/auth/mfa.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MfaConfig {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TotpManager` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TotpManager {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_secret`, `generate_qr_url`, `verify_token`, and `generate_current_token` are never used
[INFO] [stdout]   --> src/auth/mfa.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TotpManager {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new(config: MfaConfig) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn generate_secret(&self) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn generate_qr_url(&self, secret: &str, account: &str, issuer: &str) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn verify_token(&self, secret: &str, token: &str) -> ProxyResult<bool> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn generate_current_token(&self, secret: &str) -> ProxyResult<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaEnrollmentRequest` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct MfaEnrollmentRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaEnrollmentResponse` is never constructed
[INFO] [stdout]   --> src/auth/mfa.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub struct MfaEnrollmentResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MfaVerificationRequest` is never constructed
[INFO] [stdout]    --> src/auth/mfa.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct MfaVerificationRequest {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeviceFingerprint` is never constructed
[INFO] [stdout]  --> src/auth/device.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct DeviceFingerprint {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeviceMetadata` is never constructed
[INFO] [stdout]   --> src/auth/device.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DeviceMetadata {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `generate_hash`, `parse_user_agent`, `update_last_seen`, `increase_trust`, and `decrease_trust` are never used
[INFO] [stdout]    --> src/auth/device.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]  32 | impl DeviceFingerprint {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  33 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     fn generate_hash(user_agent: &str, ip_address: &str, metadata: &DeviceMetadata) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     fn parse_user_agent(user_agent: &str) -> (String, String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn update_last_seen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn increase_trust(&mut self, amount: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn decrease_trust(&mut self, amount: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeviceManager` is never constructed
[INFO] [stdout]    --> src/auth/device.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct DeviceManager;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `calculate_device_risk_score`, and `should_require_step_up_auth` are never used
[INFO] [stdout]    --> src/auth/device.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 128 | impl DeviceManager {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 129 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn calculate_device_risk_score(device: &DeviceFingerprint) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn should_require_step_up_auth(device: &DeviceFingerprint) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyContext` is never constructed
[INFO] [stdout]  --> src/policy/mod.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct PolicyContext {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyDecision` is never constructed
[INFO] [stdout]   --> src/policy/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PolicyDecision {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Policy` is never constructed
[INFO] [stdout]   --> src/policy/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct Policy {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyRule` is never constructed
[INFO] [stdout]   --> src/policy/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct PolicyRule {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Effect` is never used
[INFO] [stdout]   --> src/policy/mod.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum Effect {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Condition` is never constructed
[INFO] [stdout]   --> src/policy/mod.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub struct Condition {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Operator` is never used
[INFO] [stdout]   --> src/policy/mod.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum Operator {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyEngine` is never constructed
[INFO] [stdout]   --> src/policy/mod.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct PolicyEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_policy`, `evaluate`, `matches_resource`, and `evaluate_conditions` are never used
[INFO] [stdout]    --> src/policy/mod.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl PolicyEngine {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn new(default_deny: bool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn add_policy(&mut self, policy: Policy) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn evaluate(&self, context: &PolicyContext) -> ProxyResult<PolicyDecision> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     fn matches_resource(&self, pattern: &str, resource: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     fn evaluate_conditions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config`, `db_pool`, and `redis_conn` are never read
[INFO] [stdout]   --> src/proxy/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ProxyServer {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 18 |     config: Arc<Config>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 19 |     db_pool: PgPool,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 20 |     redis_conn: ConnectionManager,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskContext` is never constructed
[INFO] [stdout]  --> src/risk/mod.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct RiskContext {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeoLocation` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct GeoLocation {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskScore` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RiskScore {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskFactor` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub struct RiskFactor {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskLevel` is never used
[INFO] [stdout]   --> src/risk/mod.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub enum RiskLevel {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RiskRecommendation` is never used
[INFO] [stdout]   --> src/risk/mod.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum RiskRecommendation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RiskEngine` is never constructed
[INFO] [stdout]   --> src/risk/mod.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct RiskEngine {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/risk/mod.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl RiskEngine {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  64 |     pub fn new(step_up_threshold: u32, block_threshold: u32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn calculate_risk(&self, context: &RiskContext) -> ProxyResult<RiskScore> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     fn calculate_device_risk(&self, device: &DeviceFingerprint) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn calculate_geo_risk(&self) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     fn calculate_failed_attempts_risk(&self, attempts: u32) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     fn calculate_time_risk(&self, context: &RiskContext) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     fn calculate_ip_change_risk(&self, context: &RiskContext) -> Option<RiskFactor> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     fn calculate_session_age_risk(&self, age_minutes: i64) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditEvent` is never constructed
[INFO] [stdout]  --> src/audit/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct AuditEvent {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EventType` is never used
[INFO] [stdout]   --> src/audit/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum EventType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Outcome` is never used
[INFO] [stdout]   --> src/audit/mod.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum Outcome {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_risk_score`, and `with_metadata` are never used
[INFO] [stdout]   --> src/audit/mod.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl AuditEvent {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 46 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn with_risk_score(mut self, score: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn with_metadata(mut self, metadata: serde_json::Value) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuditLogger` is never constructed
[INFO] [stdout]   --> src/audit/mod.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct AuditLogger {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `log`, `log_authentication`, `log_authorization`, and `log_risk_evaluation` are never used
[INFO] [stdout]    --> src/audit/mod.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout]  85 | impl AuditLogger {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  86 |     pub fn new(db_pool: PgPool) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn log(&self, event: AuditEvent) -> Result<(), sqlx::Error> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn log_authentication(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub async fn log_authorization(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub async fn log_risk_evaluation(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/error.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum ProxyError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout]  5 |     #[error("Authentication failed: {0}")]
[INFO] [stdout]  6 |     AuthenticationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  9 |     AuthorizationDenied(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     InvalidSession(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     RiskThresholdExceeded { score: u32, threshold: u32 },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     PolicyEvaluationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     MfaRequired,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     InvalidMfaToken,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     DeviceNotTrusted(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     RateLimitExceeded,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     ConfigError(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ProxyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `status_code` is never used
[INFO] [stdout]   --> src/error.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | impl ProxyError {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 58 |     pub fn status_code(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `ProxyResult` is never used
[INFO] [stdout]   --> src/error.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub type ProxyResult<T> = Result<T, ProxyError>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 02s
[INFO] running `Command { std: "docker" "inspect" "df242869d21f44debf12b2d8f2f6f310fff3b0c1e5eecc96b69a993785d4a25a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df242869d21f44debf12b2d8f2f6f310fff3b0c1e5eecc96b69a993785d4a25a", kill_on_drop: false }`
[INFO] [stdout] df242869d21f44debf12b2d8f2f6f310fff3b0c1e5eecc96b69a993785d4a25a
