[INFO] cloning repository https://github.com/sapessi/ocypode
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sapessi/ocypode" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsapessi%2Focypode", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsapessi%2Focypode'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 40e16182f0aac522a93cefe964e03452c27e43d6
[INFO] checking sapessi/ocypode against master#eeb94be79adc9df7a09ad0b2421f16e60e6d932c for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsapessi%2Focypode" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sapessi/ocypode
[INFO] finished tweaking git repo https://github.com/sapessi/ocypode
[INFO] tweaked toml for git repo https://github.com/sapessi/ocypode written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sapessi/ocypode on toolchain eeb94be79adc9df7a09ad0b2421f16e60e6d932c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sapessi/ocypode 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" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/sapessi/egui-dropdown.git`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded simple_moving_average v1.0.2
[INFO] [stderr]   Downloaded typename v0.1.2
[INFO] [stderr]   Downloaded snafu-derive v0.8.9
[INFO] [stderr]   Downloaded snafu v0.8.9
[INFO] [stderr]   Downloaded ehttp v0.5.0
[INFO] [stderr]   Downloaded ecolor v0.33.2
[INFO] [stderr]   Downloaded serde-jsonlines v0.7.0
[INFO] [stderr]   Downloaded colog v1.4.0
[INFO] [stderr]   Downloaded egui-wgpu v0.33.2
[INFO] [stderr]   Downloaded simetry v0.2.3
[INFO] [stderr]   Downloaded egui_extras v0.33.2
[INFO] [stderr]   Downloaded emath v0.33.2
[INFO] [stderr]   Downloaded eframe v0.33.2
[INFO] [stderr]   Downloaded uom v0.34.0
[INFO] [stderr]   Downloaded epaint v0.33.2
[INFO] [stderr]   Downloaded moxcms v0.7.10
[INFO] [stderr]   Downloaded egui_plot v0.34.0
[INFO] [stderr]   Downloaded egui-winit v0.33.2
[INFO] [stderr]   Downloaded egui_glow v0.33.2
[INFO] [stderr]   Downloaded typename_derive v0.1.4
[INFO] [stderr]   Downloaded egui v0.33.2
[INFO] [stderr]   Downloaded epaint_default_fonts v0.33.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2536fe9029dae5501eda46332ada29a2e276979ac64d37c8d51676089494512d
[INFO] running `Command { std: "docker" "start" "-a" "2536fe9029dae5501eda46332ada29a2e276979ac64d37c8d51676089494512d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2536fe9029dae5501eda46332ada29a2e276979ac64d37c8d51676089494512d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2536fe9029dae5501eda46332ada29a2e276979ac64d37c8d51676089494512d", kill_on_drop: false }`
[INFO] [stdout] 2536fe9029dae5501eda46332ada29a2e276979ac64d37c8d51676089494512d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6ab2df06797c27463ac08a89ea9071b28d9c9d4957a4e5484a3bc067826848b1
[INFO] running `Command { std: "docker" "start" "-a" "6ab2df06797c27463ac08a89ea9071b28d9c9d4957a4e5484a3bc067826848b1", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling cc v1.2.49
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling toml_parser v1.0.4
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling toml_datetime v0.7.3
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling quick-xml v0.37.5
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]    Compiling toml_edit v0.23.9
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking flate2 v1.1.5
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]    Compiling proc-macro-crate v3.4.0
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking memmap2 v0.9.9
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking epaint_default_fonts v0.33.2
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]    Compiling prettyplease v0.2.37
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking weezl v0.1.12
[INFO] [stderr]    Compiling regex-syntax v0.8.8
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking gif v0.14.1
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]     Checking image-webp v0.2.4
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking async-io v2.6.0
[INFO] [stderr]     Checking async-signal v0.2.13
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking async-process v2.5.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]    Compiling regex-automata v0.4.13
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]     Checking moxcms v0.7.10
[INFO] [stderr]     Checking wayland-protocols v0.32.9
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking tracing v0.1.43
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking emath v0.33.2
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking ecolor v0.33.2
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]    Compiling zvariant_utils v3.2.1
[INFO] [stderr]    Compiling quick-xml v0.36.2
[INFO] [stderr]     Checking icu_properties v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking epaint v0.33.2
[INFO] [stderr]    Compiling zvariant_derive v5.8.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking calloop v0.14.3
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.9
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.9
[INFO] [stderr]    Compiling zvariant v5.8.0
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]     Checking egui v0.33.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.17
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking png v0.18.0
[INFO] [stderr]    Compiling bindgen v0.66.1
[INFO] [stderr]    Compiling rustls v0.23.35
[INFO] [stderr]     Checking thiserror v2.0.17
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]     Checking serde_json v1.0.145
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking image v0.25.9
[INFO] [stderr]    Compiling zbus_names v4.2.0
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.9
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking winit v0.30.12
[INFO] [stderr]     Checking zbus_xml v5.0.2
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]    Compiling zbus_macros v5.12.0
[INFO] [stderr]    Compiling zbus-lockstep v0.5.2
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.5.2
[INFO] [stderr]     Checking rustls-webpki v0.103.8
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling cexpr v0.6.0
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]     Checking webpki-roots v1.0.4
[INFO] [stderr]     Checking kurbo v0.11.3
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]     Checking webpki-roots v0.26.11
[INFO] [stderr]    Compiling mime_guess2 v2.3.1
[INFO] [stderr]     Checking svgtypes v0.15.3
[INFO] [stderr]     Checking smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking glutin_glx_sys v0.6.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking simplecss v0.2.2
[INFO] [stderr]     Checking zbus v5.12.0
[INFO] [stderr]     Checking pico-args v0.5.0
[INFO] [stderr]     Checking data-url v0.3.2
[INFO] [stderr]     Checking imagesize v0.13.0
[INFO] [stderr]     Checking xmlwriter v0.1.0
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking usvg v0.45.1
[INFO] [stderr]     Checking deranged v0.5.5
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]    Compiling typename_derive v0.1.4
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking glutin v0.32.3
[INFO] [stderr]     Checking ureq v2.12.1
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking env_filter v0.1.4
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking webbrowser v1.0.6
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]    Compiling enum-map-derive v0.17.0
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking windows-targets v0.42.2
[INFO] [stderr]     Checking jiff v0.2.16
[INFO] [stderr]     Checking time-core v0.1.6
[INFO] [stderr]     Checking egui_glow v0.33.2
[INFO] [stderr]     Checking resvg v0.45.1
[INFO] [stderr]     Checking time v0.3.44
[INFO] [stderr]     Checking enum-map v2.7.3
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking windows v0.44.0
[INFO] [stderr]     Checking glutin-winit v0.5.0
[INFO] [stderr]     Checking ehttp v0.5.0
[INFO] [stderr]     Checking uom v0.34.0
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking typename v0.1.2
[INFO] [stderr]    Compiling snafu-derive v0.8.9
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking bitmask v0.5.0
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking atspi-common v0.9.0
[INFO] [stderr]     Checking egui_extras v0.33.2
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking egui-dropdown v0.13.0 (https://github.com/sapessi/egui-dropdown.git?branch=egui-0.33#c1a6f877)
[INFO] [stderr]     Checking egui_plot v0.34.0
[INFO] [stderr]    Compiling simetry v0.2.3
[INFO] [stderr]     Checking serde-jsonlines v0.7.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking colog v1.4.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking ctrlc v3.5.1
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking simple_moving_average v1.0.2
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking rusty-fork v0.3.1
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking snafu v0.8.9
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking plotters v0.3.7
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking is-terminal v0.4.17
[INFO] [stderr]     Checking proptest v1.9.0
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking atspi-proxies v0.9.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.14.2
[INFO] [stderr]     Checking atspi-connection v0.9.0
[INFO] [stderr]     Checking atspi v0.25.0
[INFO] [stderr]     Checking accesskit_unix v0.17.2
[INFO] [stderr]     Checking accesskit_winit v0.29.2
[INFO] [stderr]     Checking egui-winit v0.33.2
[INFO] [stderr]     Checking eframe v0.33.2
[INFO] [stderr]     Checking ocypode v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/telemetry/producer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::time::Duration;
[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: `std::time::Duration`
[INFO] [stdout]  --> src/telemetry/producer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::time::Duration;
[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: `simetry::Moment`
[INFO] [stdout]   --> src/telemetry/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use simetry::Moment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simetry::Moment`
[INFO] [stdout]   --> src/telemetry/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use simetry::Moment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACC_OPTIMAL_SHIFT_PCT` is never used
[INFO] [stdout]   --> src/telemetry/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const ACC_OPTIMAL_SHIFT_PCT: f32 = 0.92;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/telemetry/producer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::time::Duration;
[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: `collector::collect_telemetry`
[INFO] [stdout]   --> src/telemetry/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use collector::collect_telemetry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `sync::mpsc` and `thread`
[INFO] [stdout]  --> src/main.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{path::PathBuf, sync::mpsc, thread};
[INFO] [stdout]   |                          ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arg`
[INFO] [stdout]  --> src/main.rs:9:43
[INFO] [stdout]   |
[INFO] [stdout] 9 | use clap::{Parser, Subcommand, ValueEnum, arg};
[INFO] [stdout]   |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `egui::Vec2`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use egui::Vec2;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LiveTelemetryApp` and `config::AppConfig`
[INFO] [stdout]   --> src/main.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | use ui::live::{HISTORY_SECONDS, LiveTelemetryApp, config::AppConfig};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/telemetry/producer.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::time::Duration;
[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: `collector::collect_telemetry`
[INFO] [stdout]   --> src/telemetry/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use collector::collect_telemetry;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `sync::mpsc` and `thread`
[INFO] [stdout]  --> src/main.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::{path::PathBuf, sync::mpsc, thread};
[INFO] [stdout]   |                          ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `arg`
[INFO] [stdout]  --> src/main.rs:9:43
[INFO] [stdout]   |
[INFO] [stdout] 9 | use clap::{Parser, Subcommand, ValueEnum, arg};
[INFO] [stdout]   |                                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `egui::Vec2`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use egui::Vec2;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `LiveTelemetryApp` and `config::AppConfig`
[INFO] [stdout]   --> src/main.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | use ui::live::{HISTORY_SECONDS, LiveTelemetryApp, config::AppConfig};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACC_OPTIMAL_SHIFT_PCT` is never used
[INFO] [stdout]   --> src/telemetry/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const ACC_OPTIMAL_SHIFT_PCT: f32 = 0.92;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/main.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout]  59 | /         return Err(OcypodeError::TelemetryProducerError {
[INFO] [stdout]  60 | |             description: "Live telemetry is only supported on Windows".to_string(),
[INFO] [stdout]  61 | |         });
[INFO] [stdout]     | |__________- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 169 |       Ok(())
[INFO] [stdout]     |       ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simetry::Moment`
[INFO] [stdout]   --> src/telemetry/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use simetry::Moment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable expression
[INFO] [stdout]    --> src/main.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout]  59 | /         return Err(OcypodeError::TelemetryProducerError {
[INFO] [stdout]  60 | |             description: "Live telemetry is only supported on Windows".to_string(),
[INFO] [stdout]  61 | |         });
[INFO] [stdout]     | |__________- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 169 |       Ok(())
[INFO] [stdout]     |       ^^^^^^ unreachable expression
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simetry::Moment`
[INFO] [stdout]   --> src/telemetry/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use simetry::Moment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_size`
[INFO] [stdout]   --> src/main.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]   --> src/main.rs:54:29
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game`
[INFO] [stdout]   --> src/main.rs:54:54
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `WriterError`, `ConfigIOError`, and `ConfigSerializeError` are never constructed
[INFO] [stdout]   --> src/errors.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum OcypodeError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 32 |     WriterError { source: io::Error },
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     ConfigIOError { source: io::Error },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 39 |     #[snafu(display("Error serializing config file"))]
[INFO] [stdout] 40 |     ConfigSerializeError { source: serde_json::Error },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OcypodeError` 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: enum `FindingType` is never used
[INFO] [stdout]   --> src/setup_assistant/mod.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum FindingType {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Finding` is never constructed
[INFO] [stdout]   --> src/setup_assistant/mod.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub struct Finding {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CornerPhase` is never used
[INFO] [stdout]   --> src/setup_assistant/mod.rs:94:10
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub enum CornerPhase {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetupAssistant` is never constructed
[INFO] [stdout]    --> src/setup_assistant/mod.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 132 | pub struct SetupAssistant {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/setup_assistant/mod.rs:143:12
[INFO] [stdout]     |
[INFO] [stdout] 141 | impl SetupAssistant {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 142 |     /// Create a new SetupAssistant instance.
[INFO] [stdout] 143 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn process_telemetry(&mut self, telemetry: &TelemetryData) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     fn classify_corner_phase(telemetry: &TelemetryData) -> CornerPhase {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     fn annotation_to_finding_type(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 411 |     pub fn toggle_confirmation(&mut self, finding_type: FindingType) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn is_confirmed(&self, finding_type: &FindingType) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn get_findings(&self) -> &HashMap<FindingType, Finding> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 449 |     pub fn get_recommendations(&self) -> Vec<SetupRecommendation> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |     pub fn get_processed_recommendations(&self) -> Vec<recommendations::ProcessedRecommendation> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 488 |     pub fn clear_session(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 500 |     pub fn get_findings_for_persistence(&self) -> &HashMap<FindingType, Finding> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub fn get_confirmed_findings_for_persistence(&self) -> &HashSet<FindingType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 522 |     pub fn restore_findings(&mut self, findings: HashMap<FindingType, Finding>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 533 |     pub fn restore_confirmed_findings(&mut self, confirmed_findings: HashSet<FindingType>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SetupCategory` is never used
[INFO] [stdout]   --> src/setup_assistant/recommendations.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum SetupCategory {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SetupRecommendation` is never constructed
[INFO] [stdout]   --> src/setup_assistant/recommendations.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub struct SetupRecommendation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProcessedRecommendation` is never constructed
[INFO] [stdout]   --> src/setup_assistant/recommendations.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct ProcessedRecommendation {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecommendationEngine` is never constructed
[INFO] [stdout]   --> src/setup_assistant/recommendations.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct RecommendationEngine {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `build_recommendation_map`, `get_recommendations`, `process_recommendations`, `detect_conflicts`, and `is_conflicting` are never used
[INFO] [stdout]    --> src/setup_assistant/recommendations.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | impl RecommendationEngine {
[INFO] [stdout]     | ------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn build_recommendation_map() -> HashMap<FindingType, Vec<SetupRecommendation>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 767 |     pub fn get_recommendations(&self, finding_type: &FindingType) -> Vec<SetupRecommendation> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 786 |     pub fn process_recommendations(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 858 |     fn detect_conflicts(recs: &[SetupRecommendation]) -> Vec<SetupRecommendation> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 883 |     fn is_conflicting(adj1: &str, adj2: &str) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ACC_OPTIMAL_SHIFT_PCT` is never used
[INFO] [stdout]   --> src/telemetry/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const ACC_OPTIMAL_SHIFT_PCT: f32 = 0.92;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `TelemetryAnalyzer` is never used
[INFO] [stdout]    --> src/telemetry/mod.rs:768:11
[INFO] [stdout]     |
[INFO] [stdout] 768 | pub trait TelemetryAnalyzer {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_telemetry_point_analyzable` is never used
[INFO] [stdout]    --> src/telemetry/mod.rs:788:15
[INFO] [stdout]     |
[INFO] [stdout] 788 | pub(crate) fn is_telemetry_point_analyzable(data: &TelemetryData) -> bool {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_PITCH_CHANGE_RAD` is never used
[INFO] [stdout]  --> src/telemetry/bottoming_out_analyzer.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const MIN_PITCH_CHANGE_RAD: f32 = 0.05;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_STEERING_PCT` is never used
[INFO] [stdout]  --> src/telemetry/bottoming_out_analyzer.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_STEERING_PCT: f32 = 0.2;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_SPEED_LOSS_MPS` is never used
[INFO] [stdout]   --> src/telemetry/bottoming_out_analyzer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MIN_SPEED_LOSS_MPS: f32 = 0.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BottomingOutAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/bottoming_out_analyzer.rs:12:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) struct BottomingOutAnalyzer {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/bottoming_out_analyzer.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl BottomingOutAnalyzer {
[INFO] [stdout]    | ------------------------- associated function in this implementation
[INFO] [stdout] 18 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_BRAKE_PCT` is never used
[INFO] [stdout]  --> src/telemetry/brake_lock_analyzer.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const MIN_BRAKE_PCT: f32 = 0.3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BrakeLockAnalyzer` is never constructed
[INFO] [stdout]  --> src/telemetry/brake_lock_analyzer.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) struct BrakeLockAnalyzer {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/brake_lock_analyzer.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl BrakeLockAnalyzer {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] 15 |     pub(crate) fn new() -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REFRESH_RATE_MS` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:26:7
[INFO] [stdout]    |
[INFO] [stdout] 26 | const REFRESH_RATE_MS: u64 = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_WHEELSPIN_POINTS` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const MIN_WHEELSPIN_POINTS: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SESSION_UPDATE_TIME_MS` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const SESSION_UPDATE_TIME_MS: u128 = 2000;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_OVERSTEER_WINDOW_SIZE` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const ENTRY_OVERSTEER_WINDOW_SIZE: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRY_OVERSTEER_MIN_POINTS` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:32:7
[INFO] [stdout]    |
[INFO] [stdout] 32 | const ENTRY_OVERSTEER_MIN_POINTS: usize = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MID_CORNER_WINDOW_SIZE` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:33:7
[INFO] [stdout]    |
[INFO] [stdout] 33 | const MID_CORNER_WINDOW_SIZE: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MID_CORNER_MIN_POINTS` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const MID_CORNER_MIN_POINTS: usize = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_telemetry` is never used
[INFO] [stdout]   --> src/telemetry/collector.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn collect_telemetry(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `wait_for_session` is never used
[INFO] [stdout]    --> src/telemetry/collector.rs:151:4
[INFO] [stdout]     |
[INFO] [stdout] 151 | fn wait_for_session(producer: &mut impl TelemetryProducer) -> Result<(), OcypodeError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_BRAKE_PCT` is never used
[INFO] [stdout]  --> src/telemetry/entry_oversteer_analyzer.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MIN_BRAKE_PCT: f32 = 0.3;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_STEERING_PCT` is never used
[INFO] [stdout]   --> src/telemetry/entry_oversteer_analyzer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MIN_STEERING_PCT: f32 = 0.1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OVERSTEER_THRESHOLD` is never used
[INFO] [stdout]   --> src/telemetry/entry_oversteer_analyzer.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const OVERSTEER_THRESHOLD: f32 = 1.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntryOversteerAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/entry_oversteer_analyzer.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) struct EntryOversteerAnalyzer<const WINDOW_SIZE: usize> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/entry_oversteer_analyzer.rs:20:19
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<const WINDOW_SIZE: usize> EntryOversteerAnalyzer<WINDOW_SIZE> {
[INFO] [stdout]    | ------------------------------------------------------------------ associated function in this implementation
[INFO] [stdout] 20 |     pub(crate) fn new(min_points: usize) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COASTING_THROTTLE` is never used
[INFO] [stdout]  --> src/telemetry/mid_corner_analyzer.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MAX_COASTING_THROTTLE: f32 = 0.15;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_COASTING_BRAKE` is never used
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MAX_COASTING_BRAKE: f32 = 0.15;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_STEERING_PCT` is never used
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const MIN_STEERING_PCT: f32 = 0.1;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `UNDERSTEER_SPEED_LOSS_THRESHOLD` is never used
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const UNDERSTEER_SPEED_LOSS_THRESHOLD: f32 = 0.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OVERSTEER_THRESHOLD` is never used
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const OVERSTEER_THRESHOLD: f32 = 1.5;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MidCornerAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub(crate) struct MidCornerAnalyzer<const WINDOW_SIZE: usize> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/mid_corner_analyzer.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<const WINDOW_SIZE: usize> MidCornerAnalyzer<WINDOW_SIZE> {
[INFO] [stdout]    | ------------------------------------------------------------- associated function in this implementation
[INFO] [stdout] 25 |     pub(crate) fn new(min_points: usize) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONN_RETRY_MAX_WAIT_S` is never used
[INFO] [stdout]   --> src/telemetry/producer.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) const CONN_RETRY_MAX_WAIT_S: u64 = 600;
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `start`, `session_info`, and `telemetry` are never used
[INFO] [stdout]   --> src/telemetry/producer.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub trait TelemetryProducer {
[INFO] [stdout]    |           ----------------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn start(&mut self) -> Result<(), OcypodeError>;
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn session_info(&mut self) -> Result<SessionInfo, OcypodeError>;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn telemetry(&mut self) -> Result<TelemetryData, OcypodeError>;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cur_tick`, `points`, `track_name`, and `max_steering_angle` are never read
[INFO] [stdout]    --> src/telemetry/producer.rs:374:5
[INFO] [stdout]     |
[INFO] [stdout] 373 | pub(crate) struct MockTelemetryProducer {
[INFO] [stdout]     |                   --------------------- fields in this struct
[INFO] [stdout] 374 |     cur_tick: usize,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 375 |     points: Vec<TelemetryData>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 376 |     pub track_name: String,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 377 |     pub max_steering_angle: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_STEERING_PCT_MEASURE` is never used
[INFO] [stdout]  --> src/telemetry/scrub_analyzer.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const MIN_STEERING_PCT_MEASURE: f32 = 0.1;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_BRAKE_PCT_MEASURE` is never used
[INFO] [stdout]  --> src/telemetry/scrub_analyzer.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const MIN_BRAKE_PCT_MEASURE: f32 = 0.4;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_THROTTLE_PCT_MEASURE` is never used
[INFO] [stdout]   --> src/telemetry/scrub_analyzer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MAX_THROTTLE_PCT_MEASURE: f32 = 0.4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_SPEED_MPS` is never used
[INFO] [stdout]   --> src/telemetry/scrub_analyzer.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const MIN_SPEED_MPS: f32 = 5.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCRUB_TEMP_THRESHOLD` is never used
[INFO] [stdout]   --> src/telemetry/scrub_analyzer.rs:14:7
[INFO] [stdout]    |
[INFO] [stdout] 14 | const SCRUB_TEMP_THRESHOLD: f32 = 5.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ScrubAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/scrub_analyzer.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) struct ScrubAnalyzer<const WINDOW_SIZE: usize> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/scrub_analyzer.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<const WINDOW_SIZE: usize> ScrubAnalyzer<WINDOW_SIZE> {
[INFO] [stdout]    | --------------------------------------------------------- associated function in this implementation
[INFO] [stdout] 25 |     pub(crate) fn new(min_points: usize) -> Self {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `analyze_with_yaw_rate`, `analyze_with_tire_temperature`, and `calculate_average_tire_temperature` are never used
[INFO] [stdout]    --> src/telemetry/scrub_analyzer.rs:73:8
[INFO] [stdout]     |
[INFO] [stdout]  71 | impl<const WINDOW_SIZE: usize> ScrubAnalyzer<WINDOW_SIZE> {
[INFO] [stdout]     | --------------------------------------------------------- methods in this implementation
[INFO] [stdout]  72 |     /// Analyze scrubbing using yaw rate data (original method for iRacing)
[INFO] [stdout]  73 |     fn analyze_with_yaw_rate(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     fn analyze_with_tire_temperature(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn calculate_average_tire_temperature(&self, telemetry: &TelemetryData) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_SHORT_SHIFT_SENSITIVITY` is never used
[INFO] [stdout]  --> src/telemetry/short_shifting_analyzer.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const DEFAULT_SHORT_SHIFT_SENSITIVITY: f32 = 100.;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShortShiftingAnalyzer` is never constructed
[INFO] [stdout]  --> src/telemetry/short_shifting_analyzer.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub(crate) struct ShortShiftingAnalyzer {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STEERING_ANGLE_DEADZONE_RAD` is never used
[INFO] [stdout]  --> src/telemetry/slip_analyzer.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) const STEERING_ANGLE_DEADZONE_RAD: f32 = 0.12; // Increased from 0.08 to reduce sensitivity
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SlipAnalyzer` is never constructed
[INFO] [stdout]  --> src/telemetry/slip_analyzer.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) struct SlipAnalyzer {
[INFO] [stdout]   |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPTIMAL_TEMP_MIN` is never used
[INFO] [stdout]  --> src/telemetry/tire_temperature_analyzer.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const OPTIMAL_TEMP_MIN: f32 = 80.0;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPTIMAL_TEMP_MAX` is never used
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const OPTIMAL_TEMP_MAX: f32 = 95.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HISTORY_DURATION_S` is never used
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | const HISTORY_DURATION_S: usize = 60;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_SAMPLES` is never used
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const MIN_SAMPLES: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SAMPLE_RATE_HZ` is never used
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const SAMPLE_RATE_HZ: f32 = 60.0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TireTemperatureSnapshot` is never constructed
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct TireTemperatureSnapshot {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TireTemperatureAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/tire_temperature_analyzer.rs:27:19
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub(crate) struct TireTemperatureAnalyzer {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `with_config`, `calculate_avg_tire_temp`, `check_overheating`, and `check_cold_tires` are never used
[INFO] [stdout]    --> src/telemetry/tire_temperature_analyzer.rs:36:19
[INFO] [stdout]     |
[INFO] [stdout]  35 | impl TireTemperatureAnalyzer {
[INFO] [stdout]     | ---------------------------- associated items in this implementation
[INFO] [stdout]  36 |     pub(crate) fn new() -> Self {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub(crate) fn with_config(history_duration_s: usize, optimal_temp_range: (f32, f32)) -> Self {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn calculate_avg_tire_temp(&self, telemetry: &TelemetryData) -> Option<f32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     fn check_overheating(&self) -> Option<TelemetryAnnotation> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn check_cold_tires(&self) -> Option<TelemetryAnnotation> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIN_TRAILBRAKING_PCT` is never used
[INFO] [stdout]  --> src/telemetry/trailbrake_steering_analyzer.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub(crate) const MIN_TRAILBRAKING_PCT: f32 = 0.2;
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_TRAILBRAKING_STEERING_ANGLE` is never used
[INFO] [stdout]  --> src/telemetry/trailbrake_steering_analyzer.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) const MAX_TRAILBRAKING_STEERING_ANGLE: f32 = 0.1;
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrailbrakeSteeringAnalyzer` is never constructed
[INFO] [stdout]  --> src/telemetry/trailbrake_steering_analyzer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct TrailbrakeSteeringAnalyzer {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/trailbrake_steering_analyzer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl TrailbrakeSteeringAnalyzer {
[INFO] [stdout]    | ------------------------------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn new(max_trailbraking_steering_angle: f32, min_trailbraking_pct: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WheelspinAnalyzer` is never constructed
[INFO] [stdout]   --> src/telemetry/wheelspin_analyzer.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct WheelspinAnalyzer<const WINDOW_SIZE: usize> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/telemetry/wheelspin_analyzer.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl<const WINDOW_SIZE: usize> WheelspinAnalyzer<WINDOW_SIZE> {
[INFO] [stdout]    | ------------------------------------------------------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REFRESH_RATE_MS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const REFRESH_RATE_MS: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_POINTS_PER_REFRESH` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const MAX_POINTS_PER_REFRESH: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_TIME_PER_REFRESH_MS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAX_TIME_PER_REFRESH_MS: u128 = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_BUTTON_CORNER_RADIUS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const DEFAULT_BUTTON_CORNER_RADIUS: u8 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_WINDOW_CORNER_RADIUS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const DEFAULT_WINDOW_CORNER_RADIUS: u8 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_WINDOW_TRANSPARENCY` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const DEFAULT_WINDOW_TRANSPARENCY: u8 = 191;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LiveTelemetryApp` is never constructed
[INFO] [stdout]   --> src/ui/live/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct LiveTelemetryApp {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 55 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `alerts_view` and `show_alerts` are never used
[INFO] [stdout]   --> src/ui/live/alerts_view.rs:8:19
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout]  8 |     pub(crate) fn alerts_view(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn show_alerts(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_FILE_NAME` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONFIG_FILE_NAME: &str = "config.json";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AlertsLayout` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) enum AlertsLayout {
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `window_size` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AlertsLayout {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 19 |     pub(crate) fn window_size(&self) -> Vec2 {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]   --> src/ui/live/config.rs:56:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct AppConfig {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_local_file` and `save` are never used
[INFO] [stdout]   --> src/ui/live/config.rs:87:19
[INFO] [stdout]    |
[INFO] [stdout] 86 | impl AppConfig {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 87 |     pub(crate) fn from_local_file() -> Option<Self> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub(crate) fn save(&self) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `setup_window`, `show_findings_list`, and `show_recommendations` are never used
[INFO] [stdout]    --> src/ui/live/setup_window.rs:19:19
[INFO] [stdout]     |
[INFO] [stdout]   5 | impl LiveTelemetryApp {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub(crate) fn setup_window(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn show_findings_list(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn show_recommendations(&self, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `telemetry_view` is never used
[INFO] [stdout]   --> src/ui/live/telemetry_view.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 13 |     pub(crate) fn telemetry_view(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_telemetry` is never used
[INFO] [stdout]   --> src/writer.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn write_telemetry(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_size`
[INFO] [stdout]   --> src/main.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_window_size`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]   --> src/main.rs:54:29
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game`
[INFO] [stdout]   --> src/main.rs:54:54
[INFO] [stdout]    |
[INFO] [stdout] 54 | fn live(window_size: usize, output: Option<PathBuf>, game: GameSource) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_game`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ConfigIOError` and `ConfigSerializeError` are never constructed
[INFO] [stdout]   --> src/errors.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum OcypodeError {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 38 |     ConfigIOError { source: io::Error },
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 39 |     #[snafu(display("Error serializing config file"))]
[INFO] [stdout] 40 |     ConfigSerializeError { source: serde_json::Error },
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OcypodeError` 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: constant `ACC_OPTIMAL_SHIFT_PCT` is never used
[INFO] [stdout]   --> src/telemetry/mod.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 | const ACC_OPTIMAL_SHIFT_PCT: f32 = 0.92;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REFRESH_RATE_MS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const REFRESH_RATE_MS: usize = 100;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_POINTS_PER_REFRESH` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const MAX_POINTS_PER_REFRESH: usize = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_TIME_PER_REFRESH_MS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const MAX_TIME_PER_REFRESH_MS: u128 = 50;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_BUTTON_CORNER_RADIUS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const DEFAULT_BUTTON_CORNER_RADIUS: u8 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_WINDOW_CORNER_RADIUS` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const DEFAULT_WINDOW_CORNER_RADIUS: u8 = 10;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_WINDOW_TRANSPARENCY` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 | const DEFAULT_WINDOW_TRANSPARENCY: u8 = 191;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LiveTelemetryApp` is never constructed
[INFO] [stdout]   --> src/ui/live/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct LiveTelemetryApp {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/ui/live/mod.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 55 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `alerts_view` and `show_alerts` are never used
[INFO] [stdout]   --> src/ui/live/alerts_view.rs:8:19
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout]  8 |     pub(crate) fn alerts_view(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn show_alerts(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_FILE_NAME` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONFIG_FILE_NAME: &str = "config.json";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AlertsLayout` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:13:17
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) enum AlertsLayout {
[INFO] [stdout]    |                 ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `window_size` is never used
[INFO] [stdout]   --> src/ui/live/config.rs:19:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AlertsLayout {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 19 |     pub(crate) fn window_size(&self) -> Vec2 {
[INFO] [stdout]    |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppConfig` is never constructed
[INFO] [stdout]   --> src/ui/live/config.rs:56:19
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub(crate) struct AppConfig {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_local_file` and `save` are never used
[INFO] [stdout]   --> src/ui/live/config.rs:87:19
[INFO] [stdout]    |
[INFO] [stdout] 86 | impl AppConfig {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 87 |     pub(crate) fn from_local_file() -> Option<Self> {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub(crate) fn save(&self) -> Result<(), OcypodeError> {
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `setup_window`, `show_findings_list`, and `show_recommendations` are never used
[INFO] [stdout]    --> src/ui/live/setup_window.rs:19:19
[INFO] [stdout]     |
[INFO] [stdout]   5 | impl LiveTelemetryApp {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub(crate) fn setup_window(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn show_findings_list(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn show_recommendations(&self, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `telemetry_view` is never used
[INFO] [stdout]   --> src/ui/live/telemetry_view.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl LiveTelemetryApp {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 13 |     pub(crate) fn telemetry_view(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 52s
[INFO] running `Command { std: "docker" "inspect" "6ab2df06797c27463ac08a89ea9071b28d9c9d4957a4e5484a3bc067826848b1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6ab2df06797c27463ac08a89ea9071b28d9c9d4957a4e5484a3bc067826848b1", kill_on_drop: false }`
[INFO] [stdout] 6ab2df06797c27463ac08a89ea9071b28d9c9d4957a4e5484a3bc067826848b1
