[INFO] cloning repository https://github.com/mangathemango/wall3
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mangathemango/wall3" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmangathemango%2Fwall3", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmangathemango%2Fwall3'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c4166de983163fe5b6bc4c26159cce3adb8f08a8
[INFO] checking mangathemango/wall3 against 5b237c915528dadada3f674b90c7c80368b632be for pr-133502-29
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmangathemango%2Fwall3" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mangathemango/wall3
[INFO] finished tweaking git repo https://github.com/mangathemango/wall3
[INFO] tweaked toml for git repo https://github.com/mangathemango/wall3 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mangathemango/wall3 on toolchain 5b237c915528dadada3f674b90c7c80368b632be
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mangathemango/wall3 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" "+5b237c915528dadada3f674b90c7c80368b632be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64
[INFO] running `Command { std: "docker" "start" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64", 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" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64" "/opt/rustwide/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64", 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" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64" "/opt/rustwide/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.189
[INFO] [stderr]     Checking smallvec v1.16.1
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking hashbrown v0.17.1
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]    Compiling aws-lc-rs v1.18.1
[INFO] [stderr]     Checking num-integer v0.1.47
[INFO] [stderr]    Compiling zerocopy v0.8.57
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]    Compiling instability v0.3.13
[INFO] [stderr]    Compiling rustls v0.23.44
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking unicode-truncate v2.0.1
[INFO] [stderr]     Checking crc32fast v1.5.2
[INFO] [stderr]     Checking critical-section v1.2.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking compact_str v0.9.1
[INFO] [stderr]     Checking raw-cpuid v11.6.0
[INFO] [stderr]     Checking flate2 v1.1.10
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking imgref v1.12.3
[INFO] [stderr]     Checking num-bigint v0.4.8
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling encoding_rs v0.8.41
[INFO] [stderr]     Checking line-clipping v0.3.8
[INFO] [stderr]    Compiling g2poly v1.2.2
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking simdutf8 v0.1.5
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking lru v0.18.4
[INFO] [stderr]     Checking indexmap v2.14.2
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking chacha20 v0.10.2
[INFO] [stderr]     Checking bitvec v1.1.1
[INFO] [stderr]     Checking lru v0.16.4
[INFO] [stderr]     Checking arc-swap v1.9.2
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking glam v0.32.1
[INFO] [stderr]    Compiling jobserver v0.1.35
[INFO] [stderr]    Compiling cc v1.4.6
[INFO] [stderr]     Checking pulp v0.22.3
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling cmake v0.1.58
[INFO] [stderr]    Compiling aws-lc-sys v0.45.0
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking mio v1.2.3
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.5
[INFO] [stderr]     Checking time v0.3.55
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking libudev v0.3.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking sysinfo v0.39.6
[INFO] [stderr]     Checking rand v0.10.2
[INFO] [stderr]     Checking rscam v0.5.5
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking evdev v0.13.2
[INFO] [stderr]    Compiling darling_core v0.24.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.20
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling multiversion-macros v0.9.0
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling strum_macros v0.28.0
[INFO] [stderr]    Compiling zerocopy-derive v0.8.57
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]     Checking thiserror v2.0.20
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]     Checking kasuari v0.4.12
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking multiversion v0.9.0
[INFO] [stderr]    Compiling g2gen v1.2.2
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking unescaper v0.1.10
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking serialport v4.10.1
[INFO] [stderr]     Checking g2p v1.2.2
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking derive_more v2.1.1
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking zerovec v0.11.8
[INFO] [stderr]     Checking zerotrie v0.2.5
[INFO] [stderr]     Checking av-scenechange v0.14.1
[INFO] [stderr]    Compiling darling_macro v0.24.1
[INFO] [stderr]     Checking crossterm v0.29.0
[INFO] [stderr]    Compiling darling v0.24.1
[INFO] [stderr]     Checking tinystr v0.8.4
[INFO] [stderr]     Checking potential_utf v0.1.6
[INFO] [stderr]     Checking icu_collections v2.3.0
[INFO] [stderr]     Checking icu_locale_core v2.3.0
[INFO] [stderr]     Checking rav1e v0.8.1
[INFO] [stderr]     Checking strum v0.28.0
[INFO] [stderr]     Checking ratatui-core v0.1.2
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking icu_provider v2.3.1
[INFO] [stderr]     Checking icu_properties v2.3.0
[INFO] [stderr]     Checking icu_normalizer v2.3.0
[INFO] [stderr]     Checking ratatui-widgets v0.3.2
[INFO] [stderr]     Checking ratatui-crossterm v0.1.2
[INFO] [stderr]     Checking ratatui-macros v0.7.2
[INFO] [stderr]     Checking ratatui v0.30.2
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking tokio-util v0.7.19
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking h2 v0.4.19
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking exr v1.74.2
[INFO] [stderr]     Checking rustls-webpki v0.103.15
[INFO] [stderr]     Checking hyper v1.11.1
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking tokio-rustls v0.26.5
[INFO] [stderr]     Checking rustls-platform-verifier v0.7.0
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.13.5
[INFO] [stderr]     Checking rqrr v0.10.1
[INFO] [stderr]     Checking wall3 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/devices/maixcam.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     time::{Duration, Instant},
[INFO] [stdout]   |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `driver::MaixcamDriver`, `message::MaixcamMessage`, and `state::MaixcamState`
[INFO] [stdout]   --> src/devices/maixcam.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     driver::MaixcamDriver, message::MaixcamMessage, state::MaixcamState,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/devices/qr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `driver::QrDriver`
[INFO] [stdout]  --> src/devices/qr.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use driver::QrDriver;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ROBOT`
[INFO] [stdout]  --> src/devices/qr.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::ROBOT;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ROBOT`
[INFO] [stdout]  --> src/devices/stm32.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::ROBOT;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::controller::Stm32Controller`
[INFO] [stdout]  --> src/devices/stm32.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::devices::stm32::controller::Stm32Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::driver::Stm32Driver`
[INFO] [stdout]  --> src/devices/stm32.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::devices::stm32::driver::Stm32Driver;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::state::Stm32State`
[INFO] [stdout]   --> src/devices/stm32.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::devices::stm32::state::Stm32State;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]   --> src/devices/stm32.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/devices/stm32.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pid::PidController`
[INFO] [stdout]   --> src/math.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use pid::PidController;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pure_pursuit::PurePursuitController`
[INFO] [stdout]   --> src/math.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use pure_pursuit::PurePursuitController;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/main.rs:21:66
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::{str::FromStr, sync::LazyLock, thread, time::{Duration, Instant}};
[INFO] [stdout]    |                                                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dashboard::spawn_dashboard_thread`
[INFO] [stdout]   --> src/main.rs:27:176
[INFO] [stdout]    |
[INFO] [stdout] 27 | ...{action_executor::spawn_action_executor_thread, dashboard::spawn_dashboard_thread, gyro::spawn_gyro_thread, maixcam::spawn_maixca...
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `Instant`
[INFO] [stdout]  --> src/devices/maixcam.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 |     time::{Duration, Instant},
[INFO] [stdout]   |            ^^^^^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `driver::MaixcamDriver`, `message::MaixcamMessage`, and `state::MaixcamState`
[INFO] [stdout]   --> src/devices/maixcam.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     driver::MaixcamDriver, message::MaixcamMessage, state::MaixcamState,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/devices/qr.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `driver::QrDriver`
[INFO] [stdout]  --> src/devices/qr.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use driver::QrDriver;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ROBOT`
[INFO] [stdout]  --> src/devices/qr.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::ROBOT;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ROBOT`
[INFO] [stdout]  --> src/devices/stm32.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::ROBOT;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::controller::Stm32Controller`
[INFO] [stdout]  --> src/devices/stm32.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::devices::stm32::controller::Stm32Controller;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::driver::Stm32Driver`
[INFO] [stdout]  --> src/devices/stm32.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::devices::stm32::driver::Stm32Driver;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::devices::stm32::state::Stm32State`
[INFO] [stdout]   --> src/devices/stm32.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::devices::stm32::state::Stm32State;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc`
[INFO] [stdout]   --> src/devices/stm32.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::mpsc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/devices/stm32.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pid::PidController`
[INFO] [stdout]   --> src/math.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use pid::PidController;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `pure_pursuit::PurePursuitController`
[INFO] [stdout]   --> src/math.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use pure_pursuit::PurePursuitController;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]   --> src/main.rs:21:66
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::{str::FromStr, sync::LazyLock, thread, time::{Duration, Instant}};
[INFO] [stdout]    |                                                                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dashboard::spawn_dashboard_thread`
[INFO] [stdout]   --> src/main.rs:27:176
[INFO] [stdout]    |
[INFO] [stdout] 27 | ...{action_executor::spawn_action_executor_thread, dashboard::spawn_dashboard_thread, gyro::spawn_gyro_thread, maixcam::spawn_maixca...
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RotateArm` is never constructed
[INFO] [stdout]  --> src/control/actions/rotate_arm.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RotateArm {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/control/actions/rotate_arm.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl RotateArm {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn to_angle(target_angle: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn slow(mut self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn to_preset(target_position: ArmRotationPreset) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn to_storage(index: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn to_placement(color: MaixcamCircleColor) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn to_source() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn to_calibration() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn idle() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArmRotationPreset` is never used
[INFO] [stdout]    --> src/control/actions/rotate_arm.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum ArmRotationPreset {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_angle` is never used
[INFO] [stdout]    --> src/control/actions/rotate_arm.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl ArmRotationPreset {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] 120 |     pub fn to_angle(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `LowerArm` is never used
[INFO] [stdout]  --> src/control/actions/lift_arm.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub type LowerArm = LiftArm;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LiftArm` is never constructed
[INFO] [stdout]  --> src/control/actions/lift_arm.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LiftArm {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl LiftArm {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 16 |     pub fn to_preset(preset: ArmLiftPreset) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn up() -> Self {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn to_source() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn to_storage_placing() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn to_storage_grabbing() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_ground(color: MaixcamCircleColor) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn to_stacked() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArmLiftPreset` is never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum ArmLiftPreset {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_position` is never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl ArmLiftPreset {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 91 |     pub fn to_position(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `then` is never used
[INFO] [stdout]   --> src/control/actions/general.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Sequence {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn then<A>(mut self, action: A) -> Self
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuntimeSequence` is never constructed
[INFO] [stdout]   --> src/control/actions/general.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct RuntimeSequence {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/control/actions/general.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl RuntimeSequence {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 101 |     pub fn new<F>(f: F) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaitUntil` is never constructed
[INFO] [stdout]    --> src/control/actions/general.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub struct WaitUntil {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/control/actions/general.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl WaitUntil {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 216 |     pub fn new<F>(condition_name: &str, true_time: Duration, condition: F) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParallelSequence` is never constructed
[INFO] [stdout]    --> src/control/actions/general.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct ParallelSequence {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `push` are never used
[INFO] [stdout]    --> src/control/actions/general.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl ParallelSequence {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 259 |     pub fn new<A>(name: &str) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn push<A>(&mut self, action: A)
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/control/actions/stop.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl StopMovement {
[INFO] [stdout]   | ----------------- associated function in this implementation
[INFO] [stdout] 8 |     pub fn new() -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all` is never used
[INFO] [stdout]   --> src/control/actions/express.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Expression {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn all() {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pursuit_pose` is never read
[INFO] [stdout]   --> src/control/states/odometry.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct OdometryState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub pursuit_pose: Pose,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OdometryState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_current_rotation`, `add_gyro_offset`, and `set_current_pose` are never used
[INFO] [stdout]   --> src/control/states/odometry.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl OdometryState {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_current_rotation(&mut self, rotation: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn add_gyro_offset(&mut self, offset: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_current_pose(&mut self, pose: Pose) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]   --> src/dashboard/app.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn start() {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/dashboard/app.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn run() -> Result<(), io::Error> {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paragraph` is never used
[INFO] [stdout]  --> src/dashboard/helpers.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn paragraph(f: &mut Frame, area: Rect, title: &str, text: String) {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_temperature` is never used
[INFO] [stdout]   --> src/dashboard/helpers.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn read_temperature() -> Option<f32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui` is never used
[INFO] [stdout]   --> src/dashboard/layout.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ui(f: &mut Frame) {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_compass` is never used
[INFO] [stdout]   --> src/dashboard/widgets/compass.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn draw_compass(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_compass_inner` is never used
[INFO] [stdout]   --> src/dashboard/widgets/compass.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn draw_compass_inner(f: &mut Frame, area: Rect, yaw: f32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_controller` is never used
[INFO] [stdout]  --> src/dashboard/widgets/controller.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn draw_controller(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_gyro` is never used
[INFO] [stdout]   --> src/dashboard/widgets/gyro.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn draw_gyro(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_gyro_text` is never used
[INFO] [stdout]   --> src/dashboard/widgets/gyro.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn draw_gyro_text(f: &mut Frame, area: Rect, g: &GyroState) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_maixcam` is never used
[INFO] [stdout]  --> src/dashboard/widgets/maixcam.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_maixcam(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_odometry` is never used
[INFO] [stdout]  --> src/dashboard/widgets/odometry.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_odometry(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_qr` is never used
[INFO] [stdout]  --> src/dashboard/widgets/qr.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_qr(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_stm32` is never used
[INFO] [stdout]  --> src/dashboard/widgets/stm32.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_stm32(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_system` is never used
[INFO] [stdout]   --> src/dashboard/widgets/system.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn draw_system(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kind` is never read
[INFO] [stdout]   --> src/devices/maixcam/circle.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct MaixcamCircle {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub kind: MaixcamCircleKind,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MaixcamCircle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_priority_ring` and `find_ring` are never used
[INFO] [stdout]   --> src/devices/maixcam/state.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl MaixcamState {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn find_priority_ring(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn find_ring(&self, color: &MaixcamCircleColor) -> Option<&MaixcamCircle> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> src/devices/qr/state.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl QrState {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SetYawServoAngle`, `SetClawServoAngle`, `SetVerticalArmPosition`, and `SetHorizontalArmPosition` are never constructed
[INFO] [stdout]   --> src/devices/stm32/command.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Stm32Command {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout]  5 |     /// angle: 0-180
[INFO] [stdout]  6 |     SetYawServoAngle {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  9 |     SetClawServoAngle {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     SetVerticalArmPosition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     SetHorizontalArmPosition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Stm32Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_yaw_servo`, `set_vertical_arm_position`, `set_horizontal_arm_position`, and `set_claw_servo` are never used
[INFO] [stdout]   --> src/devices/stm32/controller.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Stm32Controller {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn set_yaw_servo(&self, angle: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn set_vertical_arm_position(&self, position: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn set_horizontal_arm_position(&self, position: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn set_claw_servo(&self, angle: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Route` is never constructed
[INFO] [stdout]  --> src/math/route.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Route {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/math/route.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Route {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout]  9 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn sample(&mut self, spacing: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn sample_points(points: &Vec<Pose>, spacing: f32) -> Vec<Pose> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn push(&mut self, point: Pose) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn first(&self) -> Option<&Pose> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn last(&self) -> Option<&Pose> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PidController` is never constructed
[INFO] [stdout]  --> src/math/pid.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct PidController {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `is_settled_for` are never used
[INFO] [stdout]   --> src/math/pid.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PidController {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 44 |     pub fn new(kp: f32, ki: f32, kd: f32, tolerance: f32, max_integral: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&mut self, current_error: f32, dt: Duration) -> f32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn is_settled_for(&self, duration: Duration) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `difference`, `scale`, `with_rotation`, `with_position`, and `to_components` are never used
[INFO] [stdout]   --> src/math/pose.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Pose {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 26 |     pub fn difference(self, target: Pose) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn scale(mut self, scale: f32) -> Pose {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_rotation(mut self, rotation: f32) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn with_position(mut self, position: Vec2) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn to_components(&self) -> (Vec2, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PurePursuitController` is never constructed
[INFO] [stdout]  --> src/math/pure_pursuit.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PurePursuitController {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/math/pure_pursuit.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PurePursuitController {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new(lookahead_distance: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn update(&mut self, current_pose: Pose, route: &Route) -> Pose {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/math/twist.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Twist {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn new(linear: Vec2, omega: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `maixcam_state`, `qr_state`, and `odometry_state` are never used
[INFO] [stdout]   --> src/robot.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Robot {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn maixcam_state(&self) -> Guard<Arc<MaixcamState>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn qr_state(&self) -> QrState {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn odometry_state(&self) -> OdometryState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_dashboard_thread` is never used
[INFO] [stdout]  --> src/tasks/dashboard.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn spawn_dashboard_thread() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RotateArm` is never constructed
[INFO] [stdout]  --> src/control/actions/rotate_arm.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct RotateArm {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/control/actions/rotate_arm.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl RotateArm {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn to_angle(target_angle: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn slow(mut self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn to_preset(target_position: ArmRotationPreset) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn to_storage(index: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn to_placement(color: MaixcamCircleColor) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn to_source() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn to_calibration() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn idle() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArmRotationPreset` is never used
[INFO] [stdout]    --> src/control/actions/rotate_arm.rs:111:10
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub enum ArmRotationPreset {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_angle` is never used
[INFO] [stdout]    --> src/control/actions/rotate_arm.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | impl ArmRotationPreset {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] 120 |     pub fn to_angle(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `LowerArm` is never used
[INFO] [stdout]  --> src/control/actions/lift_arm.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub type LowerArm = LiftArm;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LiftArm` is never constructed
[INFO] [stdout]  --> src/control/actions/lift_arm.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct LiftArm {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl LiftArm {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 16 |     pub fn to_preset(preset: ArmLiftPreset) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn up() -> Self {
[INFO] [stdout]    |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn to_source() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn to_storage_placing() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn to_storage_grabbing() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn to_ground(color: MaixcamCircleColor) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn to_stacked() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ArmLiftPreset` is never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub enum ArmLiftPreset {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_position` is never used
[INFO] [stdout]   --> src/control/actions/lift_arm.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | impl ArmLiftPreset {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 91 |     pub fn to_position(&self) -> u16 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `then` is never used
[INFO] [stdout]   --> src/control/actions/general.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl Sequence {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn then<A>(mut self, action: A) -> Self
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuntimeSequence` is never constructed
[INFO] [stdout]   --> src/control/actions/general.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct RuntimeSequence {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/control/actions/general.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl RuntimeSequence {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 101 |     pub fn new<F>(f: F) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaitUntil` is never constructed
[INFO] [stdout]    --> src/control/actions/general.rs:208:12
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub struct WaitUntil {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/control/actions/general.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 215 | impl WaitUntil {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 216 |     pub fn new<F>(condition_name: &str, true_time: Duration, condition: F) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParallelSequence` is never constructed
[INFO] [stdout]    --> src/control/actions/general.rs:253:12
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct ParallelSequence {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `push` are never used
[INFO] [stdout]    --> src/control/actions/general.rs:259:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl ParallelSequence {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 259 |     pub fn new<A>(name: &str) -> Self
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn push<A>(&mut self, action: A)
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/control/actions/stop.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl StopMovement {
[INFO] [stdout]   | ----------------- associated function in this implementation
[INFO] [stdout] 8 |     pub fn new() -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `all` is never used
[INFO] [stdout]   --> src/control/actions/express.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 46 | impl Expression {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 47 |     pub fn all() {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pursuit_pose` is never read
[INFO] [stdout]   --> src/control/states/odometry.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct OdometryState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub pursuit_pose: Pose,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `OdometryState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_current_rotation`, `add_gyro_offset`, and `set_current_pose` are never used
[INFO] [stdout]   --> src/control/states/odometry.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl OdometryState {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn set_current_rotation(&mut self, rotation: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn add_gyro_offset(&mut self, offset: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn set_current_pose(&mut self, pose: Pose) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]   --> src/dashboard/app.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub fn start() {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run` is never used
[INFO] [stdout]   --> src/dashboard/app.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn run() -> Result<(), io::Error> {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paragraph` is never used
[INFO] [stdout]  --> src/dashboard/helpers.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn paragraph(f: &mut Frame, area: Rect, title: &str, text: String) {
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_temperature` is never used
[INFO] [stdout]   --> src/dashboard/helpers.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn read_temperature() -> Option<f32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui` is never used
[INFO] [stdout]   --> src/dashboard/layout.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn ui(f: &mut Frame) {
[INFO] [stdout]    |        ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_compass` is never used
[INFO] [stdout]   --> src/dashboard/widgets/compass.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn draw_compass(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_compass_inner` is never used
[INFO] [stdout]   --> src/dashboard/widgets/compass.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn draw_compass_inner(f: &mut Frame, area: Rect, yaw: f32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_controller` is never used
[INFO] [stdout]  --> src/dashboard/widgets/controller.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn draw_controller(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_gyro` is never used
[INFO] [stdout]   --> src/dashboard/widgets/gyro.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn draw_gyro(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_gyro_text` is never used
[INFO] [stdout]   --> src/dashboard/widgets/gyro.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn draw_gyro_text(f: &mut Frame, area: Rect, g: &GyroState) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_maixcam` is never used
[INFO] [stdout]  --> src/dashboard/widgets/maixcam.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_maixcam(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_odometry` is never used
[INFO] [stdout]  --> src/dashboard/widgets/odometry.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_odometry(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_qr` is never used
[INFO] [stdout]  --> src/dashboard/widgets/qr.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_qr(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_stm32` is never used
[INFO] [stdout]  --> src/dashboard/widgets/stm32.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn draw_stm32(f: &mut Frame, area: Rect) {
[INFO] [stdout]   |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_system` is never used
[INFO] [stdout]   --> src/dashboard/widgets/system.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn draw_system(f: &mut Frame, area: Rect) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `kind` is never read
[INFO] [stdout]   --> src/devices/maixcam/circle.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct MaixcamCircle {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub kind: MaixcamCircleKind,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MaixcamCircle` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_priority_ring` and `find_ring` are never used
[INFO] [stdout]   --> src/devices/maixcam/state.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl MaixcamState {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn find_priority_ring(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn find_ring(&self, color: &MaixcamCircleColor) -> Option<&MaixcamCircle> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> src/devices/qr/state.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl QrState {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `SetYawServoAngle`, `SetClawServoAngle`, `SetVerticalArmPosition`, and `SetHorizontalArmPosition` are never constructed
[INFO] [stdout]   --> src/devices/stm32/command.rs:6:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub enum Stm32Command {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout]  5 |     /// angle: 0-180
[INFO] [stdout]  6 |     SetYawServoAngle {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  9 |     SetClawServoAngle {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     SetVerticalArmPosition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     SetHorizontalArmPosition {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Stm32Command` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_yaw_servo`, `set_vertical_arm_position`, `set_horizontal_arm_position`, and `set_claw_servo` are never used
[INFO] [stdout]   --> src/devices/stm32/controller.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Stm32Controller {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn set_yaw_servo(&self, angle: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn set_vertical_arm_position(&self, position: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn set_horizontal_arm_position(&self, position: u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn set_claw_servo(&self, angle: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Route` is never constructed
[INFO] [stdout]  --> src/math/route.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Route {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/math/route.rs:9:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl Route {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout]  9 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub fn sample(&mut self, spacing: f32) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn sample_points(points: &Vec<Pose>, spacing: f32) -> Vec<Pose> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn push(&mut self, point: Pose) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn len(&self) -> usize {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn first(&self) -> Option<&Pose> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn last(&self) -> Option<&Pose> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PidController` is never constructed
[INFO] [stdout]  --> src/math/pid.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct PidController {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update`, and `is_settled_for` are never used
[INFO] [stdout]   --> src/math/pid.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl PidController {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 44 |     pub fn new(kp: f32, ki: f32, kd: f32, tolerance: f32, max_integral: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn update(&mut self, current_error: f32, dt: Duration) -> f32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn is_settled_for(&self, duration: Duration) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `difference`, `scale`, `with_rotation`, `with_position`, and `to_components` are never used
[INFO] [stdout]   --> src/math/pose.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Pose {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 26 |     pub fn difference(self, target: Pose) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn scale(mut self, scale: f32) -> Pose {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn with_rotation(mut self, rotation: f32) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn with_position(mut self, position: Vec2) -> Pose {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn to_components(&self) -> (Vec2, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PurePursuitController` is never constructed
[INFO] [stdout]  --> src/math/pure_pursuit.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PurePursuitController {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `update` are never used
[INFO] [stdout]   --> src/math/pure_pursuit.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PurePursuitController {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new(lookahead_distance: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn update(&mut self, current_pose: Pose, route: &Route) -> Pose {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/math/twist.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Twist {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn new(linear: Vec2, omega: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `maixcam_state`, `qr_state`, and `odometry_state` are never used
[INFO] [stdout]   --> src/robot.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Robot {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn maixcam_state(&self) -> Guard<Arc<MaixcamState>> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn qr_state(&self) -> QrState {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn odometry_state(&self) -> OdometryState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_dashboard_thread` is never used
[INFO] [stdout]  --> src/tasks/dashboard.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn spawn_dashboard_thread() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `rand`
[INFO] [stderr]  --> Cargo.toml:7:1
[INFO] [stderr]   |
[INFO] [stderr] 7 | rand = "0.10.1"
[INFO] [stderr]   | ^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `rand`
[INFO] [stderr] warning: unused dependency `rqrr`
[INFO] [stderr]   --> Cargo.toml:37:1
[INFO] [stderr]    |
[INFO] [stderr] 37 | rqrr = "0.10.1"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rqrr`
[INFO] [stderr] warning: unused dependency `rscam`
[INFO] [stderr]   --> Cargo.toml:38:1
[INFO] [stderr]    |
[INFO] [stderr] 38 | rscam = "0.5.5"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `rscam`
[INFO] [stderr] warning: `wall3` (manifest) generated 3 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 22s
[INFO] running `Command { std: "docker" "inspect" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64", kill_on_drop: false }`
[INFO] [stdout] d8440464ac604daf8f9f63e67226da61eec40ed095f161a7d2f52999810dbe64
