[INFO] cloning repository https://github.com/Boluwatife-AJB/bastion
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Boluwatife-AJB/bastion" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoluwatife-AJB%2Fbastion", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoluwatife-AJB%2Fbastion'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 32081a67726deb19f39eef262b16127ecc58cf1a
[INFO] checking Boluwatife-AJB/bastion against dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8 for pr-133502-26
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoluwatife-AJB%2Fbastion" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Boluwatife-AJB/bastion
[INFO] finished tweaking git repo https://github.com/Boluwatife-AJB/bastion
[INFO] tweaked toml for git repo https://github.com/Boluwatife-AJB/bastion written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Boluwatife-AJB/bastion on toolchain dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Boluwatife-AJB/bastion 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" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded tokio-test v0.4.5
[INFO] [stderr]   Downloaded hickory-resolver v0.26.1
[INFO] [stderr]   Downloaded page_size v0.6.0
[INFO] [stderr]   Downloaded futures-timer v3.0.4
[INFO] [stderr]   Downloaded criterion-plot v0.8.2
[INFO] [stderr]   Downloaded hickory-net v0.26.1
[INFO] [stderr]   Downloaded prefix-trie v0.8.4
[INFO] [stderr]   Downloaded alloca v0.4.0
[INFO] [stderr]   Downloaded moka v0.12.15
[INFO] [stderr]   Downloaded criterion v0.8.2
[INFO] [stderr]   Downloaded comfy-table v7.2.2
[INFO] [stderr]   Downloaded hickory-proto v0.26.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:1fa6594d87c8fa7b311925a7a77a16f539833322d9dfba4ce891f211db2f90b1" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78
[INFO] running `Command { std: "docker" "start" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78", 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" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78" "/opt/rustwide/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78", 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" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78" "/opt/rustwide/cargo-home/bin/cargo" "+dfbea5bc945a9d7ff017d3d4bfbd1af9295fe5b8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking http v1.4.1
[INFO] [stderr]    Compiling cc v1.2.62
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]    Compiling aws-lc-rs v1.17.0
[INFO] [stderr]     Checking either v1.16.0
[INFO] [stderr]     Checking rand_core v0.10.1
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]    Compiling serde_json v1.0.150
[INFO] [stderr]     Checking simd-adler32 v0.3.9
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]    Compiling rustls v0.23.40
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]     Checking chacha20 v0.10.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]     Checking compression-core v0.4.32
[INFO] [stderr]     Checking rustls-native-certs v0.8.3
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking rand v0.10.1
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking rand_core v0.9.5
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking prefix-trie v0.8.4
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking data-encoding v2.11.0
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking clap_builder v4.6.0
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking compression-codecs v0.4.38
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking dashmap v6.2.1
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking zerocopy v0.8.48
[INFO] [stderr]     Checking console v0.16.3
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking moka v0.12.15
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking csv-core v0.1.13
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]     Checking futures-timer v3.0.4
[INFO] [stderr]    Compiling aws-lc-sys v0.41.0
[INFO] [stderr]    Compiling alloca v0.4.0
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]     Checking unicode-segmentation v1.13.2
[INFO] [stderr]     Checking unit-prefix v0.5.2
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking matchers v0.2.0
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking tracing-subscriber v0.3.23
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking page_size v0.6.0
[INFO] [stderr]     Checking humantime v2.3.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking hickory-proto v0.26.1
[INFO] [stderr]     Checking indicatif v0.18.4
[INFO] [stderr]     Checking criterion-plot v0.8.2
[INFO] [stderr]     Checking comfy-table v7.2.2
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking tokio-util v0.7.18
[INFO] [stderr]     Checking async-compression v0.4.42
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking hickory-net v0.26.1
[INFO] [stderr]     Checking deadpool v0.12.3
[INFO] [stderr]     Checking h2 v0.4.14
[INFO] [stderr]     Checking tokio-stream v0.1.18
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hickory-resolver v0.26.1
[INFO] [stderr]     Checking tokio-test v0.4.5
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking criterion v0.8.2
[INFO] [stderr]     Checking governor v0.10.4
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking wiremock v0.6.5
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.4
[INFO] [stderr]     Checking bastion v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::config::RunMode`
[INFO] [stdout]  --> src/reporter/terminal.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 |   use crate::config::RunMode;
[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: `warn`
[INFO] [stdout]  --> src/metrics/aggregator.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MissedTickBehavior`
[INFO] [stdout]  --> src/scheduler.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::time::{self, MissedTickBehavior};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::config::RunMode`
[INFO] [stdout]  --> src/reporter/terminal.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 |   use crate::config::RunMode;
[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: `warn`
[INFO] [stdout]  --> src/metrics/aggregator.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{debug, info, warn};
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::metrics::snapshot::MetricsSnapshot`
[INFO] [stdout]  --> src/thresholds.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::metrics::snapshot::MetricsSnapshot;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BastionError` and `Result`
[INFO] [stdout]  --> src/thresholds.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::error::{BastionError, Result};
[INFO] [stdout]   |                    ^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p99Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:7:3
[INFO] [stdout]   |
[INFO] [stdout] 7 |   p99Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P99lt`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p95Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:8:3
[INFO] [stdout]   |
[INFO] [stdout] 8 |   p95Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P95lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p90Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:9:3
[INFO] [stdout]   |
[INFO] [stdout] 9 |   p90Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P90lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p50Lt` should have an upper camel case name
[INFO] [stdout]   --> src/thresholds.rs:10:3
[INFO] [stdout]    |
[INFO] [stdout] 10 |   p50Lt(Duration),
[INFO] [stdout]    |   ^^^^^ help: convert the identifier to upper camel case: `P50lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MissedTickBehavior`
[INFO] [stdout]  --> src/scheduler.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::time::{self, MissedTickBehavior};
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::metrics::snapshot::MetricsSnapshot`
[INFO] [stdout]  --> src/thresholds.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::metrics::snapshot::MetricsSnapshot;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BastionError` and `Result`
[INFO] [stdout]  --> src/thresholds.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::error::{BastionError, Result};
[INFO] [stdout]   |                    ^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p99Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:7:3
[INFO] [stdout]   |
[INFO] [stdout] 7 |   p99Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P99lt`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p95Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:8:3
[INFO] [stdout]   |
[INFO] [stdout] 8 |   p95Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P95lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p90Lt` should have an upper camel case name
[INFO] [stdout]  --> src/thresholds.rs:9:3
[INFO] [stdout]   |
[INFO] [stdout] 9 |   p90Lt(Duration),
[INFO] [stdout]   |   ^^^^^ help: convert the identifier to upper camel case: `P90lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `p50Lt` should have an upper camel case name
[INFO] [stdout]   --> src/thresholds.rs:10:3
[INFO] [stdout]    |
[INFO] [stdout] 10 |   p50Lt(Duration),
[INFO] [stdout]    |   ^^^^^ help: convert the identifier to upper camel case: `P50lt`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/metrics/snapshot.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut status_counts = std::collections::HashMap::new();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/metrics/snapshot.rs:148:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let mut status_counts = std::collections::HashMap::new();
[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: unused variable: `errors`
[INFO] [stdout]    --> src/engine.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         let errors = progress.errors.load(std::sync::atomic::Ordering::Relaxed);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_errors`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_time_series` is never used
[INFO] [stdout]    --> src/reporter/terminal.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn print_time_series(windows: &[WindowSnapshot], show_last: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_spike_analysis` is never used
[INFO] [stdout]    --> src/reporter/terminal.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn print_spike_analysis(summary: &RunSummary, windows: &[WindowSnapshot]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatencyHistogram` is never constructed
[INFO] [stdout]  --> src/metrics/histogram.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct LatencyHistogram {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/metrics/histogram.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LatencyHistogram {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 10 |   /// Creates a new histogram tracking nanoseconds with 3 significant figures
[INFO] [stdout] 11 |   pub fn new() -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |   pub fn record(&mut self, duration: Duration) {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |   pub fn percentile(&self, pct: f64) -> Duration {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |   pub fn min(&self) -> Duration {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |   pub fn max(&self) -> Duration {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |   pub fn mean(&self) -> Duration {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |   pub fn stddev(&self) -> Duration {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn count(&self) -> u64 {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |   pub fn merge(&mut self, other: &LatencyHistogram) {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkerMetrics` is never constructed
[INFO] [stdout]  --> src/metrics/collector.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct WorkerMetrics {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record_success`, `record_error`, and `record_timing` are never used
[INFO] [stdout]   --> src/metrics/collector.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl WorkerMetrics {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 29 |   pub fn new() -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn record_success(&mut self, latency: Duration, status: u16, bytes: u64) {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |   pub fn record_error(&mut self, latency: Duration) {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |   pub fn record_timing(&mut self, timing:RequestTiming) {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_historgram` is never used
[INFO] [stdout]   --> src/metrics/snapshot.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl LatencySnapshot {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 42 |   pub fn from_historgram(h: &LatencyHistogram) -> Self {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_workers` is never used
[INFO] [stdout]   --> src/metrics/snapshot.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl MetricsSnapshot {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 71 |   /// Build a snapshot by merging all per-worker metrics
[INFO] [stdout] 72 |   pub fn from_workers(workers: Vec<WorkerMetrics>, total_duration: Duration) -> Self {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `completed_at` and `protocol` are never read
[INFO] [stdout]   --> src/metrics/event.rs:6:7
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RequestEvent {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  6 |   pub completed_at: Instant,
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |   pub protocol: HttpProtocol,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RequestEvent` 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 `start` is never read
[INFO] [stdout]    --> src/metrics/window.rs:100:7
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct WindowSnapshot {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout]  99 |   pub window_index: u64,
[INFO] [stdout] 100 |   pub start: Instant,
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WindowSnapshot` 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: multiple fields are never read
[INFO] [stdout]   --> src/metrics/summary.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct RunSummary {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 37 |   pub window_count: usize,
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |   pub total_duration: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 42 |   pub avg_rps: f64,
[INFO] [stdout] 43 |   pub peak_rps: f64,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 44 |   pub min_rps: f64,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 45 |   pub avg_p99: Duration,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 46 |   pub peak_p99: Duration,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 47 |   pub error_rate: f64,
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 48 |   pub spike_count: usize,
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 49 |   pub spike_threshold: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RunSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_client` is never used
[INFO] [stdout]  --> src/http/client.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn build_client(config: &Config) -> Result<Client> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionTiming` is never constructed
[INFO] [stdout]   --> src/http/connector.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ConnectionTiming {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `total_overhead` is never used
[INFO] [stdout]   --> src/http/connector.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ConnectionTiming {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 25 |   pub fn total_overhead(&self) -> Duration {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimingSender` is never used
[INFO] [stdout]   --> src/http/connector.rs:35:10
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub type TimingSender = tokio::sync::oneshot::Sender<ConnectionTiming>;
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimingReceiver` is never used
[INFO] [stdout]   --> src/http/connector.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub type TimingReceiver = tokio::sync::oneshot::Receiver<ConnectionTiming>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestTiming` is never constructed
[INFO] [stdout]  --> src/http/timing.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RequestTiming {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `total_latency`, `ttfb`, `transfer_time`, and `scheduler_delay` are never used
[INFO] [stdout]   --> src/http/timing.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl RequestTiming {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 26 |   /// Total latency from scheduler's intended fire time
[INFO] [stdout] 27 |   pub fn total_latency(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |   pub fn ttfb(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |   pub fn transfer_time(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |   pub fn scheduler_delay(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_timeout` and `http2_max_concurrent` are never read
[INFO] [stdout]   --> src/http/pool.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PoolConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |   pub connection_timeout: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |   pub http2: bool,
[INFO] [stdout] 19 |   pub http2_max_concurrent: Option<u32>,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PoolConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RateLimiter` and `Metrics` are never constructed
[INFO] [stdout]   --> src/error.rs:13:3
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum BastionError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |   RateLimiter(String),
[INFO] [stdout]    |   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |   Metrics(String),
[INFO] [stdout]    |   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BastionError` 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 `follow_redirects` is never read
[INFO] [stdout]   --> src/config.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |   pub follow_redirects: bool,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_request` is never used
[INFO] [stdout]    --> src/worker.rs:100:10
[INFO] [stdout]     |
[INFO] [stdout] 100 | async fn execute_request(worker_id: usize, config: &Config, client: &BastionClient, item: &WorkItem, body_bytes: Option<Bytes>,) ->...
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request_pub` is never used
[INFO] [stdout]    --> src/worker.rs:172:14
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub async fn send_request_pub(client: &reqwest::Client, config: &Config) -> Result<(u16, u64)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Threshold` is never used
[INFO] [stdout]  --> src/thresholds.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Threshold {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ThresholdResult` is never constructed
[INFO] [stdout]   --> src/thresholds.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ThresholdResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `errors`
[INFO] [stdout]    --> src/engine.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         let errors = progress.errors.load(std::sync::atomic::Ordering::Relaxed);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_errors`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_time_series` is never used
[INFO] [stdout]    --> src/reporter/terminal.rs:163:8
[INFO] [stdout]     |
[INFO] [stdout] 163 | pub fn print_time_series(windows: &[WindowSnapshot], show_last: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_spike_analysis` is never used
[INFO] [stdout]    --> src/reporter/terminal.rs:215:8
[INFO] [stdout]     |
[INFO] [stdout] 215 | pub fn print_spike_analysis(summary: &RunSummary, windows: &[WindowSnapshot]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LatencyHistogram` is never constructed
[INFO] [stdout]  --> src/metrics/histogram.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct LatencyHistogram {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/metrics/histogram.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl LatencyHistogram {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 10 |   /// Creates a new histogram tracking nanoseconds with 3 significant figures
[INFO] [stdout] 11 |   pub fn new() -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |   pub fn record(&mut self, duration: Duration) {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |   pub fn percentile(&self, pct: f64) -> Duration {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |   pub fn min(&self) -> Duration {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |   pub fn max(&self) -> Duration {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |   pub fn mean(&self) -> Duration {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |   pub fn stddev(&self) -> Duration {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn count(&self) -> u64 {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |   pub fn merge(&mut self, other: &LatencyHistogram) {
[INFO] [stdout]    |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorkerMetrics` is never constructed
[INFO] [stdout]  --> src/metrics/collector.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct WorkerMetrics {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record_success`, `record_error`, and `record_timing` are never used
[INFO] [stdout]   --> src/metrics/collector.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl WorkerMetrics {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 29 |   pub fn new() -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |   pub fn record_success(&mut self, latency: Duration, status: u16, bytes: u64) {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |   pub fn record_error(&mut self, latency: Duration) {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |   pub fn record_timing(&mut self, timing:RequestTiming) {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_historgram` is never used
[INFO] [stdout]   --> src/metrics/snapshot.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | impl LatencySnapshot {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 42 |   pub fn from_historgram(h: &LatencyHistogram) -> Self {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_workers` is never used
[INFO] [stdout]   --> src/metrics/snapshot.rs:72:10
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl MetricsSnapshot {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 71 |   /// Build a snapshot by merging all per-worker metrics
[INFO] [stdout] 72 |   pub fn from_workers(workers: Vec<WorkerMetrics>, total_duration: Duration) -> Self {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `completed_at` and `protocol` are never read
[INFO] [stdout]   --> src/metrics/event.rs:6:7
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RequestEvent {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  6 |   pub completed_at: Instant,
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |   pub protocol: HttpProtocol,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RequestEvent` 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 `start` is never read
[INFO] [stdout]    --> src/metrics/window.rs:100:7
[INFO] [stdout]     |
[INFO] [stdout]  98 | pub struct WindowSnapshot {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout]  99 |   pub window_index: u64,
[INFO] [stdout] 100 |   pub start: Instant,
[INFO] [stdout]     |       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WindowSnapshot` 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: multiple fields are never read
[INFO] [stdout]   --> src/metrics/summary.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct RunSummary {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 37 |   pub window_count: usize,
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |   pub total_duration: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 42 |   pub avg_rps: f64,
[INFO] [stdout] 43 |   pub peak_rps: f64,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 44 |   pub min_rps: f64,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 45 |   pub avg_p99: Duration,
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 46 |   pub peak_p99: Duration,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 47 |   pub error_rate: f64,
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 48 |   pub spike_count: usize,
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 49 |   pub spike_threshold: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RunSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_client` is never used
[INFO] [stdout]  --> src/http/client.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn build_client(config: &Config) -> Result<Client> {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConnectionTiming` is never constructed
[INFO] [stdout]   --> src/http/connector.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct ConnectionTiming {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `total_overhead` is never used
[INFO] [stdout]   --> src/http/connector.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl ConnectionTiming {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 25 |   pub fn total_overhead(&self) -> Duration {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimingSender` is never used
[INFO] [stdout]   --> src/http/connector.rs:35:10
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub type TimingSender = tokio::sync::oneshot::Sender<ConnectionTiming>;
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TimingReceiver` is never used
[INFO] [stdout]   --> src/http/connector.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub type TimingReceiver = tokio::sync::oneshot::Receiver<ConnectionTiming>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RequestTiming` is never constructed
[INFO] [stdout]  --> src/http/timing.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RequestTiming {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `total_latency`, `ttfb`, `transfer_time`, and `scheduler_delay` are never used
[INFO] [stdout]   --> src/http/timing.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl RequestTiming {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 26 |   /// Total latency from scheduler's intended fire time
[INFO] [stdout] 27 |   pub fn total_latency(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |   pub fn ttfb(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |   pub fn transfer_time(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |   pub fn scheduler_delay(&self) -> Option<Duration> {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `connection_timeout` and `http2_max_concurrent` are never read
[INFO] [stdout]   --> src/http/pool.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct PoolConfig {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |   pub connection_timeout: Duration,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |   pub http2: bool,
[INFO] [stdout] 19 |   pub http2_max_concurrent: Option<u32>,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PoolConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RateLimiter` and `Metrics` are never constructed
[INFO] [stdout]   --> src/error.rs:13:3
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum BastionError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 13 |   RateLimiter(String),
[INFO] [stdout]    |   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |   Metrics(String),
[INFO] [stdout]    |   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BastionError` 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 `follow_redirects` is never read
[INFO] [stdout]   --> src/config.rs:58:7
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct Config {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 58 |   pub follow_redirects: bool,
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `execute_request` is never used
[INFO] [stdout]    --> src/worker.rs:100:10
[INFO] [stdout]     |
[INFO] [stdout] 100 | async fn execute_request(worker_id: usize, config: &Config, client: &BastionClient, item: &WorkItem, body_bytes: Option<Bytes>,) ->...
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `send_request_pub` is never used
[INFO] [stdout]    --> src/worker.rs:172:14
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub async fn send_request_pub(client: &reqwest::Client, config: &Config) -> Result<(u16, u64)> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Threshold` is never used
[INFO] [stdout]  --> src/thresholds.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Threshold {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ThresholdResult` is never constructed
[INFO] [stdout]   --> src/thresholds.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct ThresholdResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 57.83s
[INFO] running `Command { std: "docker" "inspect" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78", kill_on_drop: false }`
[INFO] [stdout] 292c1a4c7a172959bca37313157c741aa02632c157c52914034a3f78d2b13e78
