[INFO] cloning repository https://github.com/St33f3n/Opencontroller
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/St33f3n/Opencontroller" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSt33f3n%2FOpencontroller", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSt33f3n%2FOpencontroller'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 570156d215fe17e32c0a833a1a422c7c0ac92904
[INFO] checking St33f3n/Opencontroller against master#32cd9114712a24010b0583624dc52ac302194128 for pr-143717
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSt33f3n%2FOpencontroller" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/St33f3n/Opencontroller
[INFO] finished tweaking git repo https://github.com/St33f3n/Opencontroller
[INFO] tweaked toml for git repo https://github.com/St33f3n/Opencontroller written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/St33f3n/Opencontroller on toolchain 32cd9114712a24010b0583624dc52ac302194128
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/St33f3n/Opencontroller 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" "+32cd9114712a24010b0583624dc52ac302194128" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded statum v0.1.48
[INFO] [stderr]   Downloaded rppal v0.22.1
[INFO] [stderr]   Downloaded statum-core v0.1.48
[INFO] [stderr]   Downloaded statum-macros v0.1.48
[INFO] [stderr]   Downloaded crsf v2.0.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 43f46a4192df47bbd1a7bcd550b8c843d1d260d0b60f8fe1eff611e684bf9450
[INFO] running `Command { std: "docker" "start" "-a" "43f46a4192df47bbd1a7bcd550b8c843d1d260d0b60f8fe1eff611e684bf9450", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "43f46a4192df47bbd1a7bcd550b8c843d1d260d0b60f8fe1eff611e684bf9450", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "43f46a4192df47bbd1a7bcd550b8c843d1d260d0b60f8fe1eff611e684bf9450", kill_on_drop: false }`
[INFO] [stdout] 43f46a4192df47bbd1a7bcd550b8c843d1d260d0b60f8fe1eff611e684bf9450
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+32cd9114712a24010b0583624dc52ac302194128" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3f8dadeab98478554d67bf9501106054a5fdb1b90eda75a941f6f54d05db614f
[INFO] running `Command { std: "docker" "start" "-a" "3f8dadeab98478554d67bf9501106054a5fdb1b90eda75a941f6f54d05db614f", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]    Compiling libc v0.2.170
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]     Checking once_cell v1.20.3
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]     Checking bitflags v2.8.0
[INFO] [stderr]     Checking log v0.4.26
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]    Compiling serde v1.0.218
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling pkg-config v0.3.31
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]    Compiling equivalent v1.0.2
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling winnow v0.7.3
[INFO] [stderr]    Compiling toml_datetime v0.6.8
[INFO] [stderr]    Compiling cc v1.2.15
[INFO] [stderr]     Checking libloading v0.8.6
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking parking v2.2.1
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling slab v0.4.9
[INFO] [stderr]    Compiling wayland-sys v0.31.6
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking downcast-rs v1.2.1
[INFO] [stderr]    Compiling indexmap v2.7.1
[INFO] [stderr]     Checking scoped-tls v1.0.1
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling wayland-client v0.31.8
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]     Checking endi v1.1.0
[INFO] [stderr]    Compiling quick-xml v0.37.2
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]     Checking event-listener-strategy v0.5.3
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]     Checking async-task v4.7.1
[INFO] [stderr]     Checking async-channel v2.3.1
[INFO] [stderr]     Checking piper v0.2.4
[INFO] [stderr]     Checking async-lock v3.4.0
[INFO] [stderr]    Compiling khronos_api v3.1.0
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking writeable v0.5.5
[INFO] [stderr]     Checking litemap v0.7.5
[INFO] [stderr]     Checking cpufeatures v0.2.17
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking blocking v1.6.1
[INFO] [stderr]     Checking async-executor v1.13.1
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]    Compiling xml-rs v0.8.25
[INFO] [stderr]     Checking foldhash v0.1.4
[INFO] [stderr]     Checking hex v0.4.3
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.8
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]     Checking cursor-icon v1.1.0
[INFO] [stderr]    Compiling toml_edit v0.22.24
[INFO] [stderr]    Compiling wayland-scanner v0.31.6
[INFO] [stderr]    Compiling smithay-client-toolkit v0.19.2
[INFO] [stderr]     Checking xcursor v0.3.8
[INFO] [stderr]     Checking async-fs v2.1.2
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking icu_locid_transform_data v1.5.0
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking xkeysym v0.2.1
[INFO] [stderr]     Checking memmap2 v0.9.5
[INFO] [stderr]     Checking strict-num v0.1.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking percent-encoding v2.3.1
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking arrayref v0.3.9
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking icu_properties_data v1.5.0
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]    Compiling wayland-backend v0.3.8
[INFO] [stderr]    Compiling ring v0.17.11
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking utf16_iter v1.0.5
[INFO] [stderr]     Checking adler2 v2.0.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]     Checking as-raw-xcb-connection v1.0.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking icu_normalizer_data v1.5.0
[INFO] [stderr]     Checking write16 v1.0.0
[INFO] [stderr]     Checking miniz_oxide v0.8.5
[INFO] [stderr]     Checking immutable-chunkmap v2.0.6
[INFO] [stderr]    Compiling winit v0.30.9
[INFO] [stderr]     Checking crc32fast v1.4.2
[INFO] [stderr]     Checking raw-window-handle v0.6.2
[INFO] [stderr]     Checking rustls-pki-types v1.11.0
[INFO] [stderr]    Compiling glutin_egl_sys v0.7.1
[INFO] [stderr]     Checking flate2 v1.1.0
[INFO] [stderr]    Compiling proc-macro-crate v3.2.0
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling glutin_glx_sys v0.6.1
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking epaint_default_fonts v0.31.1
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.0
[INFO] [stderr]     Checking profiling v1.0.16
[INFO] [stderr]     Checking ab_glyph v0.2.29
[INFO] [stderr]     Checking dpi v0.1.1
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking socket2 v0.5.8
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]    Compiling glutin v0.32.2
[INFO] [stderr]     Checking thread_local v1.1.8
[INFO] [stderr]     Checking bytes v1.10.0
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling backtrace v0.3.71
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling glutin-winit v0.5.0
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling statum-core v0.1.48
[INFO] [stderr]     Checking home v0.5.11
[INFO] [stderr]    Compiling rkyv v0.7.45
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking gimli v0.28.1
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]     Checking miniz_oxide v0.7.4
[INFO] [stderr]     Checking inotify v0.11.0
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking object v0.32.2
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]     Checking rustc-demangle v0.1.24
[INFO] [stderr]     Checking uuid v1.15.1
[INFO] [stderr]     Checking glow v0.16.0
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]     Checking openssl-probe v0.1.6
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]     Checking indenter v0.3.3
[INFO] [stderr]     Checking owo-colors v3.5.0
[INFO] [stderr]     Checking seahash v4.1.0
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]    Compiling gilrs v0.11.0
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]     Checking gilrs-core v0.6.2
[INFO] [stderr]     Checking rustls-native-certs v0.7.3
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking crc v3.2.1
[INFO] [stderr]     Checking fnv v1.0.7
[INFO] [stderr]     Checking iana-time-zone v0.1.61
[INFO] [stderr]     Checking bitfield v0.14.0
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]     Checking rppal v0.22.1
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]    Compiling ptr_meta_derive v0.1.4
[INFO] [stderr]    Compiling rkyv_derive v0.7.45
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking ptr_meta v0.1.4
[INFO] [stderr]    Compiling zvariant_utils v2.1.0
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]     Checking rustls-webpki v0.102.8
[INFO] [stderr]     Checking addr2line v0.21.0
[INFO] [stderr]    Compiling serde_derive v1.0.218
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling enumflags2_derive v0.7.11
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling zvariant_derive v4.2.0
[INFO] [stderr]    Compiling bytemuck_derive v1.8.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]     Checking wayland-protocols v0.32.6
[INFO] [stderr]    Compiling zbus_macros v4.4.0
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking bytemuck v1.21.0
[INFO] [stderr]    Compiling async-trait v0.1.86
[INFO] [stderr]    Compiling serde_repr v0.1.19
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling enumn v0.1.14
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking wayland-cursor v0.31.8
[INFO] [stderr]     Checking polling v3.7.4
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking image v0.25.5
[INFO] [stderr]     Checking tracing-error v0.2.1
[INFO] [stderr]    Compiling snafu-derive v0.8.5
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking color-spantrace v0.2.1
[INFO] [stderr]     Checking async-io v2.4.0
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking calloop-wayland-source v0.3.0
[INFO] [stderr]     Checking tokio v1.44.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling statum-macros v0.1.48
[INFO] [stderr]     Checking color-eyre v0.6.3
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking statum v0.1.48
[INFO] [stderr]     Checking snafu v0.8.5
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]     Checking crsf v2.0.1
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]    Compiling enumflags2 v0.7.11
[INFO] [stderr]    Compiling quick-xml v0.30.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.6
[INFO] [stderr]     Checking wayland-protocols-plasma v0.3.6
[INFO] [stderr]    Compiling zvariant v4.2.0
[INFO] [stderr]     Checking accesskit v0.17.1
[INFO] [stderr]     Checking emath v0.31.1
[INFO] [stderr]     Checking serde_spanned v0.6.8
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking tokio-rustls v0.25.0
[INFO] [stderr]     Checking tokio-util v0.7.13
[INFO] [stderr]     Checking ecolor v0.31.1
[INFO] [stderr]     Checking rumqttc v0.24.0
[INFO] [stderr]     Checking epaint v0.31.1
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking accesskit_consumer v0.26.0
[INFO] [stderr]     Checking arboard v3.4.1
[INFO] [stderr]     Checking webbrowser v1.0.3
[INFO] [stderr]     Checking sctk-adwaita v0.10.1
[INFO] [stderr]     Checking smithay-clipboard v0.7.2
[INFO] [stderr]     Checking toml v0.8.20
[INFO] [stderr]    Compiling zbus_names v3.0.0
[INFO] [stderr]     Checking egui v0.31.1
[INFO] [stderr]     Checking zbus_xml v4.0.0
[INFO] [stderr]     Checking zbus v4.4.0
[INFO] [stderr]     Checking zbus-lockstep v0.4.4
[INFO] [stderr]    Compiling zbus-lockstep-macros v0.4.4
[INFO] [stderr]     Checking atspi-common v0.6.0
[INFO] [stderr]     Checking egui_glow v0.31.1
[INFO] [stderr]     Checking atspi-proxies v0.6.0
[INFO] [stderr]     Checking accesskit_atspi_common v0.10.1
[INFO] [stderr]     Checking atspi-connection v0.6.0
[INFO] [stderr]     Checking atspi v0.22.0
[INFO] [stderr]     Checking accesskit_unix v0.13.1
[INFO] [stderr]     Checking accesskit_winit v0.23.1
[INFO] [stderr]     Checking egui-winit v0.31.1
[INFO] [stderr]     Checking eframe v0.31.1
[INFO] [stderr]     Checking opencontroller v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/controller/controller_handle.rs:9:35
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/custom.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/elrs.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/keyboard.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mapping::custom::CustomConfig`
[INFO] [stdout]   --> src/mapping/manager.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::mapping::custom::CustomConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rumqttc::tokio_rustls::rustls::KeyLog`
[INFO] [stdout]   --> src/mapping/manager.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use rumqttc::tokio_rustls::rustls::KeyLog;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> src/mapping/manager.rs:32:29
[INFO] [stdout]    |
[INFO] [stdout] 32 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::SecondsFormat`
[INFO] [stdout]   --> src/mqtt/config.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use chrono::SecondsFormat;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message_manager`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 | use super::{config, message_manager};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | use crate::persistence;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | use chrono::NaiveDateTime;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Incoming`, `MqttState`, and `PacketType`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:72:36
[INFO] [stdout]    |
[INFO] [stdout] 72 |     AsyncClient, Event, EventLoop, Incoming, MqttOptions, MqttState, Packet, PacketType, QoS,
[INFO] [stdout]    |                                    ^^^^^^^^               ^^^^^^^^^          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::time`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | use tracing_subscriber::fmt::time;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mqtt::mqtt_handler::Configured`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::mqtt::mqtt_handler::Configured;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConfigResult` and `PortalAction`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:28:35
[INFO] [stdout]    |
[INFO] [stdout] 28 |     config_portal::{ConfigPortal, ConfigResult, PortalAction},
[INFO] [stdout]    |                                   ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Receiver`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:35:34
[INFO] [stdout]    |
[INFO] [stdout] 35 | use tokio::sync::mpsc::{channel, Receiver, Sender};
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^         ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result` and `eyre`
[INFO] [stdout]   --> src/persistence/mod.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 | use color_eyre::eyre::{eyre, Result};
[INFO] [stdout]    |                        ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> src/persistence/mod.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec2` and `vec2`
[INFO] [stdout]   --> src/ui/common.rs:45:26
[INFO] [stdout]    |
[INFO] [stdout] 45 | use eframe::egui::{self, vec2, Color32, Frame, Stroke, Vec2};
[INFO] [stdout]    |                          ^^^^                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color32`, `Layout`, `Vec2`, and `self`
[INFO] [stdout]   --> src/ui/elrs_menu.rs:48:20
[INFO] [stdout]    |
[INFO] [stdout] 48 | use eframe::egui::{self, Color32, ComboBox, Frame, Layout, Stroke, Ui, Vec2};
[INFO] [stdout]    |                    ^^^^  ^^^^^^^                   ^^^^^^              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::session_client::SessionClient`
[INFO] [stdout]   --> src/ui/main_menu.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | use crate::persistence::session_client::SessionClient;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color32`
[INFO] [stdout]   --> src/ui/main_menu.rs:55:32
[INFO] [stdout]    |
[INFO] [stdout] 55 | use eframe::egui::{self, vec2, Color32, Frame, Label, ScrollArea, Stroke, TextEdit, Ui};
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/ui/main_menu.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Deref` and `str::FromStr`
[INFO] [stdout]   --> src/ui/main_menu.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | use std::{ops::Deref, str::FromStr};
[INFO] [stdout]    |           ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]   --> src/ui/main_menu.rs:60:22
[INFO] [stdout]    |
[INFO] [stdout] 60 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionData`
[INFO] [stdout]   --> src/ui/main_menu.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | use super::common::{SessionData, UiColors};
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `watch`
[INFO] [stdout]   --> src/ui/mqtt_menu.rs:88:25
[INFO] [stdout]    |
[INFO] [stdout] 88 | use tokio::sync::{mpsc, watch};
[INFO] [stdout]    |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/ui/mqtt_menu.rs:89:22
[INFO] [stdout]    |
[INFO] [stdout] 89 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color32`
[INFO] [stdout]   --> src/ui/settings_menu.rs:75:26
[INFO] [stdout]    |
[INFO] [stdout] 75 | use eframe::egui::{self, Color32, DragValue, Frame, Slider, Stroke, TextEdit, Ui};
[INFO] [stdout]    |                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color32`, `Context`, `Event`, and `Layout`
[INFO] [stdout]    --> src/ui/mod.rs:104:34
[INFO] [stdout]     |
[INFO] [stdout] 104 | use eframe::egui::{self, Button, Color32, Context, Event, Layout, Vec2};
[INFO] [stdout]     |                                  ^^^^^^^  ^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]    --> src/ui/mod.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 | use tracing::{debug, error, info, warn};
[INFO] [stdout]     |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mqtt::config::MqttConfig`
[INFO] [stdout]    --> src/ui/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | use crate::mqtt::config::MqttConfig;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConfigResult`
[INFO] [stdout]    --> src/ui/mod.rs:112:55
[INFO] [stdout]     |
[INFO] [stdout] 112 | use crate::persistence::config_portal::{ConfigPortal, ConfigResult};
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::session_client::SessionClient`
[INFO] [stdout]    --> src/ui/mod.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | use crate::persistence::session_client::SessionClient;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keyboard::KeyboardConfig`
[INFO] [stdout]   --> src/main.rs:27:22
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::mapping::{keyboard::KeyboardConfig, MappingEngineManager};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::config_portal::ConfigPortal`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::persistence::config_portal::ConfigPortal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mqtt::config::MqttConfig`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use mqtt::config::MqttConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error`, `info`, and `warn`
[INFO] [stdout]   --> src/main.rs:37:22
[INFO] [stdout]    |
[INFO] [stdout] 37 | use tracing::{debug, error, info, warn, Level};
[INFO] [stdout]    |                      ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ui::MQTTServer`
[INFO] [stdout]   --> src/main.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use ui::MQTTServer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/controller/controller_handle.rs:9:35
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, error, info, warn};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/custom.rs:10:15
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/elrs.rs:67:15
[INFO] [stdout]    |
[INFO] [stdout] 67 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]   --> src/mapping/keyboard.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mapping::custom::CustomConfig`
[INFO] [stdout]   --> src/mapping/manager.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::mapping::custom::CustomConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rumqttc::tokio_rustls::rustls::KeyLog`
[INFO] [stdout]   --> src/mapping/manager.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use rumqttc::tokio_rustls::rustls::KeyLog;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]   --> src/mapping/manager.rs:32:29
[INFO] [stdout]    |
[INFO] [stdout] 32 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::SecondsFormat`
[INFO] [stdout]   --> src/mqtt/config.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use chrono::SecondsFormat;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `message_manager`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:65:21
[INFO] [stdout]    |
[INFO] [stdout] 65 | use super::{config, message_manager};
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | use crate::persistence;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::NaiveDateTime`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:70:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | use chrono::NaiveDateTime;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Incoming`, `MqttState`, and `PacketType`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:72:36
[INFO] [stdout]    |
[INFO] [stdout] 72 |     AsyncClient, Event, EventLoop, Incoming, MqttOptions, MqttState, Packet, PacketType, QoS,
[INFO] [stdout]    |                                    ^^^^^^^^               ^^^^^^^^^          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::time`
[INFO] [stdout]   --> src/mqtt/mqtt_handler.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | use tracing_subscriber::fmt::time;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mqtt::mqtt_handler::Configured`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::mqtt::mqtt_handler::Configured;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ConfigResult` and `PortalAction`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:28:35
[INFO] [stdout]    |
[INFO] [stdout] 28 |     config_portal::{ConfigPortal, ConfigResult, PortalAction},
[INFO] [stdout]    |                                   ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Receiver`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:35:34
[INFO] [stdout]    |
[INFO] [stdout] 35 | use tokio::sync::mpsc::{channel, Receiver, Sender};
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `info`, and `warn`
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:37:15
[INFO] [stdout]    |
[INFO] [stdout] 37 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |               ^^^^^         ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result` and `eyre`
[INFO] [stdout]   --> src/persistence/mod.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 | use color_eyre::eyre::{eyre, Result};
[INFO] [stdout]    |                        ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]   --> src/persistence/mod.rs:36:17
[INFO] [stdout]    |
[INFO] [stdout] 36 | use std::path::{Path, PathBuf};
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec2` and `vec2`
[INFO] [stdout]   --> src/ui/common.rs:45:26
[INFO] [stdout]    |
[INFO] [stdout] 45 | use eframe::egui::{self, vec2, Color32, Frame, Stroke, Vec2};
[INFO] [stdout]    |                          ^^^^                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color32`, `Layout`, `Vec2`, and `self`
[INFO] [stdout]   --> src/ui/elrs_menu.rs:48:20
[INFO] [stdout]    |
[INFO] [stdout] 48 | use eframe::egui::{self, Color32, ComboBox, Frame, Layout, Stroke, Ui, Vec2};
[INFO] [stdout]    |                    ^^^^  ^^^^^^^                   ^^^^^^              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::session_client::SessionClient`
[INFO] [stdout]   --> src/ui/main_menu.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | use crate::persistence::session_client::SessionClient;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color32`
[INFO] [stdout]   --> src/ui/main_menu.rs:55:32
[INFO] [stdout]    |
[INFO] [stdout] 55 | use eframe::egui::{self, vec2, Color32, Frame, Label, ScrollArea, Stroke, TextEdit, Ui};
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/ui/main_menu.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Deref` and `str::FromStr`
[INFO] [stdout]   --> src/ui/main_menu.rs:58:11
[INFO] [stdout]    |
[INFO] [stdout] 58 | use std::{ops::Deref, str::FromStr};
[INFO] [stdout]    |           ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]   --> src/ui/main_menu.rs:60:22
[INFO] [stdout]    |
[INFO] [stdout] 60 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SessionData`
[INFO] [stdout]   --> src/ui/main_menu.rs:62:21
[INFO] [stdout]    |
[INFO] [stdout] 62 | use super::common::{SessionData, UiColors};
[INFO] [stdout]    |                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `watch`
[INFO] [stdout]   --> src/ui/mqtt_menu.rs:88:25
[INFO] [stdout]    |
[INFO] [stdout] 88 | use tokio::sync::{mpsc, watch};
[INFO] [stdout]    |                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/ui/mqtt_menu.rs:89:22
[INFO] [stdout]    |
[INFO] [stdout] 89 | use tracing::{debug, error, info, warn};
[INFO] [stdout]    |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color32`
[INFO] [stdout]   --> src/ui/settings_menu.rs:75:26
[INFO] [stdout]    |
[INFO] [stdout] 75 | use eframe::egui::{self, Color32, DragValue, Frame, Slider, Stroke, TextEdit, Ui};
[INFO] [stdout]    |                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color32`, `Context`, `Event`, and `Layout`
[INFO] [stdout]    --> src/ui/mod.rs:104:34
[INFO] [stdout]     |
[INFO] [stdout] 104 | use eframe::egui::{self, Button, Color32, Context, Event, Layout, Vec2};
[INFO] [stdout]     |                                  ^^^^^^^  ^^^^^^^  ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug`, `error`, and `warn`
[INFO] [stdout]    --> src/ui/mod.rs:108:15
[INFO] [stdout]     |
[INFO] [stdout] 108 | use tracing::{debug, error, info, warn};
[INFO] [stdout]     |               ^^^^^  ^^^^^        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mqtt::config::MqttConfig`
[INFO] [stdout]    --> src/ui/mod.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | use crate::mqtt::config::MqttConfig;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ConfigResult`
[INFO] [stdout]    --> src/ui/mod.rs:112:55
[INFO] [stdout]     |
[INFO] [stdout] 112 | use crate::persistence::config_portal::{ConfigPortal, ConfigResult};
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::session_client::SessionClient`
[INFO] [stdout]    --> src/ui/mod.rs:114:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | use crate::persistence::session_client::SessionClient;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keyboard::KeyboardConfig`
[INFO] [stdout]   --> src/main.rs:27:22
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::mapping::{keyboard::KeyboardConfig, MappingEngineManager};
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::persistence::config_portal::ConfigPortal`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::persistence::config_portal::ConfigPortal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mqtt::config::MqttConfig`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use mqtt::config::MqttConfig;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error`, `info`, and `warn`
[INFO] [stdout]   --> src/main.rs:37:22
[INFO] [stdout]    |
[INFO] [stdout] 37 | use tracing::{debug, error, info, warn, Level};
[INFO] [stdout]    |                      ^^^^^  ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ui::MQTTServer`
[INFO] [stdout]   --> src/main.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use ui::MQTTServer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_check` is never read
[INFO] [stdout]    --> src/mqtt/mqtt_handler.rs:565:17
[INFO] [stdout]     |
[INFO] [stdout] 565 |                 last_check = std::time::Instant::now();
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_check` is never read
[INFO] [stdout]    --> src/mqtt/mqtt_handler.rs:565:17
[INFO] [stdout]     |
[INFO] [stdout] 565 |                 last_check = std::time::Instant::now();
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mapping::MappingStrategy`
[INFO] [stdout]   --> src/mapping/manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::mapping::MappingStrategy;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mapping::MappingStrategy`
[INFO] [stdout]   --> src/mapping/manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::mapping::MappingStrategy;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ui`
[INFO] [stdout]    --> src/ui/common.rs:170:21
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn create_frame(ui: &mut egui::Ui, bg_color: Color32, border_color: Color32) -> Frame {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_ui`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:268:13
[INFO] [stdout]     |
[INFO] [stdout] 268 |         let result = session_action!(@create, self.session_sender, session_name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:300:13
[INFO] [stdout]     |
[INFO] [stdout] 300 |         let result = session_action!(@load, self.session_sender, name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |         let result = session_action!(@delete, self.session_sender, name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `validation` is never read
[INFO] [stdout]    --> src/ui/mqtt_menu.rs:649:33
[INFO] [stdout]     |
[INFO] [stdout] 649 |                         let mut validation = false;
[INFO] [stdout]     |                                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/ui/mod.rs:350:47
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
[INFO] [stdout]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elrs_rx`
[INFO] [stdout]    --> src/main.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |     let (elrs_tx, elrs_rx) = mpsc::channel(100);
[INFO] [stdout]     |                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elrs_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `custom_rx`
[INFO] [stdout]    --> src/main.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (custom_tx, custom_rx) = mpsc::channel(100);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_custom_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `activate_mqtt_tx`
[INFO] [stdout]    --> src/main.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let (activate_mqtt_tx, activate_mqtt_rx) = watch::channel(true);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_activate_mqtt_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ui`
[INFO] [stdout]    --> src/ui/common.rs:170:21
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn create_frame(ui: &mut egui::Ui, bg_color: Color32, border_color: Color32) -> Frame {
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_ui`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:268:13
[INFO] [stdout]     |
[INFO] [stdout] 268 |         let result = session_action!(@create, self.session_sender, session_name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:300:13
[INFO] [stdout]     |
[INFO] [stdout] 300 |         let result = session_action!(@load, self.session_sender, name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/ui/main_menu.rs:315:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |         let result = session_action!(@delete, self.session_sender, name);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `validation` is never read
[INFO] [stdout]    --> src/ui/mqtt_menu.rs:649:33
[INFO] [stdout]     |
[INFO] [stdout] 649 |                         let mut validation = false;
[INFO] [stdout]     |                                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/ui/mod.rs:350:47
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
[INFO] [stdout]     |                                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state_sender` is never read
[INFO] [stdout]    --> src/controller/event_processor.rs:651:5
[INFO] [stdout]     |
[INFO] [stdout] 650 | pub struct ProcessorHandle {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] 651 |     state_sender: mpsc::Sender<ControllerOutput>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/mapping/custom.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub struct CustomStrategy {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 180 |     context: MappingContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/mapping/elrs.rs:376:5
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub struct ELRSStrategy {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 375 |     config: ELRSConfig,
[INFO] [stdout] 376 |     context: MappingContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `worker_handle` and `autosave_handle` are never read
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct PersistenceManager {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     worker_handle: tokio::task::JoinHandle<()>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 73 |     /// Handle to the autosave task for independent cleanup
[INFO] [stdout] 74 |     autosave_handle: tokio::task::JoinHandle<()>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config_portal` and `session_sender` are never read
[INFO] [stdout]    --> src/ui/mod.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct OpencontrollerUI {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 188 |     config_portal: Arc<ConfigPortal>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     session_sender: mpsc::Sender<SessionAction>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `log_controller_state` is never used
[INFO] [stdout]    --> src/ui/mod.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl OpencontrollerUI {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn log_controller_state(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transmitter_port` is never read
[INFO] [stdout]   --> src/ui/elrs_menu.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct ELRSMenuData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 76 |     /// Current transmitter port identifier (placeholder)
[INFO] [stdout] 77 |     transmitter_port: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config_portal` is never read
[INFO] [stdout]   --> src/ui/main_menu.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct MainMenuData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 89 |     /// Direct access to configuration portal for immediate reads
[INFO] [stdout] 90 |     config_portal: Arc<ConfigPortal>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delet_session` is never used
[INFO] [stdout]    --> src/ui/main_menu.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl MainMenuData {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 314 |     fn delet_session(&mut self, name: String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `elrs_rx`
[INFO] [stdout]    --> src/main.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |     let (elrs_tx, elrs_rx) = mpsc::channel(100);
[INFO] [stdout]     |                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_elrs_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `custom_rx`
[INFO] [stdout]    --> src/main.rs:116:21
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let (custom_tx, custom_rx) = mpsc::channel(100);
[INFO] [stdout]     |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_custom_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `activate_mqtt_tx`
[INFO] [stdout]    --> src/main.rs:119:10
[INFO] [stdout]     |
[INFO] [stdout] 119 |     let (activate_mqtt_tx, activate_mqtt_rx) = watch::channel(true);
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_activate_mqtt_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | /     eframe::run_native(
[INFO] [stdout] 163 | |         "OpenController",
[INFO] [stdout] 164 | |         native_options,
[INFO] [stdout] 165 | |         Box::new(|cc| {
[INFO] [stdout] ...   |
[INFO] [stdout] 174 | |         }),
[INFO] [stdout] 175 | |     );
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _ = eframe::run_native(
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:287:17
[INFO] [stdout]     |
[INFO] [stdout] 287 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 288 | |                     *guard = session_config;
[INFO] [stdout] 289 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 290 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:293:17
[INFO] [stdout]     |
[INFO] [stdout] 293 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 294 | |                     guard.session_name = name;
[INFO] [stdout] 295 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 296 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:299:17
[INFO] [stdout]     |
[INFO] [stdout] 299 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 300 | |                     guard.last_session = last_session;
[INFO] [stdout] 301 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 302 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 299 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:305:17
[INFO] [stdout]     |
[INFO] [stdout] 305 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 306 | |                     guard.path = path;
[INFO] [stdout] 307 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 308 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 305 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:311:17
[INFO] [stdout]     |
[INFO] [stdout] 311 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 312 | |                     guard.available_sessions = sessions;
[INFO] [stdout] 313 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 314 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 311 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:334:17
[INFO] [stdout]     |
[INFO] [stdout] 334 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 335 | |                     *guard = ui_config;
[INFO] [stdout] 336 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 337 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 334 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 341 | |                     guard.theme = theme;
[INFO] [stdout] 342 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 343 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 340 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:346:17
[INFO] [stdout]     |
[INFO] [stdout] 346 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 347 | |                     guard.fps = fps;
[INFO] [stdout] 348 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 349 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 346 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:369:17
[INFO] [stdout]     |
[INFO] [stdout] 369 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 370 | |                     guard.elrs_mapping = elrs_config;
[INFO] [stdout] 371 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 372 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 369 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:375:17
[INFO] [stdout]     |
[INFO] [stdout] 375 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 376 | |                     guard.keyboard_mapping = keyboard_config;
[INFO] [stdout] 377 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 378 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:381:17
[INFO] [stdout]     |
[INFO] [stdout] 381 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 382 | |                     *guard = controller_config;
[INFO] [stdout] 383 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 384 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 | /                 try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout] 400 | |                     guard.mqtt_config = mqtt_config;
[INFO] [stdout] 401 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 402 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let _ = try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:405:17
[INFO] [stdout]     |
[INFO] [stdout] 405 | /                 try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout] 406 | |                     *guard = connection_config;
[INFO] [stdout] 407 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 408 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 405 |                 let _ = try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:423:17
[INFO] [stdout]     |
[INFO] [stdout] 423 | /                 try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout] 424 | |                     *guard = saved_messages;
[INFO] [stdout] 425 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 426 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 423 |                 let _ = try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:429:17
[INFO] [stdout]     |
[INFO] [stdout] 429 | /                 try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout] 430 | |                     guard.msg = messages;
[INFO] [stdout] 431 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 432 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 429 |                 let _ = try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:516:9
[INFO] [stdout]     |
[INFO] [stdout] 516 |         self.save_current_session().await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let _ = self.save_current_session().await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:531:17
[INFO] [stdout]     |
[INFO] [stdout] 531 | /                 new_session
[INFO] [stdout] 532 | |                     .save_current_session()
[INFO] [stdout] 533 | |                     .await
[INFO] [stdout] 534 | |                     .map_err(|_e| eyre!("Failed to save loaded session"));
[INFO] [stdout]     | |_________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 531 |                 let _ = new_session
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:614:13
[INFO] [stdout]     |
[INFO] [stdout] 614 |             self.clone().change_session(&last_session).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 614 |             let _ = self.clone().change_session(&last_session).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:657:13
[INFO] [stdout]     |
[INFO] [stdout] 657 |             config.save_current_session().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 657 |             let _ = config.save_current_session().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `state_sender` is never read
[INFO] [stdout]    --> src/controller/event_processor.rs:651:5
[INFO] [stdout]     |
[INFO] [stdout] 650 | pub struct ProcessorHandle {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] 651 |     state_sender: mpsc::Sender<ControllerOutput>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/mapping/custom.rs:180:5
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub struct CustomStrategy {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 180 |     context: MappingContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `context` is never read
[INFO] [stdout]    --> src/mapping/elrs.rs:376:5
[INFO] [stdout]     |
[INFO] [stdout] 374 | pub struct ELRSStrategy {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] 375 |     config: ELRSConfig,
[INFO] [stdout] 376 |     context: MappingContext,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `worker_handle` and `autosave_handle` are never read
[INFO] [stdout]   --> src/persistence/persistence_worker.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub struct PersistenceManager {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 72 |     worker_handle: tokio::task::JoinHandle<()>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 73 |     /// Handle to the autosave task for independent cleanup
[INFO] [stdout] 74 |     autosave_handle: tokio::task::JoinHandle<()>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `config_portal` and `session_sender` are never read
[INFO] [stdout]    --> src/ui/mod.rs:188:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct OpencontrollerUI {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 188 |     config_portal: Arc<ConfigPortal>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     session_sender: mpsc::Sender<SessionAction>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `log_controller_state` is never used
[INFO] [stdout]    --> src/ui/mod.rs:266:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl OpencontrollerUI {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 266 |     fn log_controller_state(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `transmitter_port` is never read
[INFO] [stdout]   --> src/ui/elrs_menu.rs:77:5
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct ELRSMenuData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 76 |     /// Current transmitter port identifier (placeholder)
[INFO] [stdout] 77 |     transmitter_port: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config_portal` is never read
[INFO] [stdout]   --> src/ui/main_menu.rs:90:5
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct MainMenuData {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 89 |     /// Direct access to configuration portal for immediate reads
[INFO] [stdout] 90 |     config_portal: Arc<ConfigPortal>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `delet_session` is never used
[INFO] [stdout]    --> src/ui/main_menu.rs:314:8
[INFO] [stdout]     |
[INFO] [stdout] 111 | impl MainMenuData {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 314 |     fn delet_session(&mut self, name: String) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 | /     eframe::run_native(
[INFO] [stdout] 163 | |         "OpenController",
[INFO] [stdout] 164 | |         native_options,
[INFO] [stdout] 165 | |         Box::new(|cc| {
[INFO] [stdout] ...   |
[INFO] [stdout] 174 | |         }),
[INFO] [stdout] 175 | |     );
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _ = eframe::run_native(
[INFO] [stdout]     |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:287:17
[INFO] [stdout]     |
[INFO] [stdout] 287 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 288 | |                     *guard = session_config;
[INFO] [stdout] 289 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 290 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:293:17
[INFO] [stdout]     |
[INFO] [stdout] 293 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 294 | |                     guard.session_name = name;
[INFO] [stdout] 295 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 296 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 293 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:299:17
[INFO] [stdout]     |
[INFO] [stdout] 299 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 300 | |                     guard.last_session = last_session;
[INFO] [stdout] 301 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 302 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 299 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:305:17
[INFO] [stdout]     |
[INFO] [stdout] 305 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 306 | |                     guard.path = path;
[INFO] [stdout] 307 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 308 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 305 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:311:17
[INFO] [stdout]     |
[INFO] [stdout] 311 | /                 try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout] 312 | |                     guard.available_sessions = sessions;
[INFO] [stdout] 313 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 314 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 311 |                 let _ = try_lock!(@write_lock_retry, self.session.clone(), |guard: &mut SessionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:334:17
[INFO] [stdout]     |
[INFO] [stdout] 334 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 335 | |                     *guard = ui_config;
[INFO] [stdout] 336 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 337 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 334 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:340:17
[INFO] [stdout]     |
[INFO] [stdout] 340 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 341 | |                     guard.theme = theme;
[INFO] [stdout] 342 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 343 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 340 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:346:17
[INFO] [stdout]     |
[INFO] [stdout] 346 | /                 try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout] 347 | |                     guard.fps = fps;
[INFO] [stdout] 348 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 349 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 346 |                 let _ = try_lock!(@write_lock_retry, self.ui_config.clone(), |guard: &mut UIConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:369:17
[INFO] [stdout]     |
[INFO] [stdout] 369 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 370 | |                     guard.elrs_mapping = elrs_config;
[INFO] [stdout] 371 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 372 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 369 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:375:17
[INFO] [stdout]     |
[INFO] [stdout] 375 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 376 | |                     guard.keyboard_mapping = keyboard_config;
[INFO] [stdout] 377 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 378 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 375 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:381:17
[INFO] [stdout]     |
[INFO] [stdout] 381 | /                 try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout] 382 | |                     *guard = controller_config;
[INFO] [stdout] 383 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 384 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let _ = try_lock!(@write_lock_retry, self.controller_config.clone(), |guard: &mut ControllerConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:399:17
[INFO] [stdout]     |
[INFO] [stdout] 399 | /                 try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout] 400 | |                     guard.mqtt_config = mqtt_config;
[INFO] [stdout] 401 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 402 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 399 |                 let _ = try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:405:17
[INFO] [stdout]     |
[INFO] [stdout] 405 | /                 try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout] 406 | |                     *guard = connection_config;
[INFO] [stdout] 407 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 408 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 405 |                 let _ = try_lock!(@write_lock_retry, self.connection_config.clone(), |guard: &mut ConnectionConfig| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:423:17
[INFO] [stdout]     |
[INFO] [stdout] 423 | /                 try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout] 424 | |                     *guard = saved_messages;
[INFO] [stdout] 425 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 426 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 423 |                 let _ = try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/config_portal.rs:429:17
[INFO] [stdout]     |
[INFO] [stdout] 429 | /                 try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout] 430 | |                     guard.msg = messages;
[INFO] [stdout] 431 | |                     Ok::<ConfigResult, Error>(ConfigResult::Success)
[INFO] [stdout] 432 | |                 })
[INFO] [stdout]     | |__________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 429 |                 let _ = try_lock!(@write_lock_retry, self.msg_save.clone(), |guard: &mut SavedMessages| {
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:516:9
[INFO] [stdout]     |
[INFO] [stdout] 516 |         self.save_current_session().await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let _ = self.save_current_session().await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:531:17
[INFO] [stdout]     |
[INFO] [stdout] 531 | /                 new_session
[INFO] [stdout] 532 | |                     .save_current_session()
[INFO] [stdout] 533 | |                     .await
[INFO] [stdout] 534 | |                     .map_err(|_e| eyre!("Failed to save loaded session"));
[INFO] [stdout]     | |_________________________________________________________________________^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 531 |                 let _ = new_session
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:614:13
[INFO] [stdout]     |
[INFO] [stdout] 614 |             self.clone().change_session(&last_session).await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 614 |             let _ = self.clone().change_session(&last_session).await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/persistence/session_client.rs:657:13
[INFO] [stdout]     |
[INFO] [stdout] 657 |             config.save_current_session().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 657 |             let _ = config.save_current_session().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 36s
[INFO] running `Command { std: "docker" "inspect" "3f8dadeab98478554d67bf9501106054a5fdb1b90eda75a941f6f54d05db614f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3f8dadeab98478554d67bf9501106054a5fdb1b90eda75a941f6f54d05db614f", kill_on_drop: false }`
[INFO] [stdout] 3f8dadeab98478554d67bf9501106054a5fdb1b90eda75a941f6f54d05db614f
