[INFO] cloning repository https://github.com/splax-s/NLAG
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/splax-s/NLAG" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 11e9f8f929ccce4705a09af2bd2c1d8f4e34699c
[INFO] checking splax-s/NLAG against 79c0559184f27f4433a6fbc260b950d06d4a4889 for pr-162233-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-6-tc2/source/rust-toolchain.toml
[INFO] started tweaking git repo https://github.com/splax-s/NLAG
[INFO] finished tweaking git repo https://github.com/splax-s/NLAG
[INFO] tweaked toml for git repo https://github.com/splax-s/NLAG written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/splax-s/NLAG on toolchain 79c0559184f27f4433a6fbc260b950d06d4a4889
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/splax-s/NLAG 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" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8
[INFO] running `Command { std: "docker" "start" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8", 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" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8", 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" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8" "/opt/rustwide/cargo-home/bin/cargo" "+79c0559184f27f4433a6fbc260b950d06d4a4889" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking tracing-core v0.1.35
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking bitflags v2.10.0
[INFO] [stderr]     Checking rustls-pki-types v1.13.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling time-core v0.1.6
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling openssl-sys v0.9.111
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling time-macros v0.2.24
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling crunchy v0.2.4
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking webpki-roots v1.0.4
[INFO] [stderr]    Compiling openssl v0.10.75
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]     Checking rustls-native-certs v0.8.2
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]    Compiling ucd-trie v0.1.7
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking quinn-udp v0.5.14
[INFO] [stderr]    Compiling pest v2.8.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking fastbloom v0.14.0
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking iri-string v0.7.9
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling const-random-macro v0.1.16
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking const-random v0.1.18
[INFO] [stderr]     Checking dlv-list v0.5.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking ordered-multimap v0.7.3
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]    Compiling pest_meta v2.8.4
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking tungstenite v0.28.0
[INFO] [stderr]     Checking hashlink v0.8.4
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]     Checking yasna v0.5.2
[INFO] [stderr]     Checking arraydeque v0.5.1
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking yaml-rust2 v0.8.1
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking rust-ini v0.20.0
[INFO] [stderr]     Checking asn1-rs v0.6.2
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking convert_case v0.6.0
[INFO] [stderr]     Checking axum-core v0.5.5
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking rcgen v0.13.2
[INFO] [stderr]    Compiling pest_generator v2.8.4
[INFO] [stderr]    Compiling oid-registry v0.7.1
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking tracing-subscriber v0.3.22
[INFO] [stderr]     Checking bcrypt v0.15.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking tungstenite v0.24.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking der-parser v9.0.0
[INFO] [stderr]    Compiling pest_derive v2.8.4
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking json5 v0.4.1
[INFO] [stderr]     Checking rtoolbox v0.0.3
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking curve25519-dalek v4.1.3
[INFO] [stderr]     Checking x509-parser v0.16.0
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking rpassword v7.4.0
[INFO] [stderr]     Checking prometheus v0.13.4
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tokio-tungstenite v0.28.0
[INFO] [stderr]     Checking config v0.14.1
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking tokio-tungstenite v0.24.0
[INFO] [stderr]    Compiling instability v0.3.10
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking clap_complete v4.5.61
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking h2 v0.4.12
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking governor v0.6.3
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking rustls-platform-verifier v0.6.2
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking quinn-proto v0.11.13
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking quinn v0.11.9
[INFO] [stderr]     Checking hyper-util v0.1.19
[INFO] [stderr]     Checking nlag-common v0.1.0 (/opt/rustwide/workdir/crates/nlag-common)
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking axum v0.8.7
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.26
[INFO] [stderr]     Checking nlag-control v0.1.0 (/opt/rustwide/workdir/crates/nlag-control)
[INFO] [stderr]     Checking nlag-agent v0.1.0 (/opt/rustwide/workdir/crates/nlag-agent)
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:29:15
[INFO] [stdout]    |
[INFO] [stdout] 29 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Timelike`
[INFO] [stdout]   --> crates/nlag-control/src/analytics.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use chrono::{DateTime, Utc, Timelike, Datelike};
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::debug`
[INFO] [stdout]   --> crates/nlag-control/src/analytics.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::debug;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 |         #[cfg(feature = "dns-verification")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:425:19
[INFO] [stdout]     |
[INFO] [stdout] 425 |         #[cfg(not(feature = "dns-verification"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:436:15
[INFO] [stdout]     |
[INFO] [stdout] 436 |         #[cfg(feature = "dns-verification")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:456:19
[INFO] [stdout]     |
[INFO] [stdout] 456 |         #[cfg(not(feature = "dns-verification"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> crates/nlag-control/src/sla.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> crates/nlag-control/src/sla.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-control/src/sso.rs:34:28
[INFO] [stdout]    |
[INFO] [stdout] 34 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> crates/nlag-control/src/teams.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking nlag-edge v0.1.0 (/opt/rustwide/workdir/crates/nlag-edge)
[INFO] [stdout] warning: unused import: `Timelike`
[INFO] [stdout]   --> crates/nlag-control/src/analytics.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 | use chrono::{DateTime, Utc, Timelike, Datelike};
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::debug`
[INFO] [stdout]   --> crates/nlag-control/src/analytics.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::debug;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:408:15
[INFO] [stdout]     |
[INFO] [stdout] 408 |         #[cfg(feature = "dns-verification")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]     = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:425:19
[INFO] [stdout]     |
[INFO] [stdout] 425 |         #[cfg(not(feature = "dns-verification"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:436:15
[INFO] [stdout]     |
[INFO] [stdout] 436 |         #[cfg(feature = "dns-verification")]
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification`
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:456:19
[INFO] [stdout]     |
[INFO] [stdout] 456 |         #[cfg(not(feature = "dns-verification"))]
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected values for `feature` are: `default`, `postgres`, and `sqlx`
[INFO] [stdout]     = help: consider adding `dns-verification` as a feature in `Cargo.toml`
[INFO] [stdout]     = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `warn`
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parking_lot::RwLock`
[INFO] [stdout]   --> crates/nlag-control/src/sla.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use parking_lot::RwLock;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> crates/nlag-control/src/sla.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-control/src/sso.rs:34:28
[INFO] [stdout]    |
[INFO] [stdout] 34 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `warn`
[INFO] [stdout]   --> crates/nlag-control/src/teams.rs:25:15
[INFO] [stdout]    |
[INFO] [stdout] 25 | use tracing::{debug, info, warn};
[INFO] [stdout]    |               ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:32:28
[INFO] [stdout]    |
[INFO] [stdout] 32 | use tracing::{debug, info, warn};
[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: `Duration` and `Instant`
[INFO] [stdout]   --> crates/nlag-edge/src/event_webhooks.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]   --> crates/nlag-edge/src/ssh_tunnel.rs:31:24
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::net::{IpAddr, SocketAddr};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/ssh_tunnel.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/geo.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:32:28
[INFO] [stdout]    |
[INFO] [stdout] 32 | use tracing::{debug, info, warn};
[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: `Duration` and `Instant`
[INFO] [stdout]   --> crates/nlag-edge/src/event_webhooks.rs:12:17
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::time::{Duration, Instant};
[INFO] [stdout]    |                 ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SocketAddr`
[INFO] [stdout]   --> crates/nlag-edge/src/ssh_tunnel.rs:31:24
[INFO] [stdout]    |
[INFO] [stdout] 31 | use std::net::{IpAddr, SocketAddr};
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/ssh_tunnel.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> crates/nlag-edge/src/geo.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `domain` is never read
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct SimpleTunnelConfig {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub domain: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SimpleTunnelConfig` has derived impls for the traits `Clone` and `Debug`, but these are 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 `effective_tunnel_config` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:550:12
[INFO] [stdout]     |
[INFO] [stdout] 253 | impl AgentConfig {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn effective_tunnel_config(&self, tunnel: &TunnelConfig) -> TunnelConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConfigManager` is never constructed
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:609:12
[INFO] [stdout]     |
[INFO] [stdout] 609 | pub struct ConfigManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `from_file`, `config`, `reload`, and `update` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:618:12
[INFO] [stdout]     |
[INFO] [stdout] 616 | impl ConfigManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 617 |     /// Create a new config manager
[INFO] [stdout] 618 |     pub fn new(config: AgentConfig) -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn from_file(path: &Path) -> Result<Arc<Self>, ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 637 |     pub fn config(&self) -> AgentConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 642 |     pub fn reload(&self) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 655 |     pub fn update(&self, config: AgentConfig) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `max_tunnels` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/auth.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl UserTier {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 57 |     /// Get the maximum number of tunnels allowed for this tier
[INFO] [stdout] 58 |     pub fn max_tunnels(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_create_tunnel` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/auth.rs:253:14
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn can_create_tunnel(creds: &Credentials) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileServerError` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum FileServerError {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub type Result<T> = std::result::Result<T, FileServerError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileServerConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct FileServerConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_index_files` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/file_server.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn default_index_files() -> Vec<String> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn default_true() -> bool { true }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_cache_age` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn default_cache_age() -> u64 { 3600 } // 1 hour
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_mime` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:105:4
[INFO] [stdout]     |
[INFO] [stdout] 105 | fn default_mime() -> String { "application/octet-stream".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `no_listing`, `with_index`, and `with_cache_age` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl FileServerConfig {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 126 |     /// Create a new file server config for a directory
[INFO] [stdout] 127 |     pub fn new<P: AsRef<Path>>(root: P) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn no_listing(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn with_index<I: IntoIterator<Item = S>, S: Into<String>>(mut self, files: I) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn with_cache_age(mut self, seconds: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileResponse` is never constructed
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub struct FileResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `header`, `body`, `not_found`, and `forbidden` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | impl FileResponse {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 165 |     /// Create a new response
[INFO] [stdout] 166 |     pub fn new(status: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn header(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn body(mut self, body: Vec<u8>) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn not_found(path: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn forbidden(path: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FileServer` is never constructed
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:228:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | pub struct FileServer {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 232 | impl FileServer {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 233 |     /// Create a new file server
[INFO] [stdout] 234 |     pub fn new(config: FileServerConfig) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn handle_request(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     fn resolve_path(&self, url_path: &str) -> Result<PathBuf> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn serve_file(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     fn read_file(&self, path: &Path, range: Option<(u64, u64)>) -> Result<(Vec<u8>, Option<String>)> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     fn serve_directory(&self, path: &Path, url_path: &str) -> FileResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     fn render_directory_listing(&self, path: &str, entries: &[DirEntry]) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 611 |     fn handle_not_found(&self, path: &str) -> FileResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 628 |     fn get_mime_type(&self, path: &Path) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 692 |     fn generate_etag(&self, metadata: &Metadata, path: &Path) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 716 |     fn get_last_modified(&self, metadata: &Metadata) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DirEntry` is never constructed
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:726:8
[INFO] [stdout]     |
[INFO] [stdout] 726 | struct DirEntry {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_range` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:734:4
[INFO] [stdout]     |
[INFO] [stdout] 734 | fn parse_range(range: &str, file_size: u64) -> Option<(u64, u64)> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_size` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:765:4
[INFO] [stdout]     |
[INFO] [stdout] 765 | fn format_size(bytes: u64) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:782:4
[INFO] [stdout]     |
[INFO] [stdout] 782 | fn html_escape(s: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_REQUESTS_PER_TUNNEL` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/inspect.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const MAX_REQUESTS_PER_TUNNEL: usize = 1000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RequestStarted` and `ResponseReceived` are never constructed
[INFO] [stdout]   --> crates/nlag-agent/src/inspect.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub enum InspectorEvent {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 66 |     /// New request started
[INFO] [stdout] 67 |     RequestStarted(CapturedRequest),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 68 |     /// Response received
[INFO] [stdout] 69 |     ResponseReceived {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InspectorEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `record_request`, `record_response`, and `sync_to_dashboard` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/inspect.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl LocalInspector {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn record_request(&self, request: CapturedRequest) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn record_response(&self, request_id: &str, status: u16, duration_ms: u64, 
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     fn sync_to_dashboard(&self, request: CapturedRequest) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_traffic` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/tunnel/mod.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl DashboardSync {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn sync_traffic(&self, method: &str, path: &str, status: u16, duration_ms: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_stream` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/tunnel/forwarder.rs:469:10
[INFO] [stdout]     |
[INFO] [stdout] 469 | async fn handle_stream(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `domain` is never read
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub struct SimpleTunnelConfig {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub domain: Option<String>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SimpleTunnelConfig` has derived impls for the traits `Clone` and `Debug`, but these are 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: field `config_path` is never read
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:613:5
[INFO] [stdout]     |
[INFO] [stdout] 609 | pub struct ConfigManager {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 613 |     config_path: Option<std::path::PathBuf>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_file` and `reload` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/agent_config.rs:626:12
[INFO] [stdout]     |
[INFO] [stdout] 616 | impl ConfigManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 626 |     pub fn from_file(path: &Path) -> Result<Arc<Self>, ConfigError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 642 |     pub fn reload(&self) -> Result<(), ConfigError> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `can_create_tunnel` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/auth.rs:253:14
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub async fn can_create_tunnel(creds: &Credentials) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `no_listing`, `with_index`, and `with_cache_age` are never used
[INFO] [stdout]    --> crates/nlag-agent/src/file_server.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl FileServerConfig {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn no_listing(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn with_index<I: IntoIterator<Item = S>, S: Into<String>>(mut self, files: I) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn with_cache_age(mut self, seconds: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_traffic` is never used
[INFO] [stdout]   --> crates/nlag-agent/src/tunnel/mod.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl DashboardSync {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn sync_traffic(&self, method: &str, path: &str, status: u16, duration_ms: u64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_stream` is never used
[INFO] [stdout]    --> crates/nlag-agent/src/tunnel/forwarder.rs:469:10
[INFO] [stdout]     |
[INFO] [stdout] 469 | async fn handle_stream(
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> crates/nlag-control/src/analytics.rs:710:17
[INFO] [stdout]     |
[INFO] [stdout] 710 |             let mut event = test_event(200, i as f64);
[INFO] [stdout]     |                 ----^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DomainError` is never used
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum DomainError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:57:10
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub type Result<T> = std::result::Result<T, DomainError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DomainType` is never used
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub enum DomainType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VerificationStatus` is never used
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub enum VerificationStatus {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReservedDomain` is never constructed
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct ReservedDomain {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_subdomain`, `new_custom`, `is_active`, and `needs_reverification` are never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl ReservedDomain {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 136 |     /// Create a new subdomain reservation
[INFO] [stdout] 137 |     pub fn new_subdomain(subdomain: &str, base_domain: &str, user_id: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn new_custom(domain: &str, user_id: &str, cname_target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn needs_reverification(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainLimits` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct DomainLimits {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `free`, `pro`, and `enterprise` are never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | impl DomainLimits {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] 221 |     /// Free tier limits
[INFO] [stdout] 222 |     pub fn free() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn pro() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn enterprise() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DomainManager` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct DomainManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:272:12
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DomainManager {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 271 |     /// Create a new domain manager
[INFO] [stdout] 272 |     pub fn new(base_domain: &str, cname_target: &str) -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn reserve_subdomain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn reserve_custom_domain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn verify_custom_domain(&self, domain_id: &str) -> Result<ReservedDomain> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     async fn verify_cname(&self, domain: &str, expected_target: &str) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     async fn verify_txt_record(&self, domain: &str, expected_value: &str) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 464 |     pub fn get_domain(&self, domain_id: &str) -> Option<ReservedDomain> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 469 |     pub fn get_domain_by_name(&self, domain: &str) -> Option<ReservedDomain> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn list_user_domains(&self, user_id: &str) -> Vec<ReservedDomain> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn release_domain(&self, domain_id: &str, user_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     pub fn assign_tunnel(&self, domain_id: &str, tunnel_id: &str, user_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     pub fn unassign_tunnel(&self, domain_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 544 |     pub fn find_domain_for_request(&self, hostname: &str) -> Option<ReservedDomain> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn cleanup_expired(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn start_cleanup_task(self: Arc<Self>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 613 |     fn validate_subdomain(&self, subdomain: &str, limits: &DomainLimits) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 654 |     fn validate_custom_domain(&self, domain: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 694 |     fn store_domain(&self, domain: ReservedDomain) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 708 |     fn get_user_subdomain_count(&self, user_id: &str) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 715 |     fn get_user_custom_domain_count(&self, user_id: &str) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_verification_token` is never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:724:4
[INFO] [stdout]     |
[INFO] [stdout] 724 | fn generate_verification_token() -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_blocked_subdomains` is never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:743:4
[INFO] [stdout]     |
[INFO] [stdout] 743 | fn default_blocked_subdomains() -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OAuthError` is never used
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum OAuthError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:51:10
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub type Result<T> = std::result::Result<T, OAuthError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OAuthProvider` is never constructed
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct OAuthProvider {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_scopes` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn default_scopes() -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:106:4
[INFO] [stdout]     |
[INFO] [stdout] 106 | fn default_true() -> bool { true }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ProviderType` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum ProviderType {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `google`, `github`, and `microsoft` are never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | impl OAuthProvider {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 125 |     /// Create a Google OAuth provider
[INFO] [stdout] 126 |     pub fn google(client_id: &str, client_secret: &str, redirect_uri: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn github(client_id: &str, client_secret: &str, redirect_uri: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn microsoft(client_id: &str, client_secret: &str, redirect_uri: &str, tenant: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OAuthState` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:197:12
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub struct OAuthState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OAuthUserInfo` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct OAuthUserInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:237:12
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub struct TokenResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OAuthManager` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct OAuthManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:270:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | impl OAuthManager {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 269 |     /// Create a new OAuth manager
[INFO] [stdout] 270 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn add_provider(&self, provider: OAuthProvider) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn remove_provider(&self, id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn get_provider(&self, id: &str) -> Option<OAuthProvider> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn list_providers(&self) -> Vec<OAuthProvider> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn get_auth_url(&self, provider_id: &str, redirect_to: Option<&str>) -> Result<(String, String)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub async fn exchange_code(&self, code: &str, state: &str) -> Result<(TokenResponse, OAuthUserInfo)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     async fn get_user_info(&self, provider: &OAuthProvider, tokens: &TokenResponse) -> Result<OAuthUserInfo> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     fn parse_id_token(&self, provider: &OAuthProvider, id_token: &str) -> Result<Option<OAuthUserInfo>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     fn parse_claims(&self, provider: &OAuthProvider, claims: serde_json::Value) -> Result<OAuthUserInfo> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 525 |     pub fn cleanup_expired_states(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn start_cleanup_task(self: Arc<Self>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_string` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:562:4
[INFO] [stdout]     |
[INFO] [stdout] 562 | fn generate_random_string(len: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sha256` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:575:4
[INFO] [stdout]     |
[INFO] [stdout] 575 | fn sha256(data: &[u8]) -> Vec<u8> {
[INFO] [stdout]     |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base64_url_encode` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:581:4
[INFO] [stdout]     |
[INFO] [stdout] 581 | fn base64_url_encode(data: &[u8]) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base64_url_decode` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:586:4
[INFO] [stdout]     |
[INFO] [stdout] 586 | fn base64_url_decode(data: &str) -> std::result::Result<Vec<u8>, base64::DecodeError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delete_before` is never used
[INFO] [stdout]    --> crates/nlag-control/src/traffic.rs:119:14
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub trait TrafficStore: Send + Sync {
[INFO] [stdout]     |           ------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 119 |     async fn delete_before(&self, timestamp: DateTime<Utc>) -> Result<u64>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> crates/nlag-control/src/teams.rs:1040:13
[INFO] [stdout]      |
[INFO] [stdout] 1040 |         let mut team = manager.create_team(
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `VerificationFailed`, `Expired`, and `DnsError` are never constructed
[INFO] [stdout]   --> crates/nlag-control/src/domains.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum DomainError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     VerificationFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     Expired,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     DnsError(String),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DomainError` 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 `needs_reverification` is never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:182:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl ReservedDomain {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn needs_reverification(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `free` and `enterprise` are never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 220 | impl DomainLimits {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] 221 |     /// Free tier limits
[INFO] [stdout] 222 |     pub fn free() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn enterprise() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> crates/nlag-control/src/domains.rs:365:18
[INFO] [stdout]     |
[INFO] [stdout] 270 | impl DomainManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub async fn verify_custom_domain(&self, domain_id: &str) -> Result<ReservedDomain> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     async fn verify_cname(&self, domain: &str, expected_target: &str) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     async fn verify_txt_record(&self, domain: &str, expected_value: &str) -> Result<bool> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 514 |     pub fn assign_tunnel(&self, domain_id: &str, tunnel_id: &str, user_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     pub fn unassign_tunnel(&self, domain_id: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 570 |     pub fn cleanup_expired(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 598 |     pub fn start_cleanup_task(self: Arc<Self>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `InvalidState`, `TokenExchangeFailed`, `UserInfoFailed`, `InvalidToken`, `MissingClaim`, and `HttpError` are never constructed
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum OAuthError {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     InvalidState,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     TokenExchangeFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     UserInfoFailed(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     InvalidToken(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     MissingClaim(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     HttpError(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OAuthError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client_secret` is never read
[INFO] [stdout]   --> crates/nlag-control/src/oauth.rs:70:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct OAuthProvider {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub client_secret: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OAuthProvider` 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: struct `OAuthUserInfo` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub struct OAuthUserInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:237:12
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub struct TokenResponse {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `client` is never read
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct OAuthManager {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 265 |     client: reqwest::Client,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | impl OAuthManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn remove_provider(&self, id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn get_provider(&self, id: &str) -> Option<OAuthProvider> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn list_providers(&self) -> Vec<OAuthProvider> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 356 |     pub async fn exchange_code(&self, code: &str, state: &str) -> Result<(TokenResponse, OAuthUserInfo)> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 417 |     async fn get_user_info(&self, provider: &OAuthProvider, tokens: &TokenResponse) -> Result<OAuthUserInfo> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     fn parse_id_token(&self, provider: &OAuthProvider, id_token: &str) -> Result<Option<OAuthUserInfo>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     fn parse_claims(&self, provider: &OAuthProvider, claims: serde_json::Value) -> Result<OAuthUserInfo> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 535 |     pub fn start_cleanup_task(self: Arc<Self>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `base64_url_decode` is never used
[INFO] [stdout]    --> crates/nlag-control/src/oauth.rs:586:4
[INFO] [stdout]     |
[INFO] [stdout] 586 | fn base64_url_decode(data: &str) -> std::result::Result<Vec<u8>, base64::DecodeError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delete_before` is never used
[INFO] [stdout]    --> crates/nlag-control/src/traffic.rs:119:14
[INFO] [stdout]     |
[INFO] [stdout] 108 | pub trait TrafficStore: Send + Sync {
[INFO] [stdout]     |           ------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 119 |     async fn delete_before(&self, timestamp: DateTime<Utc>) -> Result<u64>;
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domain`
[INFO] [stdout]    --> crates/nlag-edge/src/acme.rs:605:83
[INFO] [stdout]     |
[INFO] [stdout] 605 |     async fn get_authorization(&self, key_pair: &AccountKeyPair, order_url: &str, domain: &str) -> Result<(String, AcmeChallenge)> {
[INFO] [stdout]     |                                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domain`
[INFO] [stdout]    --> crates/nlag-edge/src/acme.rs:605:83
[INFO] [stdout]     |
[INFO] [stdout] 605 |     async fn get_authorization(&self, key_pair: &AccountKeyPair, order_url: &str, domain: &str) -> Result<(String, AcmeChallenge)> {
[INFO] [stdout]     |                                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:523:13
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let now = Instant::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:523:13
[INFO] [stdout]     |
[INFO] [stdout] 523 |         let now = Instant::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> crates/nlag-edge/src/loadbalancer.rs:493:13
[INFO] [stdout]     |
[INFO] [stdout] 493 |         for i in 0..3 {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `agent1`
[INFO] [stdout]    --> crates/nlag-edge/src/loadbalancer.rs:528:13
[INFO] [stdout]     |
[INFO] [stdout] 528 |         let agent1 = b1.agent_id;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_agent1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> crates/nlag-edge/src/ssh_tunnel.rs:678:13
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let now = Instant::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `now`
[INFO] [stdout]    --> crates/nlag-edge/src/ssh_tunnel.rs:678:13
[INFO] [stdout]     |
[INFO] [stdout] 678 |         let now = Instant::now();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_now`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PasswordFormat` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum PasswordFormat {
[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 `Credential` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct Credential {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicAuthConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct BasicAuthConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_realm` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn default_realm() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn default_true() -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AuthResult` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/basic_auth.rs:86:10
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum AuthResult {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_allowed` and `username` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl AuthResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 102 |     /// Check if authentication was successful or path was excluded
[INFO] [stdout] 103 |     pub fn is_allowed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn username(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicAuth` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct BasicAuth {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl BasicAuth {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 123 |     /// Create a new BasicAuth middleware
[INFO] [stdout] 124 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn add_config(&self, key: &str, config: BasicAuthConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn remove_config(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_config(&self, tunnel_id: &str) -> Option<BasicAuthConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn authenticate(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn www_authenticate_header(&self, tunnel_id: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn unauthorized_body(&self, tunnel_id: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn parse_basic_auth(header: &str) -> Option<(String, String)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     fn verify_sha256(password: &str, hash: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     fn verify_bcrypt(password: &str, hash: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn hash_sha256(password: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn hash_bcrypt(password: &str) -> Result<String, bcrypt::BcryptError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedBasicAuth` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub type SharedBasicAuth = Arc<BasicAuth>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicAuthBuilder` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:293:12
[INFO] [stdout]     |
[INFO] [stdout] 293 | pub struct BasicAuthBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:299:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | impl BasicAuthBuilder {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 298 |     /// Create a new builder
[INFO] [stdout] 299 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     pub fn realm(mut self, realm: &str) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn add_user(mut self, username: &str, password: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn add_user_sha256(mut self, username: &str, password_hash: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     pub fn add_user_bcrypt(mut self, username: &str, password_hash: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 342 |     pub fn exclude_path(mut self, path: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn unauthorized_message(mut self, message: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn disabled(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 360 |     pub fn build(self) -> BasicAuthConfig {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encode_basic_auth` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:372:8
[INFO] [stdout]     |
[INFO] [stdout] 372 | pub fn encode_basic_auth(username: &str, password: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CircuitState` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum CircuitState {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreakerConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct CircuitBreakerConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_failure_threshold` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:92:4
[INFO] [stdout]    |
[INFO] [stdout] 92 | fn default_failure_threshold() -> u32 { 5 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_success_threshold` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn default_success_threshold() -> u32 { 3 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_timeout` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn default_timeout() -> Duration { Duration::from_secs(30) }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_half_open_max` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:95:4
[INFO] [stdout]    |
[INFO] [stdout] 95 | fn default_half_open_max() -> u32 { 3 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_min_requests` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:96:4
[INFO] [stdout]    |
[INFO] [stdout] 96 | fn default_min_requests() -> u32 { 10 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_failure_rate` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn default_failure_rate() -> f64 { 0.5 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_slow_rate` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/circuit_breaker.rs:98:4
[INFO] [stdout]    |
[INFO] [stdout] 98 | fn default_slow_rate() -> f64 { 0.8 }
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CallResult` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum CallResult {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitStats` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct CircuitStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitInternal` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:150:8
[INFO] [stdout]     |
[INFO] [stdout] 150 | struct CircuitInternal {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `should_reset_window`, `reset_window`, `failure_rate`, and `slow_rate` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl CircuitInternal {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 174 |     fn new(config: CircuitBreakerConfig) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     fn should_reset_window(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn reset_window(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     fn failure_rate(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn slow_rate(&self) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreaker` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:224:12
[INFO] [stdout]     |
[INFO] [stdout] 224 | pub struct CircuitBreaker {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl CircuitBreaker {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 232 |     /// Create a new circuit breaker
[INFO] [stdout] 233 |     pub fn new(id: &str, config: CircuitBreakerConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub fn allow_request(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 275 |     pub fn record_result(&self, result: CallResult) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn record_success(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn record_failure(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn record_call(&self, success: bool, duration: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn state(&self) -> CircuitState {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn stats(&self) -> CircuitStats {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn force_open(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     pub fn force_close(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn reset(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     fn handle_success(&self, internal: &mut CircuitInternal) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 398 |     fn handle_failure(&self, internal: &mut CircuitInternal) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     fn transition_to(&self, internal: &mut CircuitInternal, new_state: CircuitState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitBreakerRegistry` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:446:12
[INFO] [stdout]     |
[INFO] [stdout] 446 | pub struct CircuitBreakerRegistry {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:457:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl CircuitBreakerRegistry {
[INFO] [stdout]     | --------------------------- associated items in this implementation
[INFO] [stdout] 456 |     /// Create a new registry
[INFO] [stdout] 457 |     pub fn new(default_config: CircuitBreakerConfig) -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn get_or_create(&self, backend_id: &str) -> Arc<CircuitBreaker> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn set_config(&self, backend_id: &str, config: CircuitBreakerConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub fn all_stats(&self) -> HashMap<String, CircuitStats> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn get_open_circuits(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub fn reset_all(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 516 |     pub fn remove(&self, backend_id: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn cleanup_inactive(&self, max_age: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitGuard` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct CircuitGuard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `try_new`, `success`, `failure`, and `elapsed` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:565:12
[INFO] [stdout]     |
[INFO] [stdout] 563 | impl CircuitGuard {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 564 |     /// Create a new guard, returns None if circuit is open
[INFO] [stdout] 565 |     pub fn try_new(breaker: Arc<CircuitBreaker>) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn success(mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub fn failure(mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn elapsed(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorPageConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/error_pages.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct ErrorPageConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorContext` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/error_pages.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ErrorContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorTemplate` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/error_pages.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub struct ErrorTemplate {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorPageManager` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/error_pages.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct ErrorPageManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl ErrorPageManager {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  92 |     /// Create a new error page manager
[INFO] [stdout]  93 |     pub fn new(config: ErrorPageConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_defaults() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn set_template(&self, status_code: u16, template: ErrorTemplate) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn set_tunnel_config(&self, tunnel_id: &str, config: ErrorPageConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn remove_tunnel_config(&self, tunnel_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_config(&self, tunnel_id: Option<&str>) -> ErrorPageConfig {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn render(&self, context: &ErrorContext, tunnel_id: Option<&str>) -> (String, String) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     fn render_default(&self, context: &ErrorContext, config: &ErrorPageConfig) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     fn interpolate(&self, template: &str, context: &ErrorContext, config: &ErrorPageConfig) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_escape` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:369:4
[INFO] [stdout]     |
[INFO] [stdout] 369 | fn html_escape(s: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:380:12
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl ErrorPageManager {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 379 |     /// Generate a 400 Bad Request page
[INFO] [stdout] 380 |     pub fn bad_request(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn unauthorized(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn forbidden(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 431 |     pub fn not_found(&self, path: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 448 |     pub fn rate_limited(&self, retry_after: Option<u64>, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn internal_error(&self, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn bad_gateway(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn service_unavailable(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn gateway_timeout(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn tunnel_not_found(&self, subdomain: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub fn tunnel_offline(&self, tunnel_id: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedErrorPageManager` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:574:10
[INFO] [stdout]     |
[INFO] [stdout] 574 | pub type SharedErrorPageManager = Arc<ErrorPageManager>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EventType` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/event_webhooks.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum EventType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Event` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/event_webhooks.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct Event {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_tunnel`, `with_request`, and `with_metadata` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  81 | impl Event {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  82 |     /// Create a new event
[INFO] [stdout]  83 |     pub fn new(event_type: EventType, data: EventData) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn with_tunnel(mut self, tunnel_id: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn with_request(mut self, request_id: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn with_metadata(mut self, key: &str, value: serde_json::Value) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EventData` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:117:10
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum EventData {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TunnelEventData` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub struct TunnelEventData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestEventData` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:145:12
[INFO] [stdout]     |
[INFO] [stdout] 145 | pub struct RequestEventData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrorEventData` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub struct ErrorEventData {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookEndpoint` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:180:12
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub struct WebhookEndpoint {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:210:4
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn default_true() -> bool { true }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_retries` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:211:4
[INFO] [stdout]     |
[INFO] [stdout] 211 | fn default_retries() -> u32 { 3 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_timeout` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:212:4
[INFO] [stdout]     |
[INFO] [stdout] 212 | fn default_timeout() -> u64 { 30 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_batch_timeout` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:213:4
[INFO] [stdout]     |
[INFO] [stdout] 213 | fn default_batch_timeout() -> u64 { 1000 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DeliveryStatus` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:217:10
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub enum DeliveryStatus {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DeliveryRecord` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub struct DeliveryRecord {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventWebhooks` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub struct EventWebhooks {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | impl EventWebhooks {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 258 |     /// Create a new event webhook manager
[INFO] [stdout] 259 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn with_channel() -> (Arc<Self>, mpsc::UnboundedReceiver<(Event, String)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn register_endpoint(&self, endpoint: WebhookEndpoint) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn unregister_endpoint(&self, endpoint_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn get_endpoint(&self, endpoint_id: &str) -> Option<WebhookEndpoint> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn list_endpoints(&self) -> Vec<WebhookEndpoint> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn emit(&self, event: Event) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn emit_tunnel_started(&self, tunnel_id: &str, subdomain: Option<&str>, public_url: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 338 |     pub fn emit_tunnel_stopped(&self, tunnel_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn emit_request(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn emit_response(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn emit_error(&self, tunnel_id: Option<&str>, code: &str, message: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn record_delivery(&self, record: DeliveryRecord) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn get_history(&self, endpoint_id: Option<&str>) -> Vec<DeliveryRecord> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 452 |     pub fn sign_payload(secret: &str, payload: &[u8]) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub fn build_headers(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedEventWebhooks` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:501:10
[INFO] [stdout]     |
[INFO] [stdout] 501 | pub type SharedEventWebhooks = Arc<EventWebhooks>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EndpointBuilder` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:504:12
[INFO] [stdout]     |
[INFO] [stdout] 504 | pub struct EndpointBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:510:12
[INFO] [stdout]     |
[INFO] [stdout] 508 | impl EndpointBuilder {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 509 |     /// Create a new endpoint builder
[INFO] [stdout] 510 |     pub fn new(id: &str, url: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 528 |     pub fn secret(mut self, secret: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     pub fn subscribe(mut self, event_type: EventType) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn subscribe_all(mut self, events: Vec<EventType>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 546 |     pub fn header(mut self, name: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 552 |     pub fn max_retries(mut self, retries: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 558 |     pub fn timeout(mut self, secs: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 564 |     pub fn batch(mut self, size: usize, timeout_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 571 |     pub fn disabled(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 577 |     pub fn build(self) -> WebhookEndpoint {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TunnelMiddleware` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct TunnelMiddleware {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IpRestrictionConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct IpRestrictionConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MiddlewareResult` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum MiddlewareResult {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MiddlewarePipeline` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct MiddlewarePipeline {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/middleware.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl MiddlewarePipeline {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  88 |     /// Create a new middleware pipeline
[INFO] [stdout]  89 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_components(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn register_tunnel(&self, config: TunnelMiddleware) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn unregister_tunnel(&self, tunnel_id: &TunnelId) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn basic_auth(&self) -> &BasicAuth {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn rewrite(&self) -> &RewriteEngine {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn error_pages(&self) -> &ErrorPageManager {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn event_webhooks(&self) -> &EventWebhooks {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn wildcard_router(&self) -> &WildcardRouter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn process_request(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn error_response(&self, tunnel_id: &TunnelId, status: u16, path: &str, method: &str, error_message: &str) -> (Vec<(String,...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn route_wildcard(&self, host: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn emit_event(&self, event_type: EventType, tunnel_id: TunnelId, metadata: HashMap<String, serde_json::Value>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     fn check_ip_allowed(&self, ip: &IpAddr, config: &IpRestrictionConfig) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     fn ip_matches(&self, ip: &IpAddr, pattern: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     fn cidr_contains(&self, network: &IpAddr, prefix_len: u8, ip: &IpAddr) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PolicyError` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:53:10
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum PolicyError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Result` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:76:10
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub type Result<T> = std::result::Result<T, PolicyError>;
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PolicyDecision` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum PolicyDecision {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestContext` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct RequestContext {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestModifications` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct RequestModifications {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResponseModifications` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct ResponseModifications {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompressionSettings` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:140:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub struct CompressionSettings {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CachingSettings` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct CachingSettings {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyConfig` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub struct PolicyConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GlobalSettings` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:187:12
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub struct GlobalSettings {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:205:4
[INFO] [stdout]     |
[INFO] [stdout] 205 | fn default_true() -> bool { true }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_body_size` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn default_body_size() -> usize { 10 * 1024 * 1024 } // 10MB
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_timeout` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:207:4
[INFO] [stdout]     |
[INFO] [stdout] 207 | fn default_timeout() -> u64 { 60 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Policy` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:211:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub struct Policy {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchConditions` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:233:12
[INFO] [stdout]     |
[INFO] [stdout] 233 | pub struct MatchConditions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyActions` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:261:12
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub struct PolicyActions {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RateLimitAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:317:12
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub struct RateLimitAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_burst` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:328:4
[INFO] [stdout]     |
[INFO] [stdout] 328 | fn default_burst() -> u32 { 10 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_key` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:329:4
[INFO] [stdout]     |
[INFO] [stdout] 329 | fn default_key() -> String { "ip".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AuthAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:333:12
[INFO] [stdout]     |
[INFO] [stdout] 333 | pub struct AuthAction {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_realm` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:351:4
[INFO] [stdout]     |
[INFO] [stdout] 351 | fn default_realm() -> String { "Restricted".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `IpPolicyAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:355:12
[INFO] [stdout]     |
[INFO] [stdout] 355 | pub struct IpPolicyAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:366:12
[INFO] [stdout]     |
[INFO] [stdout] 366 | pub struct TransformAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RewriteAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:380:12
[INFO] [stdout]     |
[INFO] [stdout] 380 | pub struct RewriteAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RedirectAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:397:12
[INFO] [stdout]     |
[INFO] [stdout] 397 | pub struct RedirectAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_redirect_status` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:405:4
[INFO] [stdout]     |
[INFO] [stdout] 405 | fn default_redirect_status() -> u16 { 302 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CustomResponseAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:409:12
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub struct CustomResponseAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_content_type` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:423:4
[INFO] [stdout]     |
[INFO] [stdout] 423 | fn default_content_type() -> String { "text/plain".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookVerifyAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:427:12
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub struct WebhookVerifyAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompressAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:439:12
[INFO] [stdout]     |
[INFO] [stdout] 439 | pub struct CompressAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_algorithm` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:451:4
[INFO] [stdout]     |
[INFO] [stdout] 451 | fn default_algorithm() -> String { "gzip".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_min_size` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:452:4
[INFO] [stdout]     |
[INFO] [stdout] 452 | fn default_min_size() -> usize { 1024 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_compress_types` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:453:4
[INFO] [stdout]     |
[INFO] [stdout] 453 | fn default_compress_types() -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CacheAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:463:12
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct CacheAction {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_cache_key` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:474:4
[INFO] [stdout]     |
[INFO] [stdout] 474 | fn default_cache_key() -> String { "$method:$path".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_cache_methods` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:475:4
[INFO] [stdout]     |
[INFO] [stdout] 475 | fn default_cache_methods() -> Vec<String> { vec!["GET".to_string()] }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimeoutAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:479:12
[INFO] [stdout]     |
[INFO] [stdout] 479 | pub struct TimeoutAction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DenyAction` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:486:12
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub struct DenyAction {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_deny_status` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:495:4
[INFO] [stdout]     |
[INFO] [stdout] 495 | fn default_deny_status() -> u16 { 403 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_deny_message` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:496:4
[INFO] [stdout]     |
[INFO] [stdout] 496 | fn default_deny_message() -> String { "Access denied".to_string() }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `PolicyRateLimiter` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:502:6
[INFO] [stdout]     |
[INFO] [stdout] 502 | type PolicyRateLimiter = RateLimiter<String, DefaultKeyedStateStore<String>, DefaultClock, NoOpMiddleware>;
[INFO] [stdout]     |      ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolicyEngine` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:505:12
[INFO] [stdout]     |
[INFO] [stdout] 505 | pub struct PolicyEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompiledPattern` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:517:8
[INFO] [stdout]     |
[INFO] [stdout] 517 | struct CompiledPattern {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:525:12
[INFO] [stdout]     |
[INFO] [stdout] 523 | impl PolicyEngine {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 524 |     /// Create a new policy engine with default config
[INFO] [stdout] 525 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 534 |     pub fn load_from_file(&self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 543 |     pub fn load_from_string(&self, yaml: &str) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn set_config(&self, mut config: PolicyConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn config(&self) -> PolicyConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 588 |     pub fn evaluate(&self, ctx: &RequestContext) -> (PolicyDecision, RequestModifications, ResponseModifications) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     fn matches_policy(&self, ctx: &RequestContext, policy: &Policy, pattern: &CompiledPattern) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     fn apply_actions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 800 |     fn check_rate_limit(&self, ctx: &RequestContext, config: &RateLimitAction) -> Option<PolicyDecision> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 831 |     fn check_auth(&self, ctx: &RequestContext, config: &AuthAction) -> Option<PolicyDecision> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 886 |     pub fn get_response_modifications(&self, ctx: &RequestContext) -> ResponseModifications {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `glob_to_regex` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:922:4
[INFO] [stdout]     |
[INFO] [stdout] 922 | fn glob_to_regex(pattern: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cidr_contains` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:950:4
[INFO] [stdout]     |
[INFO] [stdout] 950 | fn cidr_contains(cidr: &str, ip: IpAddr) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HeaderOperation` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:19:10
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub enum HeaderOperation {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeaderRule` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct HeaderRule {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PathRewriteRule` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct PathRewriteRule {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `QueryRule` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct QueryRule {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BodyTransform` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub enum BodyTransform {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `JsonPatchOp` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct JsonPatchOp {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleCondition` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/transform.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct RuleCondition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HeaderCondition` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct HeaderCondition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestTransform` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct RequestTransform {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResponseTransform` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub struct ResponseTransform {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformConfig` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct TransformConfig {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn default_true() -> bool { true }
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformContext` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:164:12
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub struct TransformContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformEngine` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:184:12
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub struct TransformEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | impl TransformEngine {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 192 |     /// Create a new transformation engine
[INFO] [stdout] 193 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn add_config(&self, key: &str, config: TransformConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn remove_config(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn get_config(&self, tunnel_id: &str, path: &str) -> Option<TransformConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn transform_request_headers(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn transform_path(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn transform_query(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn transform_response_headers(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     fn interpolate(&self, template: &str, ctx: &TransformContext) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 430 |     fn check_request_condition(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     fn check_response_condition(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     fn compile_pattern(&self, pattern: &str) -> Option<Regex> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 526 |     fn get_pattern(&self, pattern: &str) -> Option<Regex> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedTransformEngine` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:544:10
[INFO] [stdout]     |
[INFO] [stdout] 544 | pub type SharedTransformEngine = Arc<TransformEngine>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransformBuilder` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:547:12
[INFO] [stdout]     |
[INFO] [stdout] 547 | pub struct TransformBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:553:12
[INFO] [stdout]     |
[INFO] [stdout] 551 | impl TransformBuilder {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 552 |     /// Create a new builder
[INFO] [stdout] 553 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 560 |     pub fn add_request_header(mut self, name: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     pub fn remove_request_header(mut self, name: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn add_response_header(mut self, name: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 599 |     pub fn enable_cors(mut self, origin: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 630 |     pub fn add_security_headers(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 669 |     pub fn rewrite_path(mut self, pattern: &str, replacement: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 679 |     pub fn strip_prefix(mut self, prefix: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 690 |     pub fn add_prefix(mut self, prefix: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 700 |     pub fn build(self) -> TransformConfig {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RewriteAction` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/url_rewrite.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum RewriteAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MatchType` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/url_rewrite.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum MatchType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MatchCondition` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/url_rewrite.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct MatchCondition {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_match_type` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/url_rewrite.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn default_match_type() -> MatchType {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RewriteRule` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/url_rewrite.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct RewriteRule {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:115:4
[INFO] [stdout]     |
[INFO] [stdout] 115 | fn default_true() -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RewriteResult` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:121:10
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub enum RewriteResult {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RewriteContext` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub struct RewriteContext {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_headers`, `with_variables`, and `parse_query` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:163:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | impl RewriteContext {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 162 |     /// Create a new context from request parts
[INFO] [stdout] 163 |     pub fn new(method: &str, path: &str, query: Option<&str>, host: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn with_headers(mut self, headers: HashMap<String, String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn with_variables(mut self, variables: HashMap<String, String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     fn parse_query(query: &str) -> HashMap<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RewriteEngine` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:207:12
[INFO] [stdout]     |
[INFO] [stdout] 207 | pub struct RewriteEngine {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl RewriteEngine {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 215 |     /// Create a new rewrite engine
[INFO] [stdout] 216 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn add_rules(&self, key: &str, mut rules: Vec<RewriteRule>) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn remove_rules(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn evaluate(&self, key: &str, ctx: &RewriteContext) -> RewriteResult {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 280 |     fn check_conditions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     fn check_condition(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     fn apply_rule(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 438 |     fn split_path_query(url: &str) -> (String, Option<String>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     fn interpolate(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 486 |     fn compile_pattern(&self, pattern: &str, case_insensitive: bool) -> Option<Regex> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 510 |     fn get_pattern(&self, pattern: &str, case_insensitive: bool) -> Option<Regex> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedRewriteEngine` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:530:10
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub type SharedRewriteEngine = Arc<RewriteEngine>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleBuilder` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:533:12
[INFO] [stdout]     |
[INFO] [stdout] 533 | pub struct RuleBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:539:12
[INFO] [stdout]     |
[INFO] [stdout] 537 | impl RuleBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 538 |     /// Create a new rule builder
[INFO] [stdout] 539 |     pub fn new(name: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 562 |     pub fn priority(mut self, priority: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn path_prefix(mut self, prefix: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 579 |     pub fn path_exact(mut self, path: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn path_regex(mut self, pattern: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 601 |     pub fn host(mut self, host: &str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 612 |     pub fn method(mut self, method: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 618 |     pub fn rewrite_to(mut self, target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 625 |     pub fn redirect_permanent(mut self, target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     pub fn redirect_temporary(mut self, target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 639 |     pub fn proxy_to(mut self, target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 646 |     pub fn set_header(mut self, name: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn continue_rules(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 658 |     pub fn build(self) -> RewriteRule {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HmacSha256` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/webhooks.rs:22:6
[INFO] [stdout]    |
[INFO] [stdout] 22 | type HmacSha256 = Hmac<Sha256>;
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HmacSha1` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/webhooks.rs:23:6
[INFO] [stdout]    |
[INFO] [stdout] 23 | type HmacSha1 = Hmac<Sha1>;
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WebhookProvider` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/webhooks.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum WebhookProvider {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookConfig` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/webhooks.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct WebhookConfig {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VerificationResult` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/webhooks.rs:97:10
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub enum VerificationResult {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:116:12
[INFO] [stdout]     |
[INFO] [stdout] 114 | impl VerificationResult {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] 115 |     /// Check if verification passed
[INFO] [stdout] 116 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WebhookVerifier` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub struct WebhookVerifier {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 127 | impl WebhookVerifier {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 128 |     /// Create a new webhook verifier
[INFO] [stdout] 129 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn add_config(&self, key: &str, config: WebhookConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn remove_config(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn get_config(&self, tunnel_id: &str, path: &str) -> Option<WebhookConfig> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn verify(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     fn verify_github(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     fn verify_stripe(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     fn verify_slack(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     fn verify_twilio(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 361 |     fn verify_shopify(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     fn verify_discord(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 446 |     fn verify_hmac_sha256(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     fn verify_hmac_sha1(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 484 |     fn verify_hmac_signature<M>(&self, secret: &str, data: &[u8], signature: &str) -> VerificationResult
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 507 |     fn verify_hmac_signature_base64<M>(&self, secret: &str, data: &[u8], signature: &str) -> VerificationResult
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedWebhookVerifier` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:539:10
[INFO] [stdout]     |
[INFO] [stdout] 539 | pub type SharedWebhookVerifier = Arc<WebhookVerifier>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `github_webhook` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:542:8
[INFO] [stdout]     |
[INFO] [stdout] 542 | pub fn github_webhook(secret: &str) -> WebhookConfig {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stripe_webhook` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:552:8
[INFO] [stdout]     |
[INFO] [stdout] 552 | pub fn stripe_webhook(secret: &str) -> WebhookConfig {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `slack_webhook` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:562:8
[INFO] [stdout]     |
[INFO] [stdout] 562 | pub fn slack_webhook(secret: &str) -> WebhookConfig {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `discord_webhook` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:572:8
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub fn discord_webhook(public_key: &str) -> WebhookConfig {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WildcardPattern` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WildcardPattern {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_true` is never used
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn default_true() -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WildcardMatch` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct WildcardMatch {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompiledPattern` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | struct CompiledPattern {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WildcardRouter` is never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct WildcardRouter {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl WildcardRouter {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  80 |     /// Create a new wildcard router
[INFO] [stdout]  81 |     pub fn new() -> Arc<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn with_cache_size(max_cache_size: usize) -> Arc<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn add_pattern(&self, pattern: WildcardPattern) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn remove_pattern(&self, pattern: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn add_patterns(&self, patterns: Vec<WildcardPattern>) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn match_hostname(&self, hostname: &str) -> Option<WildcardMatch> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn list_patterns(&self) -> Vec<WildcardPattern> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn cache_stats(&self) -> (usize, usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     fn compile_pattern(pattern: &WildcardPattern) -> Result<CompiledPattern, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     fn pattern_to_regex(pattern: &str) -> Result<String, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedWildcardRouter` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:282:10
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub type SharedWildcardRouter = Arc<WildcardRouter>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PatternBuilder` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:285:12
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub struct PatternBuilder {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `priority`, `metadata`, `disabled`, and `build` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl PatternBuilder {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 290 |     /// Create a new pattern builder
[INFO] [stdout] 291 |     pub fn new(pattern: &str, target: &str) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn priority(mut self, priority: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn metadata(mut self, key: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn disabled(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn build(self) -> WildcardPattern {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_domain` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn validate_domain(domain: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_config` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl BasicAuth {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn remove_config(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedBasicAuth` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/basic_auth.rs:290:10
[INFO] [stdout]     |
[INFO] [stdout] 290 | pub type SharedBasicAuth = Arc<BasicAuth>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Timeout` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub enum CallResult {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 121 |     Timeout,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CallResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:367:12
[INFO] [stdout]     |
[INFO] [stdout] 231 | impl CircuitBreaker {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn reset(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_config`, `all_stats`, `get_open_circuits`, `reset_all`, `remove`, and `cleanup_inactive` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:483:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl CircuitBreakerRegistry {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 483 |     pub fn set_config(&self, backend_id: &str, config: CircuitBreakerConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub fn all_stats(&self) -> HashMap<String, CircuitStats> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn get_open_circuits(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 509 |     pub fn reset_all(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 516 |     pub fn remove(&self, backend_id: &str) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn cleanup_inactive(&self, max_age: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CircuitGuard` is never constructed
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct CircuitGuard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `try_new`, `success`, `failure`, and `elapsed` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/circuit_breaker.rs:565:12
[INFO] [stdout]     |
[INFO] [stdout] 563 | impl CircuitGuard {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] 564 |     /// Create a new guard, returns None if circuit is open
[INFO] [stdout] 565 |     pub fn try_new(breaker: Arc<CircuitBreaker>) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn success(mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 584 |     pub fn failure(mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub fn elapsed(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_tunnel_config` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout]  91 | impl ErrorPageManager {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn remove_tunnel_config(&self, tunnel_id: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:380:12
[INFO] [stdout]     |
[INFO] [stdout] 378 | impl ErrorPageManager {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 379 |     /// Generate a 400 Bad Request page
[INFO] [stdout] 380 |     pub fn bad_request(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 397 |     pub fn unauthorized(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 414 |     pub fn forbidden(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn service_unavailable(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn gateway_timeout(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 539 |     pub fn tunnel_not_found(&self, subdomain: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 556 |     pub fn tunnel_offline(&self, tunnel_id: &str, request_id: Option<&str>) -> (String, String, u16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedErrorPageManager` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/error_pages.rs:574:10
[INFO] [stdout]     |
[INFO] [stdout] 574 | pub type SharedErrorPageManager = Arc<ErrorPageManager>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `event_id`, `status`, `timestamp`, `response_status`, and `response_body` are never read
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub struct DeliveryRecord {
[INFO] [stdout]     |            -------------- fields in this struct
[INFO] [stdout] 231 |     /// Event ID
[INFO] [stdout] 232 |     pub event_id: String,
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub status: DeliveryStatus,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 237 |     /// Timestamp
[INFO] [stdout] 238 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 239 |     /// Response status code (if delivered)
[INFO] [stdout] 240 |     pub response_status: Option<u16>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 241 |     /// Response body preview
[INFO] [stdout] 242 |     pub response_body: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DeliveryRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedEventWebhooks` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:501:10
[INFO] [stdout]     |
[INFO] [stdout] 501 | pub type SharedEventWebhooks = Arc<EventWebhooks>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `subscribe_all` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/event_webhooks.rs:540:12
[INFO] [stdout]     |
[INFO] [stdout] 508 | impl EndpointBuilder {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 540 |     pub fn subscribe_all(mut self, events: Vec<EventType>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `headers` and `body` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Response {
[INFO] [stdout]    |     -------- fields in this variant
[INFO] [stdout] ...
[INFO] [stdout] 58 |         headers: Vec<(String, String)>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 59 |         /// Response body
[INFO] [stdout] 60 |         body: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `location` and `permanent` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 63 |     Redirect {
[INFO] [stdout]    |     -------- fields in this variant
[INFO] [stdout] 64 |         /// Target URL
[INFO] [stdout] 65 |         location: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 66 |         /// Permanent (301) or temporary (302)
[INFO] [stdout] 67 |         permanent: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `wildcard_router` and `event_webhooks` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/middleware.rs:82:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct MiddlewarePipeline {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 82 |     wildcard_router: Arc<WildcardRouter>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 83 |     /// Event webhooks
[INFO] [stdout] 84 |     event_webhooks: Arc<EventWebhooks>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> crates/nlag-edge/src/middleware.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  87 | impl MiddlewarePipeline {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_components(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn basic_auth(&self) -> &BasicAuth {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 134 |     pub fn rewrite(&self) -> &RewriteEngine {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn error_pages(&self) -> &ErrorPageManager {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn event_webhooks(&self) -> &EventWebhooks {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn wildcard_router(&self) -> &WildcardRouter {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn route_wildcard(&self, host: &str) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn emit_event(&self, event_type: EventType, tunnel_id: TunnelId, metadata: HashMap<String, serde_json::Value>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Denied`, `RateLimited`, `AuthRequired`, `InvalidConfig`, and `IpBlocked` are never constructed
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub enum PolicyError {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] 54 |     #[error("Policy denied: {0}")]
[INFO] [stdout] 55 |     Denied(String),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     RateLimited(String),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     AuthRequired(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     InvalidConfig(String),
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     IpBlocked(String),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolicyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:84:25
[INFO] [stdout]    |
[INFO] [stdout] 84 |     Deny { status: u16, message: String },
[INFO] [stdout]    |     ----                ^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `url` and `status` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:86:16
[INFO] [stdout]    |
[INFO] [stdout] 86 |     Redirect { url: String, status: u16 },
[INFO] [stdout]    |     --------   ^^^          ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `auth_type` and `realm` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:88:19
[INFO] [stdout]    |
[INFO] [stdout] 88 |     RequireAuth { auth_type: String, realm: String },
[INFO] [stdout]    |     -----------   ^^^^^^^^^          ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     fields in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `retry_after` is never read
[INFO] [stdout]   --> crates/nlag-edge/src/policy.rs:90:19
[INFO] [stdout]    |
[INFO] [stdout] 90 |     RateLimited { retry_after: u64 },
[INFO] [stdout]    |     -----------   ^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `subdomain` is never read
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:107:9
[INFO] [stdout]     |
[INFO] [stdout]  95 | pub struct RequestContext {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub subdomain: Option<String>,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `add_headers` and `remove_headers` are never read
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub struct ResponseModifications {
[INFO] [stdout]     |            --------------------- fields in this struct
[INFO] [stdout] 128 |     /// Headers to add
[INFO] [stdout] 129 |     pub add_headers: HashMap<String, String>,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 130 |     /// Headers to remove
[INFO] [stdout] 131 |     pub remove_headers: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ResponseModifications` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `methods` is never read
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:157:9
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct CachingSettings {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub methods: Vec<String>,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `CachingSettings` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `load_from_file`, `config`, and `get_response_modifications` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/policy.rs:534:12
[INFO] [stdout]     |
[INFO] [stdout] 523 | impl PolicyEngine {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 534 |     pub fn load_from_file(&self, path: &Path) -> Result<()> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn config(&self) -> PolicyConfig {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 886 |     pub fn get_response_modifications(&self, ctx: &RequestContext) -> ResponseModifications {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_config` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | impl TransformEngine {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn remove_config(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedTransformEngine` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:544:10
[INFO] [stdout]     |
[INFO] [stdout] 544 | pub type SharedTransformEngine = Arc<TransformEngine>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_response_header` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/transform.rs:586:12
[INFO] [stdout]     |
[INFO] [stdout] 551 | impl TransformBuilder {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 586 |     pub fn add_response_header(mut self, name: &str, value: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_variables` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:186:12
[INFO] [stdout]     |
[INFO] [stdout] 161 | impl RewriteContext {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn with_variables(mut self, variables: HashMap<String, String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_rules` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:246:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl RewriteEngine {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn remove_rules(&self, key: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedRewriteEngine` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:530:10
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub type SharedRewriteEngine = Arc<RewriteEngine>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `path_exact`, `redirect_temporary`, and `continue_rules` are never used
[INFO] [stdout]    --> crates/nlag-edge/src/url_rewrite.rs:579:12
[INFO] [stdout]     |
[INFO] [stdout] 537 | impl RuleBuilder {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 579 |     pub fn path_exact(mut self, path: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     pub fn redirect_temporary(mut self, target: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn continue_rules(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:105:19
[INFO] [stdout]     |
[INFO] [stdout] 105 |     MissingHeader(String),
[INFO] [stdout]     |     ------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 105 -     MissingHeader(String),
[INFO] [stdout] 105 +     MissingHeader(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:107:19
[INFO] [stdout]     |
[INFO] [stdout] 107 |     InvalidFormat(String),
[INFO] [stdout]     |     ------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 107 -     InvalidFormat(String),
[INFO] [stdout] 107 +     InvalidFormat(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:109:11
[INFO] [stdout]     |
[INFO] [stdout] 109 |     Error(String),
[INFO] [stdout]     |     ----- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 109 -     Error(String),
[INFO] [stdout] 109 +     Error(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedWebhookVerifier` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:539:10
[INFO] [stdout]     |
[INFO] [stdout] 539 | pub type SharedWebhookVerifier = Arc<WebhookVerifier>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `discord_webhook` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/webhooks.rs:572:8
[INFO] [stdout]     |
[INFO] [stdout] 572 | pub fn discord_webhook(public_key: &str) -> WebhookConfig {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pattern` and `hostname` are never read
[INFO] [stdout]   --> crates/nlag-edge/src/wildcard.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct WildcardMatch {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 41 |     /// The matched pattern
[INFO] [stdout] 42 |     pub pattern: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub hostname: String,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WildcardMatch` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:206:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl WildcardRouter {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `SharedWildcardRouter` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:282:10
[INFO] [stdout]     |
[INFO] [stdout] 282 | pub type SharedWildcardRouter = Arc<WildcardRouter>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `disabled` is never used
[INFO] [stdout]    --> crates/nlag-edge/src/wildcard.rs:316:12
[INFO] [stdout]     |
[INFO] [stdout] 289 | impl PatternBuilder {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn disabled(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 24s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: quinn v0.11.9, quinn-udp v0.5.14
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 12`
[INFO] running `Command { std: "docker" "inspect" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8", kill_on_drop: false }`
[INFO] [stdout] a56eb5392f40b031cf111fb3594b56a78f0de4686114cdcbb244c52e2d06f3c8
