[INFO] cloning repository https://github.com/shunte88/LyMonS [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shunte88/LyMonS" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshunte88%2FLyMonS", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshunte88%2FLyMonS'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] c96f0e114100d959bb815781fb659b4f53fcfcf0 [INFO] checking shunte88/LyMonS against master#eeb94be79adc9df7a09ad0b2421f16e60e6d932c for pr-152971 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshunte88%2FLyMonS" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/shunte88/LyMonS [INFO] finished tweaking git repo https://github.com/shunte88/LyMonS [INFO] tweaked toml for git repo https://github.com/shunte88/LyMonS written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/shunte88/LyMonS on toolchain eeb94be79adc9df7a09ad0b2421f16e60e6d932c [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/shunte88/LyMonS already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded memoffset v0.6.5 [INFO] [stderr] Downloaded sysfs_gpio v0.6.2 [INFO] [stderr] Downloaded wayland-sys v0.29.5 [INFO] [stderr] Downloaded linux-embedded-hal v0.4.0 [INFO] [stderr] Downloaded num_enum_derive v0.6.1 [INFO] [stderr] Downloaded display-interface v0.5.0 [INFO] [stderr] Downloaded unicode-script v0.5.7 [INFO] [stderr] Downloaded yoke-derive v0.8.0 [INFO] [stderr] Downloaded translators v0.1.5 [INFO] [stderr] Downloaded wayland-cursor v0.29.5 [INFO] [stderr] Downloaded writeable v0.6.1 [INFO] [stderr] Downloaded macon_derive v1.3.0 [INFO] [stderr] Downloaded quinn-udp v0.5.12 [INFO] [stderr] Downloaded litemap v0.8.0 [INFO] [stderr] Downloaded utf8-width v0.1.7 [INFO] [stderr] Downloaded embedded-graphics-framebuf v0.5.0 [INFO] [stderr] Downloaded errno v0.3.12 [INFO] [stderr] Downloaded windows-strings v0.4.2 [INFO] [stderr] Downloaded neli-proc-macros v0.1.4 [INFO] [stderr] Downloaded tower-http v0.6.6 [INFO] [stderr] Downloaded embedded-dma v0.2.0 [INFO] [stderr] Downloaded windows-core v0.61.2 [INFO] [stderr] Downloaded triomphe v0.1.14 [INFO] [stderr] Downloaded clap v4.5.39 [INFO] [stderr] Downloaded safe_arch v0.7.4 [INFO] [stderr] Downloaded wide v0.7.33 [INFO] [stderr] Downloaded async-compression v0.4.25 [INFO] [stderr] Downloaded embedded-text v0.7.2 [INFO] [stderr] Downloaded glow v0.12.3 [INFO] [stderr] Downloaded clap_builder v4.5.39 [INFO] [stderr] Downloaded wgpu-core v0.16.1 [INFO] [stderr] Downloaded chrono v0.4.41 [INFO] [stderr] Downloaded rustls v0.23.27 [INFO] [stderr] Downloaded winit v0.28.7 [INFO] [stderr] Downloaded wgpu-hal v0.16.2 [INFO] [stderr] Downloaded portable-atomic v1.11.0 [INFO] [stderr] Downloaded wgpu v0.16.3 [INFO] [stderr] Downloaded h2 v0.4.10 [INFO] [stderr] Downloaded macon v1.3.0 [INFO] [stderr] Downloaded rustfft v6.4.0 [INFO] [stderr] Downloaded zerocopy v0.8.25 [INFO] [stderr] Downloaded pulldown-cmark v0.9.6 [INFO] [stderr] Downloaded web-sys v0.3.72 [INFO] [stderr] Downloaded ash v0.37.3+1.3.251 [INFO] [stderr] Downloaded naga v0.12.3 [INFO] [stderr] Downloaded rustybuzz v0.20.1 [INFO] [stderr] Downloaded syn v2.0.101 [INFO] [stderr] Downloaded resvg v0.45.1 [INFO] [stderr] Downloaded nix v0.25.1 [INFO] [stderr] Downloaded rppal v0.14.1 [INFO] [stderr] Downloaded webpki-roots v1.0.0 [INFO] [stderr] Downloaded android-activity v0.4.3 [INFO] [stderr] Downloaded micromath v2.1.0 [INFO] [stderr] Downloaded jiff-static v0.2.14 [INFO] [stderr] Downloaded mini-moka v0.10.3 [INFO] [stderr] Downloaded tokio v1.47.1 [INFO] [stderr] Downloaded ultraviolet v0.9.2 [INFO] [stderr] Downloaded wgpu-types v0.16.1 [INFO] [stderr] Downloaded quinn-proto v0.11.12 [INFO] [stderr] Downloaded nix v0.23.2 [INFO] [stderr] Downloaded hyper v1.6.0 [INFO] [stderr] Downloaded clap_derive v4.5.32 [INFO] [stderr] Downloaded jiff v0.2.14 [INFO] [stderr] Downloaded neli v0.6.5 [INFO] [stderr] Downloaded camino v1.1.10 [INFO] [stderr] Downloaded error-chain v0.12.4 [INFO] [stderr] Downloaded tempfile v3.20.0 [INFO] [stderr] Downloaded hassle-rs v0.10.0 [INFO] [stderr] Downloaded pixels v0.13.0 [INFO] [stderr] Downloaded rgb v0.8.51 [INFO] [stderr] Downloaded strength_reduce v0.2.4 [INFO] [stderr] Downloaded html-escape v0.2.13 [INFO] [stderr] Downloaded hyper-rustls v0.27.6 [INFO] [stderr] Downloaded tiny-skia v0.8.4 [INFO] [stderr] Downloaded object-chain v0.1.3 [INFO] [stderr] Downloaded local-ip-address v0.6.5 [INFO] [stderr] Downloaded cargo_metadata v0.14.2 [INFO] [stderr] Downloaded tagptr v0.2.0 [INFO] [stderr] Downloaded reqwest v0.12.23 [INFO] [stderr] Downloaded usvg v0.45.1 [INFO] [stderr] Downloaded icu_properties_data v2.0.1 [INFO] [stderr] Downloaded wayland-protocols v0.29.5 [INFO] [stderr] Downloaded pulldown-cmark v0.11.3 [INFO] [stderr] Downloaded orbclient v0.3.50 [INFO] [stderr] Downloaded skeptic v0.13.7 [INFO] [stderr] Downloaded tokio-util v0.7.15 [INFO] [stderr] Downloaded iri-string v0.7.8 [INFO] [stderr] Downloaded kurbo v0.11.2 [INFO] [stderr] Downloaded smithay-client-toolkit v0.16.1 [INFO] [stderr] Downloaded clap_lex v0.7.4 [INFO] [stderr] Downloaded env v1.0.1 [INFO] [stderr] Downloaded anstyle-wincon v3.0.8 [INFO] [stderr] Downloaded gpu-descriptor-types v0.1.2 [INFO] [stderr] Downloaded gpu-descriptor v0.2.4 [INFO] [stderr] Downloaded primal-check v0.3.4 [INFO] [stderr] Downloaded icu_collections v2.0.0 [INFO] [stderr] Downloaded zerovec v0.11.2 [INFO] [stderr] Downloaded io-uring v0.7.10 [INFO] [stderr] Downloaded hyper-util v0.1.12 [INFO] [stderr] Downloaded zerocopy-derive v0.8.25 [INFO] [stderr] Downloaded quinn v0.11.8 [INFO] [stderr] Downloaded serde_core v1.0.225 [INFO] [stderr] Downloaded backtrace v0.3.75 [INFO] [stderr] Downloaded transpose v0.2.3 [INFO] [stderr] Downloaded windows-result v0.3.4 [INFO] [stderr] Downloaded rustls-webpki v0.103.3 [INFO] [stderr] Downloaded icu_normalizer_data v2.0.0 [INFO] [stderr] Downloaded ssd1309 v0.4.0 [INFO] [stderr] Downloaded icu_locale_core v2.0.0 [INFO] [stderr] Downloaded icu_provider v2.0.0 [INFO] [stderr] Downloaded zerotrie v0.2.2 [INFO] [stderr] Downloaded icu_properties v2.0.1 [INFO] [stderr] Downloaded rustls-pki-types v1.12.0 [INFO] [stderr] Downloaded tinyvec v1.9.0 [INFO] [stderr] Downloaded calloop v0.10.6 [INFO] [stderr] Downloaded wayland-client v0.29.5 [INFO] [stderr] Downloaded ssd1306 v0.10.0 [INFO] [stderr] Downloaded serialport v4.7.3 [INFO] [stderr] Downloaded macon_api v1.3.0 [INFO] [stderr] Downloaded icu_normalizer v2.0.0 [INFO] [stderr] Downloaded serde_derive v1.0.225 [INFO] [stderr] Downloaded socket2 v0.6.0 [INFO] [stderr] Downloaded svgtypes v0.15.3 [INFO] [stderr] Downloaded tiny-skia-path v0.8.4 [INFO] [stderr] Downloaded unicase v2.8.1 [INFO] [stderr] Downloaded maybe-async-cfg v0.2.4 [INFO] [stderr] Downloaded gpio-cdev v0.6.0 [INFO] [stderr] Downloaded io-kit-sys v0.4.1 [INFO] [stderr] Downloaded cc v1.2.24 [INFO] [stderr] Downloaded itertools v0.7.11 [INFO] [stderr] Downloaded yoke v0.8.0 [INFO] [stderr] Downloaded memmap2 v0.9.8 [INFO] [stderr] Downloaded crc32fast v1.4.2 [INFO] [stderr] Downloaded embedded-graphics-core v0.4.0 [INFO] [stderr] Downloaded i2cdev v0.6.1 [INFO] [stderr] Downloaded spidev v0.6.0 [INFO] [stderr] Downloaded tokio-rustls v0.26.2 [INFO] [stderr] Downloaded embedded-graphics v0.8.1 [INFO] [stderr] Downloaded tinystr v0.8.1 [INFO] [stderr] Downloaded serde v1.0.225 [INFO] [stderr] Downloaded zerovec-derive v0.11.1 [INFO] [stderr] Downloaded redox_syscall v0.5.12 [INFO] [stderr] Downloaded signal-hook-registry v1.4.5 [INFO] [stderr] Downloaded simplecss v0.2.2 [INFO] [stderr] Downloaded az v1.2.1 [INFO] [stderr] Downloaded unescaper v0.1.6 [INFO] [stderr] Downloaded imagesize v0.13.0 [INFO] [stderr] Downloaded num_enum v0.6.1 [INFO] [stderr] Downloaded sctk-adwaita v0.5.4 [INFO] [stderr] Downloaded wayland-commons v0.29.5 [INFO] [stderr] Downloaded bumpalo v3.17.0 [INFO] [stderr] Downloaded potential_utf v0.1.2 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.45 [INFO] [stderr] Downloaded unicode-ccc v0.4.0 [INFO] [stderr] Downloaded display-interface-i2c v0.5.0 [INFO] [stderr] Downloaded unicode-bidi-mirroring v0.4.0 [INFO] [stderr] Downloaded cast v0.3.0 [INFO] [stderr] Downloaded winit_input_helper v0.14.1 [INFO] [stderr] Downloaded byte-slice-cast v1.2.3 [INFO] [stderr] Downloaded display-interface-spi v0.5.0 [INFO] [stderr] Downloaded display-interface v0.4.1 [INFO] [stderr] Downloaded ssd1322 v0.3.0 [INFO] [stderr] Downloaded sh1106 v0.5.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 023b5900d59bee4878f3896b4d91b5d94a1224d9616b0b7b1733c626296eeae9 [INFO] running `Command { std: "docker" "start" "-a" "023b5900d59bee4878f3896b4d91b5d94a1224d9616b0b7b1733c626296eeae9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "023b5900d59bee4878f3896b4d91b5d94a1224d9616b0b7b1733c626296eeae9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "023b5900d59bee4878f3896b4d91b5d94a1224d9616b0b7b1733c626296eeae9", kill_on_drop: false }` [INFO] [stdout] 023b5900d59bee4878f3896b4d91b5d94a1224d9616b0b7b1733c626296eeae9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 004b36bd29b04138070c3dd2506ae016bcf6e0f364ed386ee7d639abd35f4361 [INFO] running `Command { std: "docker" "start" "-a" "004b36bd29b04138070c3dd2506ae016bcf6e0f364ed386ee7d639abd35f4361", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.4.0 [INFO] [stderr] Compiling proc-macro2 v1.0.95 [INFO] [stderr] Compiling unicode-ident v1.0.18 [INFO] [stderr] Compiling libc v0.2.174 [INFO] [stderr] Checking scopeguard v1.2.0 [INFO] [stderr] Checking smallvec v1.15.0 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking byteorder v1.5.0 [INFO] [stderr] Checking bitflags v1.3.2 [INFO] [stderr] Compiling az v1.2.1 [INFO] [stderr] Checking memchr v2.7.4 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking pin-project-lite v0.2.16 [INFO] [stderr] Compiling parking_lot_core v0.9.11 [INFO] [stderr] Compiling version_check v0.9.5 [INFO] [stderr] Checking futures-core v0.3.31 [INFO] [stderr] Checking nb v1.1.0 [INFO] [stderr] Checking embedded-hal v1.0.0 [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Compiling serde_core v1.0.225 [INFO] [stderr] Checking bytes v1.10.1 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling lock_api v0.4.13 [INFO] [stderr] Compiling memoffset v0.7.1 [INFO] [stderr] Compiling memoffset v0.6.5 [INFO] [stderr] Compiling quote v1.0.40 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking futures-sink v0.3.31 [INFO] [stderr] Checking itoa v1.0.15 [INFO] [stderr] Compiling syn v2.0.101 [INFO] [stderr] Checking log v0.4.27 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Checking embedded-graphics-core v0.4.0 [INFO] [stderr] Checking micromath v2.1.0 [INFO] [stderr] Compiling shlex v1.3.0 [INFO] [stderr] Compiling serde v1.0.225 [INFO] [stderr] Checking futures-io v0.3.31 [INFO] [stderr] Checking futures-channel v0.3.31 [INFO] [stderr] Compiling cc v1.2.24 [INFO] [stderr] Checking nb v0.1.3 [INFO] [stderr] Checking fnv v1.0.7 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking void v1.0.2 [INFO] [stderr] Checking futures-task v0.3.31 [INFO] [stderr] Checking float-cmp v0.9.0 [INFO] [stderr] Checking embedded-hal v0.2.7 [INFO] [stderr] Checking http v1.3.1 [INFO] [stderr] Checking embedded-hal-nb v1.0.0 [INFO] [stderr] Checking litemap v0.8.0 [INFO] [stderr] Checking writeable v0.6.1 [INFO] [stderr] Checking cast v0.3.0 [INFO] [stderr] Checking embedded-graphics v0.8.1 [INFO] [stderr] Compiling icu_properties_data v2.0.1 [INFO] [stderr] Checking simd-adler32 v0.3.7 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Checking nix v0.26.4 [INFO] [stderr] Checking parking_lot v0.12.4 [INFO] [stderr] Checking signal-hook-registry v1.4.5 [INFO] [stderr] Checking socket2 v0.6.0 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking nix v0.27.1 [INFO] [stderr] Checking nix v0.23.2 [INFO] [stderr] Checking gpio-cdev v0.6.0 [INFO] [stderr] Compiling icu_normalizer_data v2.0.0 [INFO] [stderr] Checking zeroize v1.8.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Checking equivalent v1.0.2 [INFO] [stderr] Checking rustls-pki-types v1.12.0 [INFO] [stderr] Checking indexmap v2.13.0 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Checking tracing-core v0.1.33 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking percent-encoding v2.3.1 [INFO] [stderr] Checking untrusted v0.9.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling embedded-hal-async v1.0.0 [INFO] [stderr] Checking adler2 v2.0.0 [INFO] [stderr] Checking miniz_oxide v0.8.8 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking crc32fast v1.4.2 [INFO] [stderr] Checking tower-service v0.3.3 [INFO] [stderr] Checking try-lock v0.2.5 [INFO] [stderr] Checking atomic-waker v1.1.2 [INFO] [stderr] Checking bytemuck v1.23.1 [INFO] [stderr] Compiling rustls v0.23.27 [INFO] [stderr] Compiling pulldown-cmark v0.11.3 [INFO] [stderr] Checking base64 v0.22.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Checking core_maths v0.1.1 [INFO] [stderr] Checking spidev v0.6.0 [INFO] [stderr] Checking i2cdev v0.6.1 [INFO] [stderr] Checking sysfs_gpio v0.6.2 [INFO] [stderr] Checking want v0.3.1 [INFO] [stderr] Checking flate2 v1.1.2 [INFO] [stderr] Checking aho-corasick v1.1.3 [INFO] [stderr] Compiling slotmap v1.0.7 [INFO] [stderr] Checking display-interface v0.5.0 [INFO] [stderr] Compiling unicase v2.8.1 [INFO] [stderr] Compiling zerocopy v0.8.25 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Checking ryu v1.0.20 [INFO] [stderr] Checking regex-syntax v0.8.5 [INFO] [stderr] Checking utf8parse v0.2.2 [INFO] [stderr] Checking arrayvec v0.7.6 [INFO] [stderr] Checking subtle v2.6.1 [INFO] [stderr] Checking anstyle-parse v0.2.6 [INFO] [stderr] Checking rustls-webpki v0.103.3 [INFO] [stderr] Checking ttf-parser v0.25.1 [INFO] [stderr] Checking form_urlencoded v1.2.1 [INFO] [stderr] Checking socket2 v0.5.9 [INFO] [stderr] Checking strict-num v0.1.1 [INFO] [stderr] Compiling memoffset v0.9.1 [INFO] [stderr] Checking sync_wrapper v1.0.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling serde_derive v1.0.225 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking unescaper v0.1.6 [INFO] [stderr] Checking serialport v4.7.3 [INFO] [stderr] Checking regex-automata v0.4.9 [INFO] [stderr] Checking zerovec v0.11.2 [INFO] [stderr] Checking linux-embedded-hal v0.4.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Compiling ssd1309 v0.4.0 [INFO] [stderr] Checking either v1.15.0 [INFO] [stderr] Checking roxmltree v0.20.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.21 [INFO] [stderr] Checking tower-layer v0.3.3 [INFO] [stderr] Compiling cfg_aliases v0.2.1 [INFO] [stderr] Checking ipnet v2.11.0 [INFO] [stderr] Compiling sh1106 v0.5.0 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Checking arrayref v0.3.9 [INFO] [stderr] Checking is_terminal_polyfill v1.70.1 [INFO] [stderr] Checking utf8_iter v1.0.4 [INFO] [stderr] Checking anstyle v1.0.10 [INFO] [stderr] Checking byte-slice-cast v1.2.3 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Checking colorchoice v1.0.3 [INFO] [stderr] Checking anstyle-query v1.1.2 [INFO] [stderr] Checking tinyvec v1.9.0 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking anstream v0.6.18 [INFO] [stderr] Checking display-interface-spi v0.5.0 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking fontconfig-parser v0.5.8 [INFO] [stderr] Checking regex v1.11.1 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Compiling nix v0.29.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking itertools v0.7.11 [INFO] [stderr] Compiling maybe-async-cfg v0.2.4 [INFO] [stderr] Checking kurbo v0.11.2 [INFO] [stderr] Checking display-interface-i2c v0.5.0 [INFO] [stderr] Checking webpki-roots v1.0.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking memmap2 v0.9.8 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling iana-time-zone v0.1.63 [INFO] [stderr] Checking siphasher v1.0.1 [INFO] [stderr] Checking iri-string v0.7.8 [INFO] [stderr] Checking unicode-bidi-mirroring v0.4.0 [INFO] [stderr] Checking unicode-script v0.5.7 [INFO] [stderr] Checking unicode-properties v0.1.3 [INFO] [stderr] Checking unicode-ccc v0.4.0 [INFO] [stderr] Checking display-interface v0.4.1 [INFO] [stderr] Checking svgtypes v0.15.3 [INFO] [stderr] Checking png v0.17.16 [INFO] [stderr] Compiling neli-proc-macros v0.1.4 [INFO] [stderr] Checking rustybuzz v0.20.1 [INFO] [stderr] Checking ssd1306 v0.10.0 [INFO] [stderr] Compiling chrono v0.4.41 [INFO] [stderr] Checking tokio-util v0.7.15 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-rustls v0.26.2 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking h2 v0.4.10 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking fontdb v0.23.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking ssd1322 v0.3.0 [INFO] [stderr] Compiling macon_derive v1.3.0 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking simplecss v0.2.2 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking data-url v0.3.1 [INFO] [stderr] Checking unicode-bidi v0.3.18 [INFO] [stderr] Checking byteorder-lite v0.1.0 [INFO] [stderr] Checking imagesize v0.13.0 [INFO] [stderr] Checking pico-args v0.5.0 [INFO] [stderr] Checking zune-core v0.4.12 [INFO] [stderr] Checking clap_lex v0.7.4 [INFO] [stderr] Compiling mini-moka v0.10.3 [INFO] [stderr] Checking color_quant v1.1.0 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Checking strsim v0.11.1 [INFO] [stderr] Compiling anyhow v1.0.98 [INFO] [stderr] Checking macon_api v1.3.0 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Checking weezl v0.1.10 [INFO] [stderr] Checking xmlwriter v0.1.0 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Checking unicode-vo v0.1.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking mime v0.3.17 [INFO] [stderr] Checking utf8-width v0.1.7 [INFO] [stderr] Checking transpose v0.2.3 [INFO] [stderr] Checking html-escape v0.2.13 [INFO] [stderr] Checking usvg v0.45.1 [INFO] [stderr] Checking gif v0.13.3 [INFO] [stderr] Compiling clap_derive v4.5.32 [INFO] [stderr] Checking macon v1.3.0 [INFO] [stderr] Checking clap_builder v4.5.39 [INFO] [stderr] Checking image-webp v0.2.3 [INFO] [stderr] Checking zune-jpeg v0.4.19 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Compiling LyMonS v0.2.8 (/opt/rustwide/workdir) [INFO] [stderr] Checking crossbeam-channel v0.5.15 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking neli v0.6.5 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Checking primal-check v0.3.4 [INFO] [stderr] Checking env_filter v0.1.3 [INFO] [stderr] Checking rgb v0.8.51 [INFO] [stderr] Checking dirs-sys-next v0.1.2 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking embedded-dma v0.2.0 [INFO] [stderr] Checking jiff v0.2.14 [INFO] [stderr] Checking tagptr v0.2.0 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Checking hyper-util v0.1.12 [INFO] [stderr] Checking unsafe-libyaml v0.2.11 [INFO] [stderr] Checking triomphe v0.1.14 [INFO] [stderr] Checking object-chain v0.1.3 [INFO] [stderr] Checking urlencoding v2.1.3 [INFO] [stderr] Checking embedded-text v0.7.2 [INFO] [stderr] Checking clap v4.5.39 [INFO] [stderr] Checking env v1.0.1 [INFO] [stderr] Checking mac_address v1.1.8 [INFO] [stderr] Checking rustfft v6.4.0 [INFO] [stderr] Checking embedded-graphics-framebuf v0.5.0 [INFO] [stderr] Checking resvg v0.45.1 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking dirs-next v2.0.0 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Checking local-ip-address v0.6.5 [INFO] [stderr] Checking hyper-rustls v0.27.6 [INFO] [stderr] Checking reqwest v0.12.23 [INFO] [stderr] Checking async-compression v0.4.25 [INFO] [stderr] Checking libloading v0.8.9 [INFO] [stderr] Checking lymons-driver-sh1106 v1.0.0 (/opt/rustwide/workdir/drivers/lymons-driver-sh1106) [INFO] [stderr] Checking lymons-driver-ssd1322 v1.0.0 (/opt/rustwide/workdir/drivers/lymons-driver-ssd1322) [INFO] [stderr] Checking lymons-driver-ssd1306 v1.0.0 (/opt/rustwide/workdir/drivers/lymons-driver-ssd1306) [INFO] [stderr] Checking lymons-driver-ssd1309 v1.0.0 (/opt/rustwide/workdir/drivers/lymons-driver-ssd1309) [INFO] [stderr] Checking translators v0.1.5 [INFO] [stderr] Checking env_logger v0.11.8 [INFO] [stdout] warning: unused imports: `Local` and `Timelike` [INFO] [stdout] --> src/main.rs:34:14 [INFO] [stdout] | [INFO] [stdout] 34 | use chrono::{Timelike, Local}; [INFO] [stdout] | ^^^^^^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/config.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `c_void` [INFO] [stdout] --> src/display/plugin/ffi.rs:30:16 [INFO] [stdout] | [INFO] [stdout] 30 | use std::ffi::{c_void, c_char}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::raw::c_int` [INFO] [stdout] --> src/display/plugin/ffi.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use std::os::raw::c_int; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::CStr` [INFO] [stdout] --> src/display/plugin/loader.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use std::ffi::CStr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LyMonsBusConfig`, `LyMonsBusType`, `LyMonsColorDepth`, `LyMonsDisplayCapabilities`, `LyMonsDisplayConfig`, `LyMonsDriverHandle`, `LyMonsErrorCode`, `LyMonsError`, and `LyMonsPluginVTable` [INFO] [stdout] --> src/display/plugin/mod.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | LyMonsPluginVTable, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 66 | LyMonsDriverHandle, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 67 | LyMonsErrorCode, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 68 | LyMonsError, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 69 | LyMonsDisplayConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 70 | LyMonsDisplayCapabilities, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | LyMonsBusConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | LyMonsBusType, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 73 | LyMonsColorDepth, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LoadedPlugin` [INFO] [stdout] --> src/display/plugin/mod.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | pub use loader::{PluginLoader, LoadedPlugin}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PageLayout` [INFO] [stdout] --> src/display/manager.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | PageLayout, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::Pixel` [INFO] [stdout] --> src/display/manager.rs:1422:13 [INFO] [stdout] | [INFO] [stdout] 1422 | use embedded_graphics::Pixel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::Pixel` [INFO] [stdout] --> src/display/manager.rs:1577:13 [INFO] [stdout] | [INFO] [stdout] 1577 | use embedded_graphics::Pixel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `PrimitiveStyle` and `Rectangle as EgRect` [INFO] [stdout] --> src/display/manager.rs:1755:45 [INFO] [stdout] | [INFO] [stdout] 1755 | use embedded_graphics::primitives::{PrimitiveStyle, Rectangle as EgRect}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Line` [INFO] [stdout] --> src/display/components/status_bar.rs:230:45 [INFO] [stdout] | [INFO] [stdout] 230 | use embedded_graphics::primitives::{Line}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::text::TextStyle` [INFO] [stdout] --> src/display/components/scrollers.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use embedded_graphics::text::TextStyle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GetPixel` [INFO] [stdout] --> src/display/components/clock.rs:271:47 [INFO] [stdout] | [INFO] [stdout] 271 | use embedded_graphics::image::{Image, GetPixel}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::primitives::Rectangle as EgRectangle` [INFO] [stdout] --> src/display/components/clock.rs:296:13 [INFO] [stdout] | [INFO] [stdout] 296 | use embedded_graphics::primitives::Rectangle as EgRectangle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PrimitiveStyleBuilder` [INFO] [stdout] --> src/display/components/visualizer.rs:26:53 [INFO] [stdout] | [INFO] [stdout] 26 | use embedded_graphics::primitives::{PrimitiveStyle, PrimitiveStyleBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConvertColor` [INFO] [stdout] --> src/display/components/visualizer.rs:31:35 [INFO] [stdout] | [INFO] [stdout] 31 | use crate::display::color_proxy::{ConvertColor}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `primitives::Rectangle` [INFO] [stdout] --> src/display/components/easter_eggs.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | primitives::Rectangle, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FieldType` [INFO] [stdout] --> src/display/layout_manager.rs:24:27 [INFO] [stdout] | [INFO] [stdout] 24 | use super::field::{Field, FieldType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DrawableDisplay` [INFO] [stdout] --> src/display/mod.rs:71:33 [INFO] [stdout] | [INFO] [stdout] 71 | pub use traits::{DisplayDriver, DrawableDisplay, DisplayCapabilities, ColorDepth}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DisplayFactoryError` [INFO] [stdout] --> src/display/mod.rs:72:31 [INFO] [stdout] | [INFO] [stdout] 72 | pub use error::{DisplayError, DisplayFactoryError}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AssetType`, `FontSize`, and `LayoutCategory` [INFO] [stdout] --> src/display/mod.rs:75:32 [INFO] [stdout] | [INFO] [stdout] 75 | pub use layout::{LayoutConfig, LayoutCategory, AssetType, FontSize}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FieldType` [INFO] [stdout] --> src/display/mod.rs:77:24 [INFO] [stdout] | [INFO] [stdout] 77 | pub use field::{Field, FieldType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ColorValue` and `Color` [INFO] [stdout] --> src/display/mod.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | pub use color::{Color, ColorValue}; [INFO] [stdout] | ^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1306::Ssd1306Driver` [INFO] [stdout] --> src/display/mod.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | pub use drivers::ssd1306::Ssd1306Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1309::Ssd1309Driver` [INFO] [stdout] --> src/display/mod.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | pub use drivers::ssd1309::Ssd1309Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1322::Ssd1322Driver` [INFO] [stdout] --> src/display/mod.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub use drivers::ssd1322::Ssd1322Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::sh1106::Sh1106Driver` [INFO] [stdout] --> src/display/mod.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | pub use drivers::sh1106::Sh1106Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FixedOffset` and `Utc` [INFO] [stdout] --> src/weather.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | use chrono::{DateTime, Local, FixedOffset, Utc}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryColor` and `PixelColor` [INFO] [stdout] --> src/vision.rs:47:18 [INFO] [stdout] | [INFO] [stdout] 47 | pixelcolor::{BinaryColor, PixelColor}, [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LEVEL_DECAY_STEPS_PER_FRAME` [INFO] [stdout] --> src/visualizer.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | LEVEL_DECAY_STEPS_PER_FRAME, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/vuphysics_new.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | use log::{warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Local` and `Timelike` [INFO] [stdout] --> src/main.rs:34:14 [INFO] [stdout] | [INFO] [stdout] 34 | use chrono::{Timelike, Local}; [INFO] [stdout] | ^^^^^^^^ ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize` [INFO] [stdout] --> src/config.rs:1:13 [INFO] [stdout] | [INFO] [stdout] 1 | use serde::{Deserialize, Serialize}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `c_void` [INFO] [stdout] --> src/display/plugin/ffi.rs:30:16 [INFO] [stdout] | [INFO] [stdout] 30 | use std::ffi::{c_void, c_char}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::os::raw::c_int` [INFO] [stdout] --> src/display/plugin/ffi.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use std::os::raw::c_int; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::CStr` [INFO] [stdout] --> src/display/plugin/loader.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use std::ffi::CStr; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `LyMonsBusConfig`, `LyMonsBusType`, `LyMonsColorDepth`, `LyMonsDisplayCapabilities`, `LyMonsDisplayConfig`, `LyMonsDriverHandle`, `LyMonsErrorCode`, `LyMonsError`, and `LyMonsPluginVTable` [INFO] [stdout] --> src/display/plugin/mod.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | LyMonsPluginVTable, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 66 | LyMonsDriverHandle, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 67 | LyMonsErrorCode, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 68 | LyMonsError, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 69 | LyMonsDisplayConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 70 | LyMonsDisplayCapabilities, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 71 | LyMonsBusConfig, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 72 | LyMonsBusType, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] 73 | LyMonsColorDepth, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LoadedPlugin` [INFO] [stdout] --> src/display/plugin/mod.rs:76:32 [INFO] [stdout] | [INFO] [stdout] 76 | pub use loader::{PluginLoader, LoadedPlugin}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PageLayout` [INFO] [stdout] --> src/display/manager.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | PageLayout, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::Pixel` [INFO] [stdout] --> src/display/manager.rs:1422:13 [INFO] [stdout] | [INFO] [stdout] 1422 | use embedded_graphics::Pixel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::Pixel` [INFO] [stdout] --> src/display/manager.rs:1577:13 [INFO] [stdout] | [INFO] [stdout] 1577 | use embedded_graphics::Pixel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `PrimitiveStyle` and `Rectangle as EgRect` [INFO] [stdout] --> src/display/manager.rs:1755:45 [INFO] [stdout] | [INFO] [stdout] 1755 | use embedded_graphics::primitives::{PrimitiveStyle, Rectangle as EgRect}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Line` [INFO] [stdout] --> src/display/components/status_bar.rs:230:45 [INFO] [stdout] | [INFO] [stdout] 230 | use embedded_graphics::primitives::{Line}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::text::TextStyle` [INFO] [stdout] --> src/display/components/scrollers.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use embedded_graphics::text::TextStyle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `GetPixel` [INFO] [stdout] --> src/display/components/clock.rs:271:47 [INFO] [stdout] | [INFO] [stdout] 271 | use embedded_graphics::image::{Image, GetPixel}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `embedded_graphics::primitives::Rectangle as EgRectangle` [INFO] [stdout] --> src/display/components/clock.rs:296:13 [INFO] [stdout] | [INFO] [stdout] 296 | use embedded_graphics::primitives::Rectangle as EgRectangle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PrimitiveStyleBuilder` [INFO] [stdout] --> src/display/components/visualizer.rs:26:53 [INFO] [stdout] | [INFO] [stdout] 26 | use embedded_graphics::primitives::{PrimitiveStyle, PrimitiveStyleBuilder}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ConvertColor` [INFO] [stdout] --> src/display/components/visualizer.rs:31:35 [INFO] [stdout] | [INFO] [stdout] 31 | use crate::display::color_proxy::{ConvertColor}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `primitives::Rectangle` [INFO] [stdout] --> src/display/components/easter_eggs.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | primitives::Rectangle, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FieldType` [INFO] [stdout] --> src/display/layout_manager.rs:24:27 [INFO] [stdout] | [INFO] [stdout] 24 | use super::field::{Field, FieldType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DrawableDisplay` [INFO] [stdout] --> src/display/mod.rs:71:33 [INFO] [stdout] | [INFO] [stdout] 71 | pub use traits::{DisplayDriver, DrawableDisplay, DisplayCapabilities, ColorDepth}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DisplayFactoryError` [INFO] [stdout] --> src/display/mod.rs:72:31 [INFO] [stdout] | [INFO] [stdout] 72 | pub use error::{DisplayError, DisplayFactoryError}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `AssetType`, `FontSize`, and `LayoutCategory` [INFO] [stdout] --> src/display/mod.rs:75:32 [INFO] [stdout] | [INFO] [stdout] 75 | pub use layout::{LayoutConfig, LayoutCategory, AssetType, FontSize}; [INFO] [stdout] | ^^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FieldType` [INFO] [stdout] --> src/display/mod.rs:77:24 [INFO] [stdout] | [INFO] [stdout] 77 | pub use field::{Field, FieldType}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ColorValue` and `Color` [INFO] [stdout] --> src/display/mod.rs:80:17 [INFO] [stdout] | [INFO] [stdout] 80 | pub use color::{Color, ColorValue}; [INFO] [stdout] | ^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1306::Ssd1306Driver` [INFO] [stdout] --> src/display/mod.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | pub use drivers::ssd1306::Ssd1306Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1309::Ssd1309Driver` [INFO] [stdout] --> src/display/mod.rs:103:9 [INFO] [stdout] | [INFO] [stdout] 103 | pub use drivers::ssd1309::Ssd1309Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::ssd1322::Ssd1322Driver` [INFO] [stdout] --> src/display/mod.rs:106:9 [INFO] [stdout] | [INFO] [stdout] 106 | pub use drivers::ssd1322::Ssd1322Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `drivers::sh1106::Sh1106Driver` [INFO] [stdout] --> src/display/mod.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | pub use drivers::sh1106::Sh1106Driver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `FixedOffset` and `Utc` [INFO] [stdout] --> src/weather.rs:32:31 [INFO] [stdout] | [INFO] [stdout] 32 | use chrono::{DateTime, Local, FixedOffset, Utc}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `BinaryColor` and `PixelColor` [INFO] [stdout] --> src/vision.rs:47:18 [INFO] [stdout] | [INFO] [stdout] 47 | pixelcolor::{BinaryColor, PixelColor}, [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `LEVEL_DECAY_STEPS_PER_FRAME` [INFO] [stdout] --> src/visualizer.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | LEVEL_DECAY_STEPS_PER_FRAME, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> src/vuphysics_new.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | use log::{warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | let mut peak_hold_l: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | let mut peak_hold_r: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut peak_hold_m: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | let mut peak_hold_l: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | let mut peak_hold_r: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/visualizer.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut peak_hold_m: u8 = 0; [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inverted` [INFO] [stdout] --> src/display/traits.rs:111:30 [INFO] [stdout] | [INFO] [stdout] 111 | fn set_invert(&mut self, inverted: bool) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inverted` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `poll_handle` [INFO] [stdout] --> src/display/manager.rs:3090:14 [INFO] [stdout] | [INFO] [stdout] 3090 | let (poll_handle, weather_rx) = weather.start_polling_with_watch().await [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_poll_handle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/display/components/weather.rs:99:29 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `viz` [INFO] [stdout] --> src/display/components/visualizer.rs:1248:9 [INFO] [stdout] | [INFO] [stdout] 1248 | viz: &mut Visual, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_viz` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `inverted` [INFO] [stdout] --> src/display/traits.rs:111:30 [INFO] [stdout] | [INFO] [stdout] 111 | fn set_invert(&mut self, inverted: bool) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inverted` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parse_f64` [INFO] [stdout] --> src/sliminfo.rs:262:13 [INFO] [stdout] | [INFO] [stdout] 262 | let parse_f64 = |s: &Option| { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parse_f64` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `poll_handle` [INFO] [stdout] --> src/display/manager.rs:3090:14 [INFO] [stdout] | [INFO] [stdout] 3090 | let (poll_handle, weather_rx) = weather.start_polling_with_watch().await [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_poll_handle` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `top_scale` [INFO] [stdout] --> src/vision.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | top_scale: i32, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_top_scale` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bottom_scale` [INFO] [stdout] --> src/vision.rs:288:5 [INFO] [stdout] | [INFO] [stdout] 288 | bottom_scale: i32, [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bottom_scale` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_l` [INFO] [stdout] --> src/visualizer.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | let mut peak_hold_l: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_r` [INFO] [stdout] --> src/visualizer.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | let mut peak_hold_r: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_m` [INFO] [stdout] --> src/visualizer.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut peak_hold_m: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_m` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i2c_bus_path` [INFO] [stdout] --> src/main.rs:932:9 [INFO] [stdout] | [INFO] [stdout] 932 | let i2c_bus_path = matches.get_one::("i2c-bus").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_bus_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `target` [INFO] [stdout] --> src/display/components/weather.rs:99:29 [INFO] [stdout] | [INFO] [stdout] 99 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unified_display_loop` is never used [INFO] [stdout] --> src/main.rs:89:10 [INFO] [stdout] | [INFO] [stdout] 89 | async fn unified_display_loop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ConfigError` is never used [INFO] [stdout] --> src/config.rs:9:10 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum ConfigError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load` is never used [INFO] [stdout] --> src/config.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn load() -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_config_file` is never used [INFO] [stdout] --> src/config.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn find_config_file() -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_yaml` is never used [INFO] [stdout] --> src/config.rs:130:4 [INFO] [stdout] | [INFO] [stdout] 130 | fn read_yaml(path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge` is never used [INFO] [stdout] --> src/config.rs:137:4 [INFO] [stdout] | [INFO] [stdout] 137 | fn merge(dst: &mut Config, src: Config) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_display` is never used [INFO] [stdout] --> src/config.rs:148:4 [INFO] [stdout] | [INFO] [stdout] 148 | fn merge_display(dst: &mut DisplayConfig, src: DisplayConfig) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cli_overrides` is never used [INFO] [stdout] --> src/config.rs:158:4 [INFO] [stdout] | [INFO] [stdout] 158 | fn apply_cli_overrides(cfg: &mut Config, cli: &Cli) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate` is never used [INFO] [stdout] --> src/config.rs:177:4 [INFO] [stdout] | [INFO] [stdout] 177 | fn validate(cfg: &Config) -> Result<(), ConfigError> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEG_TO_RAD` is never used [INFO] [stdout] --> src/trig.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const DEG_TO_RAD: f32 = core::f32::consts::PI / 180.0; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RAD_TO_DEG` is never used [INFO] [stdout] --> src/trig.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const RAD_TO_DEG: f32 = 180.0 / core::f32::consts::PI; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `sinf` is never used [INFO] [stdout] --> src/trig.rs:32:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub fn sinf(x: f32) -> f32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cosf` is never used [INFO] [stdout] --> src/trig.rs:50:8 [INFO] [stdout] | [INFO] [stdout] 50 | pub fn cosf(x: f32) -> f32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `reduce_pi_over_2` is never used [INFO] [stdout] --> src/trig.rs:66:4 [INFO] [stdout] | [INFO] [stdout] 66 | fn reduce_pi_over_2(x: f32) -> (f32, i32) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `sin_poly` is never used [INFO] [stdout] --> src/trig.rs:84:4 [INFO] [stdout] | [INFO] [stdout] 84 | fn sin_poly(r: f32) -> f32 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cos_poly` is never used [INFO] [stdout] --> src/trig.rs:100:4 [INFO] [stdout] | [INFO] [stdout] 100 | fn cos_poly(r: f32) -> f32 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Draw` is never constructed [INFO] [stdout] --> src/drawsvg.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum PutSvgError { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 40 | Draw(DE), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PutSvgError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_svg_async` is never used [INFO] [stdout] --> src/drawsvg.rs:55:14 [INFO] [stdout] | [INFO] [stdout] 55 | pub async fn get_svg_async ( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_svg` is never used [INFO] [stdout] --> src/drawsvg.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn put_svg( [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_svg_async` is never used [INFO] [stdout] --> src/drawsvg.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | pub async fn put_svg_async( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_svg_gray4_binary` is never used [INFO] [stdout] --> src/drawsvg.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 187 | pub fn get_svg_gray4_binary( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_any`, `as_any_mut`, `dimensions`, and `clear` are never used [INFO] [stdout] --> src/display/traits.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub trait DisplayDriver: Send + Sync { [INFO] [stdout] | ------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 68 | fn as_any(&self) -> &dyn std::any::Any; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | fn as_any_mut(&mut self) -> &mut dyn std::any::Any; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn dimensions(&self) -> (u32, u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | fn clear(&mut self) -> Result<(), DisplayError>; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DrawableDisplay` is never used [INFO] [stdout] --> src/display/traits.rs:143:11 [INFO] [stdout] | [INFO] [stdout] 143 | pub trait DrawableDisplay: DisplayDriver { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `SpiError` and `GpioError` are never constructed [INFO] [stdout] --> src/display/error.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum DisplayError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 37 | SpiError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | GpioError(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DisplayError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `dimensions`, `as_mono_mut`, `as_mono`, `as_gray4_mut`, `as_gray4`, and `as_bytes` are never used [INFO] [stdout] --> src/display/framebuffer.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl FrameBuffer { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn dimensions(&self) -> (u32, u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn as_mono_mut(&mut self) -> &mut VarFrameBuf { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn as_mono(&self) -> Option<&VarFrameBuf> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn as_gray4_mut(&mut self) -> &mut VarFrameBuf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn as_gray4(&self) -> Option<&VarFrameBuf> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn as_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `validate_config` is never used [INFO] [stdout] --> src/display/factory.rs:258:12 [INFO] [stdout] | [INFO] [stdout] 50 | impl DisplayDriverFactory { [INFO] [stdout] | ------------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 258 | pub fn validate_config(config: &DisplayConfig) -> Result<(), DisplayFactoryError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Black`, `DarkGray`, `Gray`, `LightGray`, and `Grayscale` are never constructed [INFO] [stdout] --> src/display/color.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub enum Color { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 33 | /// Black/Off (0% intensity) [INFO] [stdout] 34 | Black, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | DarkGray, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | Gray, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | LightGray, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | Grayscale(u8), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Color` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `to_color_depth` and `luminance` are never used [INFO] [stdout] --> src/display/color.rs:100:12 [INFO] [stdout] | [INFO] [stdout] 61 | impl Color { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | pub fn to_color_depth(&self, depth: ColorDepth) -> ColorValue { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn luminance(&self) -> u8 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ColorValue` is never used [INFO] [stdout] --> src/display/color.rs:125:10 [INFO] [stdout] | [INFO] [stdout] 125 | pub enum ColorValue { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_binary` and `as_gray4` are never used [INFO] [stdout] --> src/display/color.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl ColorValue { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 131 | /// Get as BinaryColor (converts if needed) [INFO] [stdout] 132 | pub fn as_binary(&self) -> BinaryColor { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn as_gray4(&self) -> Gray4 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `OFF` and `ON` are never used [INFO] [stdout] --> src/display/color.rs:164:15 [INFO] [stdout] | [INFO] [stdout] 163 | impl Color { [INFO] [stdout] | ---------- associated constants in this implementation [INFO] [stdout] 164 | pub const OFF: Color = Color::Black; [INFO] [stdout] | ^^^ [INFO] [stdout] 165 | pub const ON: Color = Color::White; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Pal16` is never used [INFO] [stdout] --> src/display/color_proxy.rs:64:10 [INFO] [stdout] | [INFO] [stdout] 64 | pub enum Pal16 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `to_gray4` and `to_binary` are never used [INFO] [stdout] --> src/display/color_proxy.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 83 | impl Pal16 { [INFO] [stdout] | ---------- methods in this implementation [INFO] [stdout] 84 | /// Convert palette color to grayscale value (0-15) [INFO] [stdout] 85 | pub fn to_gray4(self) -> Gray4 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn to_binary(self) -> BinaryColor { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `ColorProxy` is never used [INFO] [stdout] --> src/display/color_proxy.rs:101:11 [INFO] [stdout] | [INFO] [stdout] 101 | pub trait ColorProxy { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MonoProxy` is never constructed [INFO] [stdout] --> src/display/color_proxy.rs:115:12 [INFO] [stdout] | [INFO] [stdout] 115 | pub struct MonoProxy; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Gray4Proxy` is never constructed [INFO] [stdout] --> src/display/color_proxy.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct Gray4Proxy; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ErrorNullPointer` and `ErrorAbiMismatch` are never constructed [INFO] [stdout] --> src/display/plugin/ffi.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum LyMonsErrorCode { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 82 | ErrorNullPointer = 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | ErrorAbiMismatch = 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyMonsErrorCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `driver_type` and `abi_version` are never read [INFO] [stdout] --> src/display/plugin/loader.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub driver_type: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub abi_version: (u32, u32, u32), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `plugin_name` and `plugin_version` are never used [INFO] [stdout] --> src/display/plugin/adapter.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl PluginDriverAdapter { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn plugin_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn plugin_version(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `color_depth`, `status_bar`, `content_area`, `fonts`, `clock`, and `weather` are never read [INFO] [stdout] --> src/display/layout.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct LayoutConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 39 | pub color_depth: ColorDepth, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | pub status_bar: StatusBarLayout, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub content_area: ContentAreaLayout, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fonts: FontSizes, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub clock: ClockLayout, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 63 | pub weather: WeatherLayout, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LayoutConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `height`, `y`, `icon_size`, `spacing`, and `font_size` are never read [INFO] [stdout] --> src/display/layout.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct StatusBarLayout { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 85 | /// Height of status bar in pixels [INFO] [stdout] 86 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub y: u32, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub icon_size: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub spacing: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StatusBarLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `y`, `height`, `margin_left`, `margin_right`, `margin_top`, and `margin_bottom` are never read [INFO] [stdout] --> src/display/layout.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct ContentAreaLayout { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 104 | /// Y position where content starts (after status bar) [INFO] [stdout] 105 | pub y: u32, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub margin_left: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub margin_right: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub margin_top: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub margin_bottom: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ContentAreaLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `height`, `vu_segments`, `peak_height`, and `hist_bar_width` are never read [INFO] [stdout] --> src/display/layout.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 125 | pub struct VisualizerLayout { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub vu_segments: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub peak_height: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub hist_bar_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VisualizerLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `digit_width`, `digit_height`, `digit_spacing`, `date_font_size`, `clock_y`, and `date_y` are never read [INFO] [stdout] --> src/display/layout.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 147 | pub struct ClockLayout { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 148 | /// Digit width for large clock digits [INFO] [stdout] 149 | pub digit_width: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub digit_height: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub digit_spacing: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub date_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub clock_y: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub date_y: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClockLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `icon_size`, `temp_font_size`, `condition_font_size`, `forecast_font_size`, and `forecast_days` are never read [INFO] [stdout] --> src/display/layout.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 169 | pub struct WeatherLayout { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 170 | /// Icon size for weather icons [INFO] [stdout] 171 | pub icon_size: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub temp_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | pub condition_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub forecast_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 183 | pub forecast_days: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `status`, `content`, `time`, `clock_digits`, and `weather` are never read [INFO] [stdout] --> src/display/layout.rs:209:9 [INFO] [stdout] | [INFO] [stdout] 207 | pub struct FontSizes { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 208 | /// Status bar text [INFO] [stdout] 209 | pub status: FontSize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub content: FontSize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub time: FontSize, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub clock_digits: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub weather: FontSize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FontSizes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `asset_path_for`, `scale_width`, `scale_height`, `scroll_speed`, `recommended_fps`, and `supports_grayscale` are never used [INFO] [stdout] --> src/display/layout.rs:432:12 [INFO] [stdout] | [INFO] [stdout] 224 | impl LayoutConfig { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 432 | pub fn asset_path_for(&self, asset_type: AssetType) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 453 | pub fn scale_width(&self, reference_value: u32) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | pub fn scale_height(&self, reference_value: u32) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn scroll_speed(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 475 | pub fn recommended_fps(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn supports_grayscale(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AssetType` is never used [INFO] [stdout] --> src/display/layout.rs:491:10 [INFO] [stdout] | [INFO] [stdout] 491 | pub enum AssetType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `layout_for_resolution` is never used [INFO] [stdout] --> src/display/layout.rs:503:8 [INFO] [stdout] | [INFO] [stdout] 503 | pub fn layout_for_resolution(width: u32, height: u32, color_depth: ColorDepth) -> LayoutConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `track_buffer` is never read [INFO] [stdout] --> src/display/manager.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct RenderBuffers { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 66 | pub track_buffer: ArrayString<128>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RenderBuffers` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `format_hms` is never used [INFO] [stdout] --> src/display/manager.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 82 | impl RenderBuffers { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn format_hms(&mut self, seconds: f32) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `easter_eggs_component`, `last_viz_state`, `album`, and `weather_wind_speed_units` are never read [INFO] [stdout] --> src/display/manager.rs:255:5 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct DisplayManager { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 255 | easter_eggs_component: EasterEggsComponent, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub last_viz_state: LastVizState, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | pub album: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 293 | pub weather_wind_speed_units: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/display/manager.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 304 | impl DisplayManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn capabilities(&self) -> &DisplayCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 445 | pub fn layout(&self) -> &LayoutConfig { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 450 | pub fn status_bar_mut(&mut self) -> &mut StatusBar { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn scrolling_text_mut(&mut self) -> &mut ScrollingText { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | pub fn clock_display_mut(&mut self) -> &mut ClockDisplay { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn weather_display_mut(&mut self) -> &mut WeatherComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn visualizer_mut(&mut self) -> &mut VisualizerComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 837 | fn render_progress_bar_to_field_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 887 | fn render_progress_bar_to_field(&mut self, field: &crate::display::field::Field, fb: &mut D) -> Result<(), DisplayError> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 895 | fn render_progress_bar(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 938 | fn render_info_line_to_field_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1014 | fn render_info_line_to_field(&mut self, field: &crate::display::field::Field, fb: &mut D) -> Result<(), DisplayError> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1030 | fn render_info_line(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2788 | pub fn set_brightness(&mut self, brightness: u8) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2793 | pub fn display_mode(&self) -> DisplayMode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2819 | pub fn is_manual_mode_override(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2835 | pub fn check_emulator_mode_request(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2849 | pub fn update_emulator_current_mode(&mut self, _mode: DisplayMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2862 | pub async fn update(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2875 | pub fn render_buffers_mut(&mut self) -> &mut RenderBuffers { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2880 | pub fn performance_metrics(&self) -> &PerformanceMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3102 | pub async fn setup_visualizer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3170 | pub fn cycle_easter_egg(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3198 | pub fn cycle_visualization(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/display/components/status_bar.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct StatusBar { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 100 | state: StatusBarState, [INFO] [stdout] 101 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `state`, `render`, and `format_volume` are never used [INFO] [stdout] --> src/display/components/status_bar.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl StatusBar { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update(&mut self, state: StatusBarState) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn state(&self) -> &StatusBarState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn format_volume(&self) -> ArrayString<8> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_repeat_mode` is never used [INFO] [stdout] --> src/display/components/status_bar.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 377 | pub fn transpose_repeat_mode(mode: i32) -> RepeatMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_shuffle_mode` is never used [INFO] [stdout] --> src/display/components/status_bar.rs:387:8 [INFO] [stdout] | [INFO] [stdout] 387 | pub fn transpose_shuffle_mode(mode: i32) -> ShuffleMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `album_artist_scroller`, `album_scroller`, `title_scroller`, `artist_scroller`, `layout`, and `display_width` are never read [INFO] [stdout] --> src/display/components/scrollers.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 118 | pub struct ScrollingText { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 119 | album_artist_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 120 | album_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 121 | title_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 122 | artist_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 123 | scroll_mode: ScrollMode, [INFO] [stdout] 124 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | display_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_track_info`, `update`, `render`, `stop`, `scroll_mode`, and `set_scroll_mode` are never used [INFO] [stdout] --> src/display/components/scrollers.rs:173:12 [INFO] [stdout] | [INFO] [stdout] 133 | impl ScrollingText { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn set_track_info(&mut self, artist: String, title: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn update(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn scroll_mode(&self) -> ScrollMode { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn set_scroll_mode(&mut self, mode: ScrollMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `last_clock_digits`, `colon_on`, `last_colon_toggle_time`, `last_second_drawn`, and `last_date_drawn` are never read [INFO] [stdout] --> src/display/components/clock.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct ClockState { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 33 | /// Last displayed time digits [H, H, :, M, M] [INFO] [stdout] 34 | pub last_clock_digits: [char; 5], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub colon_on: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub last_colon_toggle_time: Instant, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub last_second_drawn: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub last_date_drawn: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClockState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `state` and `metrics` are never read [INFO] [stdout] --> src/display/components/clock.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct ClockDisplay { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 63 | state: ClockState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | metrics: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `toggle_colon`, `state`, and `set_date` are never used [INFO] [stdout] --> src/display/components/clock.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl ClockDisplay { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn update(&mut self, current_time_secs: f32) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn toggle_colon(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | pub fn state(&self) -> &ClockState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn set_date(&mut self, date: String) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Forecast` is never constructed [INFO] [stdout] --> src/display/components/weather.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub enum WeatherDisplayMode { [INFO] [stdout] | ------------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 37 | Forecast, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherDisplayMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `layout`, `display_mode`, and `display_switch_timer` are never read [INFO] [stdout] --> src/display/components/weather.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct WeatherDisplay { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 42 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 43 | last_weather_data: Vec, [INFO] [stdout] 44 | display_mode: WeatherDisplayMode, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 45 | display_switch_timer: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `display_mode`, `set_display_mode`, `toggle_mode`, `has_changed`, `render`, and `get_icon_path` are never used [INFO] [stdout] --> src/display/components/weather.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl WeatherDisplay { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn display_mode(&self) -> WeatherDisplayMode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn set_display_mode(&mut self, mode: WeatherDisplayMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn toggle_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn has_changed(&self, new_data: &[WeatherData]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_icon_path(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `level`, `pct`, and `viz_init_clear` are never read [INFO] [stdout] --> src/display/components/visualizer.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct VisualizerState { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 42 | /// Audio level (0-100) [INFO] [stdout] 43 | pub level: u8, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 44 | /// Peak percentage [INFO] [stdout] 45 | pub pct: f64, [INFO] [stdout] | ^^^ [INFO] [stdout] 46 | /// Whether visualizer needs initialization clear [INFO] [stdout] 47 | pub viz_init_clear: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VisualizerState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state` is never read [INFO] [stdout] --> src/display/components/visualizer.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 90 | pub struct VisualizerComponent { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 91 | visualizer: Option, [INFO] [stdout] 92 | state: VisualizerState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/display/components/visualizer.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 99 | impl VisualizerComponent { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn set_visualizer(&mut self, visualizer: Visualizer) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn update_visual(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn visualizer(&self) -> Option<&Visualizer> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update(&mut self, level: u8, pct: f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn state(&self) -> &VisualizerState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn visualization_type(&self) -> Visualization { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn set_visualization_type(&mut self, viz_type: Visualization) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 382 | pub fn mark_init_clear(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 387 | pub fn needs_init_clear(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | pub fn clear_init_flag(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn viz_state(&self) -> &crate::vision::LastVizState { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `render_egg_image`, `render_artist_text`, `render_title_text`, and `render_time_text` are never used [INFO] [stdout] --> src/display/components/easter_eggs.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 45 | impl EasterEggsComponent { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 51 | pub async fn render_egg_image( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn render_artist_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn render_title_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn render_time_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `field_type` is never read [INFO] [stdout] --> src/display/field.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Field { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 52 | pub field_type: FieldType, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Field` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bg_binary` is never used [INFO] [stdout] --> src/display/field.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 77 | impl Field { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn bg_binary(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/display/page.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct PageLayout { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 32 | /// Page identifier [INFO] [stdout] 33 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PageLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_fields` and `get_field_mut` are never used [INFO] [stdout] --> src/display/page.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl PageLayout { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn add_fields(mut self, fields: Vec) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn get_field_mut(&mut self, name: &str) -> Option<&mut Field> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `create_visualizer_page`, `create_easter_eggs_page`, and `layout_config` are never used [INFO] [stdout] --> src/display/layout_manager.rs:537:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl LayoutManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 537 | pub fn create_visualizer_page(&self) -> PageLayout { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 560 | pub fn create_easter_eggs_page(&self) -> PageLayout { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub fn layout_config(&self) -> &LayoutConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_DIGIT_WIDTH` is never used [INFO] [stdout] --> src/display/layout_manager.rs:142:15 [INFO] [stdout] | [INFO] [stdout] 142 | const CLOCK_DIGIT_WIDTH: i32 = 25; // custom font width [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `time_since_mode_change` is never used [INFO] [stdout] --> src/display/mode_controller.rs:176:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl DisplayModeController { [INFO] [stdout] | -------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn time_since_mode_change(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/metrics.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 40 | impl MachineMetrics { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | fn read_first_float_from_file(&mut self, path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn read_first_long_from_file(&mut self, path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn cpu_load(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | fn cpu_temp(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | fn up_time(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn update(&mut self, metrics: MachineMetrics) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn check(&mut self) -> MachineMetrics { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ALBUMARTIST` is never used [INFO] [stdout] --> src/constants.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const TAG_DISPLAY_ALBUMARTIST: usize = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ALBUM` is never used [INFO] [stdout] --> src/constants.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const TAG_DISPLAY_ALBUM: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_TITLE` is never used [INFO] [stdout] --> src/constants.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const TAG_DISPLAY_TITLE: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ARTIST` is never used [INFO] [stdout] --> src/constants.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TAG_DISPLAY_ARTIST: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const DISPLAY_WIDTH: u32 = 128; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_X_OFFSET` is never used [INFO] [stdout] --> src/constants.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const DISPLAY_REGION_X_OFFSET: i32 = 0; // Starts from the left edge [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_Y_OFFSET` is never used [INFO] [stdout] --> src/constants.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DISPLAY_REGION_Y_OFFSET: i32 = 0; // Starts from the top edge [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const DISPLAY_REGION_WIDTH: u32 = DISPLAY_WIDTH - 2; // Occupies adjusted width [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LINES` is never used [INFO] [stdout] --> src/constants.rs:50:11 [INFO] [stdout] | [INFO] [stdout] 50 | pub const MAX_LINES: usize = 6; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAIN_FONT_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:53:11 [INFO] [stdout] | [INFO] [stdout] 53 | pub const MAIN_FONT_HEIGHT: u32 = 8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAIN_LINE_SPACING` is never used [INFO] [stdout] --> src/constants.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const MAIN_LINE_SPACING: i32 = 2; // Additional pixels between lines [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const GLYPH_WIDTH: u32 = 8; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_DIGIT_GAP_HORIZONTAL` is never used [INFO] [stdout] --> src/constants.rs:65:11 [INFO] [stdout] | [INFO] [stdout] 65 | pub const CLOCK_DIGIT_GAP_HORIZONTAL: i32 = 1; // For spacing between H and H, M and M, and H and colon [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_COLON_MINUTE_GAP` is never used [INFO] [stdout] --> src/constants.rs:67:11 [INFO] [stdout] | [INFO] [stdout] 67 | pub const CLOCK_COLON_MINUTE_GAP: i32 = 0; // Wider gap for visual separation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_PROGRESS_BAR_GAP` is never used [INFO] [stdout] --> src/constants.rs:69:11 [INFO] [stdout] | [INFO] [stdout] 69 | pub const CLOCK_PROGRESS_BAR_GAP: i32 = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROGRESS_BAR_DATE_GAP` is never used [INFO] [stdout] --> src/constants.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | pub const PROGRESS_BAR_DATE_GAP: i32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DATE_FONT_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:73:11 [INFO] [stdout] | [INFO] [stdout] 73 | pub const DATE_FONT_HEIGHT: u32 = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_Y_POS` is never used [INFO] [stdout] --> src/constants.rs:77:11 [INFO] [stdout] | [INFO] [stdout] 77 | pub const PLAYER_PROGRESS_BAR_Y_POS: i32 = 51; // Line 5 starts at this Y position [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:79:11 [INFO] [stdout] | [INFO] [stdout] 79 | pub const PLAYER_PROGRESS_BAR_WIDTH: u32 = DISPLAY_WIDTH - 4; // 2 pixels padding on each side [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:81:11 [INFO] [stdout] | [INFO] [stdout] 81 | pub const PLAYER_PROGRESS_BAR_HEIGHT: u32 = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_BORDER_THICKNESS` is never used [INFO] [stdout] --> src/constants.rs:83:11 [INFO] [stdout] | [INFO] [stdout] 83 | pub const PLAYER_PROGRESS_BAR_BORDER_THICKNESS: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_TRACK_INFO_LINE_Y_POS` is never used [INFO] [stdout] --> src/constants.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | pub const PLAYER_TRACK_INFO_LINE_Y_POS: i32 = DISPLAY_HEIGHT as i32 - MAIN_FONT_HEIGHT as i32; // Bottom of the screen [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LYMONS_LOGO_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | pub const LYMONS_LOGO_WIDTH: u32 = 108; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AudioBitrate` is never used [INFO] [stdout] --> src/glyphs.rs:26:10 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum AudioBitrate { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_repeat_mode` is never used [INFO] [stdout] --> src/glyphs.rs:42:4 [INFO] [stdout] | [INFO] [stdout] 42 | fn map_repeat_mode(mode: u8) -> RepeatMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_shuffle_mode` is never used [INFO] [stdout] --> src/glyphs.rs:60:4 [INFO] [stdout] | [INFO] [stdout] 60 | fn map_shuffle_mode(mode: u8) -> ShuffleMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_HD` is never used [INFO] [stdout] --> src/glyphs.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | pub const GLYPH_AUDIO_HD: [u8; 8] = [0x00, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x00,]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_SD` is never used [INFO] [stdout] --> src/glyphs.rs:87:11 [INFO] [stdout] | [INFO] [stdout] 87 | pub const GLYPH_AUDIO_SD: [u8; 8] = [0x00, 0x3c, 0x66, 0x60, 0x1c, 0x46, 0x66, 0x3c,]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_DSD` is never used [INFO] [stdout] --> src/glyphs.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | pub const GLYPH_AUDIO_DSD: [u8; 8] = [0x00, 0x78, 0x6c, 0x66, 0x66, 0x6c, 0x78, 0x00,]; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_zero_i16` is never used [INFO] [stdout] --> src/deutils.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn default_zero_i16() -> i16 { 0 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_numeric_i32` is never used [INFO] [stdout] --> src/deutils.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn deserialize_numeric_i32<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_numeric_u8` is never used [INFO] [stdout] --> src/deutils.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | pub fn deserialize_numeric_u8<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_epoch_to_date_string` is never used [INFO] [stdout] --> src/deutils.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn deserialize_epoch_to_date_string<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_seconds_to_hms` is never used [INFO] [stdout] --> src/deutils.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 158 | pub fn deserialize_seconds_to_hms<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `playing_rx` is never read [INFO] [stdout] --> src/sliminfo.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 362 | pub struct LMSServer { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 382 | playing_rx: watch::Receiver, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LMSServer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `subscribe_playing` and `player_mac` are never used [INFO] [stdout] --> src/sliminfo.rs:417:12 [INFO] [stdout] | [INFO] [stdout] 388 | impl LMSServer { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 417 | pub fn subscribe_playing(&self) -> watch::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub fn player_mac(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IconSet` is never used [INFO] [stdout] --> src/weather.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum IconSet { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ForecastDay4`, `ForecastDay5`, and `ForecastDay6` are never constructed [INFO] [stdout] --> src/weather.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 52 | pub enum WeatherCondition { [INFO] [stdout] | ---------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 57 | ForecastDay4 = 4, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 58 | ForecastDay5 = 5, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 59 | ForecastDay6 = 6, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherCondition` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `viz` [INFO] [stdout] --> src/display/components/visualizer.rs:1248:9 [INFO] [stdout] | [INFO] [stdout] 1248 | viz: &mut Visual, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_viz` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `wind_speed_units`, `sun`, `svg`, and `fsvg` are never read [INFO] [stdout] --> src/weather.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct WeatherDisplay{ [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 64 | pub temp_units: String, [INFO] [stdout] 65 | pub wind_speed_units: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 66 | pub sun: sun::SunTimes, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub svg: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 70 | pub fsvg: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Location` is never constructed [INFO] [stdout] --> src/weather.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct Location { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SCROLL_RIGHT` is never used [INFO] [stdout] --> src/textable.rs:42:7 [INFO] [stdout] | [INFO] [stdout] 42 | const SCROLL_RIGHT: i8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GAP_BETWEEN_LOOP_TEXT_FIXED` is never used [INFO] [stdout] --> src/textable.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const GAP_BETWEEN_LOOP_TEXT_FIXED: i32 = 12; // Fixed gap for continuous loop [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/textable.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct State { // Made public so OledDisplay can read it [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 55 | pub text: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 56 | pub scroll_mode: ScrollMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 57 | pub font: MonoFont<'static>, // Stored here to be accessible to the task [INFO] [stdout] | ^^^^ [INFO] [stdout] 58 | pub text_width: u32, // NEW: Text width, updated by OledDisplay [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 59 | pub stop_flag: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 60 | pub current_offset_float: f32, // Use f32 for smoother scrolling calculation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 61 | pub last_drawn_x_rounded: i32, // Store the last rounded X position that was drawn [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 62 | pub direction: i8, // -1 for left, 1 for right (for cylon) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 63 | pub paused: bool, // For pause states in scrolling [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | pub has_paused: bool, // For pause states in scrolling [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `top_left`, `width`, and `state` are never read [INFO] [stdout] --> src/textable.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct TextScroller { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 96 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 97 | pub top_left: Point, // Public so OledDisplay can get position [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 98 | pub width: u32, // Display region width [INFO] [stdout] | ^^^^^ [INFO] [stdout] 99 | pub state: Arc>, // Shared state for the scrolling task [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `spawn_task`, `update_content`, `start`, and `stop` are never used [INFO] [stdout] --> src/textable.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 103 | impl TextScroller { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | fn spawn_task(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub async fn update_content(&mut self, new_text: String, new_mode: ScrollMode, new_text_width: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub async fn start(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | pub async fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `THERMO_GLYPH_WIDTH` is never used [INFO] [stdout] --> src/weather_glyph.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const THERMO_GLYPH_WIDTH: u32 = 12; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `THERMO_GLYPH_HEIGHT` is never used [INFO] [stdout] --> src/weather_glyph.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const THERMO_GLYPH_HEIGHT: u32 = 12; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_weather_glyph_slice` is never used [INFO] [stdout] --> src/weather_glyph.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn get_weather_glyph_slice(glyph_index: usize) -> &'static [u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_WIDTH` is never used [INFO] [stdout] --> src/weather_glyph.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | pub const MOON_PHASE_WIDTH: u32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_HEIGHT` is never used [INFO] [stdout] --> src/weather_glyph.rs:72:11 [INFO] [stdout] | [INFO] [stdout] 72 | pub const MOON_PHASE_HEIGHT: u32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_RAW_DATA` is never used [INFO] [stdout] --> src/weather_glyph.rs:76:7 [INFO] [stdout] | [INFO] [stdout] 76 | const MOON_PHASE_RAW_DATA: &[u8] = include_bytes!("../data/moonphase_30x30.bin"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_moon_phase_slice` is never used [INFO] [stdout] --> src/weather_glyph.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | pub fn get_moon_phase_slice(phase: MoonPhase) -> &'static [u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ConfigMissing` is never constructed [INFO] [stdout] --> src/location.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub enum LocationError { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] 66 | ConfigMissing, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LocationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `moonrise` and `moonset` are never read [INFO] [stdout] --> src/astral.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct AstralData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | pub moonrise: Option>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 39 | pub moonset: Option>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AstralData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_daytime`, `minutes_until_next_event`, and `update_location` are never used [INFO] [stdout] --> src/astral.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl AstralService { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn is_daytime(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn minutes_until_next_event(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn update_location(&mut self, location: Location) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NO_WIDE_ASSETS` is never used [INFO] [stdout] --> src/eggs.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | pub const NO_WIDE_ASSETS: [u8; 1] = [EGGS_TYPE_CASSETTE]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HIST_FLOOR_DB` is never used [INFO] [stdout] --> src/spectrum.rs:24:7 [INFO] [stdout] | [INFO] [stdout] 24 | const HIST_FLOOR_DB: f32 = -80.0; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HIST_CEIL_DB` is never used [INFO] [stdout] --> src/spectrum.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const HIST_CEIL_DB: f32 = -12.0; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `EPS` is never used [INFO] [stdout] --> src/spectrum.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const EPS: f32 = 1e-12; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SPECTRUM_MIN_HZ` is never used [INFO] [stdout] --> src/spectrum.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const SPECTRUM_MIN_HZ: f32 = 20.0; // start of spectrum [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FFT_MIN` is never used [INFO] [stdout] --> src/spectrum.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const FFT_MIN: usize = 128; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FFT_MAX` is never used [INFO] [stdout] --> src/spectrum.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | const FFT_MAX: usize = 4096; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PEAK_METER_LEVELS_MAX` is never used [INFO] [stdout] --> src/spectrum.rs:30:7 [INFO] [stdout] | [INFO] [stdout] 30 | const PEAK_METER_LEVELS_MAX: u8 = 48; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SPECTRUM_BANDS_COUNT` is never used [INFO] [stdout] --> src/spectrum.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const SPECTRUM_BANDS_COUNT:u8 = 16; // Number of spectrum bands [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_hist_level` is never used [INFO] [stdout] --> src/spectrum.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn db_to_hist_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SpectrumEngine` is never constructed [INFO] [stdout] --> src/spectrum.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct SpectrumEngine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `build_log_bands`, `ensure`, `compute_db_bands`, and `compute_levels` are never used [INFO] [stdout] --> src/spectrum.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl SpectrumEngine { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 56 | pub fn new(sr: u32, samples_len: usize, bands: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn build_log_bands(sr: u32, nfft: usize, bands: usize) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn ensure(&mut self, sr: u32, samples_len: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn compute_db_bands(&mut self, pcm: &[i16]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn compute_levels(&mut self, left: &[i16], right: &[i16]) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `height` are never used [INFO] [stdout] --> src/vframebuf.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl VarFrameBuf { [INFO] [stdout] | ------------------------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn width(&self) -> usize { self.w } [INFO] [stdout] | ^^^^^ [INFO] [stdout] 45 | pub fn height(&self) -> usize { self.h } [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIS_BUF_SIZE` is never used [INFO] [stdout] --> src/vision.rs:52:7 [INFO] [stdout] | [INFO] [stdout] 52 | const VIS_BUF_SIZE:usize = 16_384; // Predefined in Squeezelite. [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PEAK_METER_SCALE_HEADROOM` is never used [INFO] [stdout] --> src/vision.rs:54:11 [INFO] [stdout] | [INFO] [stdout] 54 | pub const PEAK_METER_SCALE_HEADROOM:f32 = 0.8; // 20% headroom clipping [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `METER_CHANNELS` is never used [INFO] [stdout] --> src/vision.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const METER_CHANNELS:usize = 2; // Number of metered channels. [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LEVEL_DECAY_STEPS_PER_FRAME` is never used [INFO] [stdout] --> src/vision.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const LEVEL_DECAY_STEPS_PER_FRAME: u8 = 1; // visual fall rate (levels / frame) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LOCK_TRY_WINDOW_MS` is never used [INFO] [stdout] --> src/vision.rs:60:7 [INFO] [stdout] | [INFO] [stdout] 60 | const LOCK_TRY_WINDOW_MS: u32 = 5; // total budget for try-loop [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POLL_IDLE` is never used [INFO] [stdout] --> src/vision.rs:64:11 [INFO] [stdout] | [INFO] [stdout] 64 | pub const POLL_IDLE: Duration = Duration::from_millis(48); // chill when idle [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset` is never used [INFO] [stdout] --> src/vision.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 239 | impl LastVizState { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] 240 | [INFO] [stdout] 241 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ensure_band_state_old` is never used [INFO] [stdout] --> src/vision.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 275 | pub fn ensure_band_state_old( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ReadGuard` is never constructed [INFO] [stdout] --> src/vision.rs:409:8 [INFO] [stdout] | [INFO] [stdout] 409 | struct ReadGuard { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisT` is never constructed [INFO] [stdout] --> src/vision.rs:420:8 [INFO] [stdout] | [INFO] [stdout] 420 | struct VisT { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisFrame` is never constructed [INFO] [stdout] --> src/vision.rs:432:12 [INFO] [stdout] | [INFO] [stdout] 432 | pub struct VisFrame { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisReader` is never constructed [INFO] [stdout] --> src/vision.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 440 | pub struct VisReader { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vision.rs:458:12 [INFO] [stdout] | [INFO] [stdout] 456 | impl VisReader { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 457 | /// Discover the active Squeezelite shm in /dev/shm and map it. [INFO] [stdout] 458 | pub fn new() -> io::Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | fn sd(&self) -> &VisT { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn snapshot_if_new(&mut self) -> io::Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn unlocked_snapshot_if_new_using_index(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 611 | pub fn with_data(&mut self, f: F) -> io::Result [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 634 | pub fn with_data_extended(&mut self, f: F) -> io::Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 654 | pub fn with_data_swapped(&mut self, swap_lr: bool, f: F) -> std::io::Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 679 | pub fn reopen_if_stale(&mut self) -> io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 694 | fn unlocked_snapshot_if_new(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `header_looks_good` is never used [INFO] [stdout] --> src/vision.rs:745:4 [INFO] [stdout] | [INFO] [stdout] 745 | fn header_looks_good(size: usize, idx: usize, rate: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `lock_read_best_effort` is never used [INFO] [stdout] --> src/vision.rs:754:11 [INFO] [stdout] | [INFO] [stdout] 754 | unsafe fn lock_read_best_effort( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `peak_and_rms` is never used [INFO] [stdout] --> src/vision.rs:783:8 [INFO] [stdout] | [INFO] [stdout] 783 | pub fn peak_and_rms(ch: &[i16]) -> (i16, f32) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level` is never used [INFO] [stdout] --> src/vision.rs:799:4 [INFO] [stdout] | [INFO] [stdout] 799 | fn db_to_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level_scale` is never used [INFO] [stdout] --> src/vision.rs:806:4 [INFO] [stdout] | [INFO] [stdout] 806 | fn db_to_level_scale(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dbfs` is never used [INFO] [stdout] --> src/vision.rs:811:8 [INFO] [stdout] | [INFO] [stdout] 811 | pub fn dbfs(x: f32) -> f32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stereo_channel_peak_rms` is never used [INFO] [stdout] --> src/vision.rs:816:4 [INFO] [stdout] | [INFO] [stdout] 816 | fn stereo_channel_peak_rms(samples_l: &[i16],samples_r: &[i16]) -> ((i16, f32), (i16, f32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stereo_peak_rms` is never used [INFO] [stdout] --> src/vision.rs:847:4 [INFO] [stdout] | [INFO] [stdout] 847 | fn stereo_peak_rms(samples: &[i16]) -> ((i16, f32), (i16, f32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PeakStereo`, `PeakMono`, `HistStereo`, `HistMono`, `AioHistMono`, and `WaveformSpectrum` are never constructed [INFO] [stdout] --> src/visualization.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 40 | pub enum Visualization { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 43 | PeakStereo, // two peak meters with hold/decay [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 44 | PeakMono, // mono peak meter with hold/decay [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 45 | HistStereo, // two histogram bars (L/R) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 46 | HistMono, // mono histogram (downmix) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | AioHistMono, // All In One with downmix histogram [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 50 | WaveformSpectrum, // Waveform + Spectrogram (oscilloscope + waterfall) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Visualization` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_kind` is never used [INFO] [stdout] --> src/visualization.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 375 | pub fn transpose_kind(kind: &str) -> Visualization { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_visualizer_panel_with_layout` is never used [INFO] [stdout] --> src/visualization.rs:397:8 [INFO] [stdout] | [INFO] [stdout] 397 | pub fn get_visualizer_panel_with_layout(kind: Visualization, layout: &LayoutConfig) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_visualizer_panel` is never used [INFO] [stdout] --> src/visualization.rs:437:8 [INFO] [stdout] | [INFO] [stdout] 437 | pub fn get_visualizer_panel(kind: Visualization, wide: bool) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ts`, `playing`, `sample_rate`, and `kind` are never read [INFO] [stdout] --> src/visualizer.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct VizFrameOut { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 58 | pub ts: i64, [INFO] [stdout] | ^^ [INFO] [stdout] 59 | pub playing: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 60 | pub sample_rate: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 61 | pub kind: Visualization, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizFrameOut` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/visualizer.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 67 | pub enum VizPayload { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 68 | VuStereo { l_db: f32, r_db: f32 }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 69 | VuMono { m_db: f32 }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 70 | PeakStereo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | PeakMono { m_db: f32, hold: u8 }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 75 | HistStereo { bands_l: Vec, bands_r: Vec }, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 76 | HistMono { bands: Vec }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 77 | VuStereoWithCenterPeak { l_db: f32, r_db: f32, m_db: f32, peak_hold: u8 }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 78 | AioVuMono { m_db: f32 }, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 79 | AioHistMono { bands: Vec }, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 80 | WaveformSpectrum { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | NoVisualization {}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizPayload` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Enable` and `SetKind` are never constructed [INFO] [stdout] --> src/visualizer.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 90 | pub enum VizCommand { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 91 | Enable(bool), // enable/disable publishing [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 92 | SetKind(Visualization), // switch viz mode [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `spawn`, `enable`, `set_kind`, and `shutdown` are never used [INFO] [stdout] --> src/visualizer.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl Visualizer { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn spawn(kind: &str, playing_rx: watch::Receiver) -> std::io::Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn enable(&self, on: bool) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn set_kind(&self, k: Visualization) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn shutdown(mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `visualizer_worker` is never used [INFO] [stdout] --> src/visualizer.rs:152:10 [INFO] [stdout] | [INFO] [stdout] 152 | async fn visualizer_worker( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish` is never used [INFO] [stdout] --> src/visualizer.rs:349:4 [INFO] [stdout] | [INFO] [stdout] 349 | fn publish( [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level` is never used [INFO] [stdout] --> src/visualizer.rs:363:4 [INFO] [stdout] | [INFO] [stdout] 363 | fn db_to_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PeakHold` is never constructed [INFO] [stdout] --> src/visualizer.rs:368:8 [INFO] [stdout] | [INFO] [stdout] 368 | struct PeakHold { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `update` is never used [INFO] [stdout] --> src/visualizer.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 374 | impl PeakHold { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 375 | fn update(&mut self, leds: &[bool; 19]) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_db_range`, `with_arc_degrees`, `with_restitution`, and `with_max_dt` are never used [INFO] [stdout] --> src/vuphysics_new.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 148 | impl VuMeter { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 224 | pub fn with_db_range(mut self, scale_min: f64, scale_max: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 234 | pub fn with_arc_degrees(mut self, sweep_min: f64, sweep_max: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn with_restitution(mut self, restitution: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn with_max_dt(mut self, max_dt: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_db_range`, `set_arc_degrees`, `set_overload_threshold`, and `set_physics` are never used [INFO] [stdout] --> src/vuphysics_new.rs:347:12 [INFO] [stdout] | [INFO] [stdout] 327 | impl VuMeter { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 347 | pub fn set_db_range(&mut self, scale_min: f64, scale_max: f64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn set_arc_degrees(&mut self, sweep_min: f64, sweep_max: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 363 | pub fn set_overload_threshold(&mut self, threshold_db: f64, hold_s: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn set_physics(&mut self, inertia: f64, spring_k: f64, damping_b: f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `damping_ratio`, `natural_frequency_rad_s`, `angle_radians`, `db_range`, `arc_degrees`, and `steady_state_degrees` are never used [INFO] [stdout] --> src/vuphysics_new.rs:391:12 [INFO] [stdout] | [INFO] [stdout] 388 | impl VuMeter { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 391 | pub fn damping_ratio(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 396 | pub fn natural_frequency_rad_s(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn angle_radians(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 423 | pub fn db_range(&self) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub fn arc_degrees(&self) -> (f64, f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 434 | pub fn steady_state_degrees(&self, db: f64) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RenderingError` is never constructed [INFO] [stdout] --> src/svgimage.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub enum SvgImageError { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | RenderingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SvgImageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_squeezelite_shm_path` is never used [INFO] [stdout] --> src/shm_path.rs:28:8 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn find_squeezelite_shm_path() -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FunctionTimer` is never constructed [INFO] [stdout] --> src/func_timer.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct FunctionTimer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/func_timer.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 33 | impl FunctionTimer { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 34 | pub fn new(name: &'static str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `asin_deg` is never used [INFO] [stdout] --> src/sun.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | fn asin_deg(x: f64) -> f64 { (x).asin() * RAD_TO_DEG } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `to_fixed_offset` is never used [INFO] [stdout] --> src/sun.rs:166:8 [INFO] [stdout] | [INFO] [stdout] 166 | pub fn to_fixed_offset( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:81:9 [INFO] [stdout] | [INFO] [stdout] 81 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/display/components/easter_eggs.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | field: &Field, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:457:9 [INFO] [stdout] | [INFO] [stdout] 457 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 463 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 463 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 475 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 475 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:494:9 [INFO] [stdout] | [INFO] [stdout] 494 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 500 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 500 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 249 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 260 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 260 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:277:9 [INFO] [stdout] | [INFO] [stdout] 277 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 288 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 288 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 330 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `parse_f64` [INFO] [stdout] --> src/sliminfo.rs:262:13 [INFO] [stdout] | [INFO] [stdout] 262 | let parse_f64 = |s: &Option| { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_parse_f64` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `top_scale` [INFO] [stdout] --> src/vision.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | top_scale: i32, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_top_scale` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bottom_scale` [INFO] [stdout] --> src/vision.rs:288:5 [INFO] [stdout] | [INFO] [stdout] 288 | bottom_scale: i32, [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bottom_scale` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_l` [INFO] [stdout] --> src/visualizer.rs:172:9 [INFO] [stdout] | [INFO] [stdout] 172 | let mut peak_hold_l: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_l` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_r` [INFO] [stdout] --> src/visualizer.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | let mut peak_hold_r: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_r` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `peak_hold_m` [INFO] [stdout] --> src/visualizer.rs:174:9 [INFO] [stdout] | [INFO] [stdout] 174 | let mut peak_hold_m: u8 = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_peak_hold_m` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i2c_bus_path` [INFO] [stdout] --> src/main.rs:932:9 [INFO] [stdout] | [INFO] [stdout] 932 | let i2c_bus_path = matches.get_one::("i2c-bus").unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_bus_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `unified_display_loop` is never used [INFO] [stdout] --> src/main.rs:89:10 [INFO] [stdout] | [INFO] [stdout] 89 | async fn unified_display_loop( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ConfigError` is never used [INFO] [stdout] --> src/config.rs:9:10 [INFO] [stdout] | [INFO] [stdout] 9 | pub enum ConfigError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `load` is never used [INFO] [stdout] --> src/config.rs:75:8 [INFO] [stdout] | [INFO] [stdout] 75 | pub fn load() -> Result { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_config_file` is never used [INFO] [stdout] --> src/config.rs:114:4 [INFO] [stdout] | [INFO] [stdout] 114 | fn find_config_file() -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `read_yaml` is never used [INFO] [stdout] --> src/config.rs:130:4 [INFO] [stdout] | [INFO] [stdout] 130 | fn read_yaml(path: &Path) -> Result { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge` is never used [INFO] [stdout] --> src/config.rs:137:4 [INFO] [stdout] | [INFO] [stdout] 137 | fn merge(dst: &mut Config, src: Config) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `merge_display` is never used [INFO] [stdout] --> src/config.rs:148:4 [INFO] [stdout] | [INFO] [stdout] 148 | fn merge_display(dst: &mut DisplayConfig, src: DisplayConfig) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `apply_cli_overrides` is never used [INFO] [stdout] --> src/config.rs:158:4 [INFO] [stdout] | [INFO] [stdout] 158 | fn apply_cli_overrides(cfg: &mut Config, cli: &Cli) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate` is never used [INFO] [stdout] --> src/config.rs:177:4 [INFO] [stdout] | [INFO] [stdout] 177 | fn validate(cfg: &Config) -> Result<(), ConfigError> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DEG_TO_RAD` is never used [INFO] [stdout] --> src/trig.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const DEG_TO_RAD: f32 = core::f32::consts::PI / 180.0; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `RAD_TO_DEG` is never used [INFO] [stdout] --> src/trig.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const RAD_TO_DEG: f32 = 180.0 / core::f32::consts::PI; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Draw` is never constructed [INFO] [stdout] --> src/drawsvg.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum PutSvgError { [INFO] [stdout] | ----------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 40 | Draw(DE), [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PutSvgError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_svg_async` is never used [INFO] [stdout] --> src/drawsvg.rs:55:14 [INFO] [stdout] | [INFO] [stdout] 55 | pub async fn get_svg_async ( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_svg` is never used [INFO] [stdout] --> src/drawsvg.rs:116:8 [INFO] [stdout] | [INFO] [stdout] 116 | pub fn put_svg( [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `put_svg_async` is never used [INFO] [stdout] --> src/drawsvg.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | pub async fn put_svg_async( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_svg_gray4_binary` is never used [INFO] [stdout] --> src/drawsvg.rs:187:8 [INFO] [stdout] | [INFO] [stdout] 187 | pub fn get_svg_gray4_binary( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_any`, `as_any_mut`, and `dimensions` are never used [INFO] [stdout] --> src/display/traits.rs:68:8 [INFO] [stdout] | [INFO] [stdout] 63 | pub trait DisplayDriver: Send + Sync { [INFO] [stdout] | ------------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 68 | fn as_any(&self) -> &dyn std::any::Any; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 71 | fn as_any_mut(&mut self) -> &mut dyn std::any::Any; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 77 | fn dimensions(&self) -> (u32, u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `DrawableDisplay` is never used [INFO] [stdout] --> src/display/traits.rs:143:11 [INFO] [stdout] | [INFO] [stdout] 143 | pub trait DrawableDisplay: DisplayDriver { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `SpiError` and `GpioError` are never constructed [INFO] [stdout] --> src/display/error.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 29 | pub enum DisplayError { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] ... [INFO] [stdout] 37 | SpiError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | GpioError(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DisplayError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `dimensions`, `as_mono_mut`, `as_mono`, `as_gray4_mut`, `as_gray4`, and `as_bytes` are never used [INFO] [stdout] --> src/display/framebuffer.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 42 | impl FrameBuffer { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 64 | pub fn dimensions(&self) -> (u32, u32) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | pub fn as_mono_mut(&mut self) -> &mut VarFrameBuf { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 91 | pub fn as_mono(&self) -> Option<&VarFrameBuf> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 146 | pub fn as_gray4_mut(&mut self) -> &mut VarFrameBuf { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn as_gray4(&self) -> Option<&VarFrameBuf> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | pub fn as_bytes(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `DarkGray` and `LightGray` are never constructed [INFO] [stdout] --> src/display/color.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub enum Color { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 37 | DarkGray, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | LightGray, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Color` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `as_binary` and `as_gray4` are never used [INFO] [stdout] --> src/display/color.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 130 | impl ColorValue { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 131 | /// Get as BinaryColor (converts if needed) [INFO] [stdout] 132 | pub fn as_binary(&self) -> BinaryColor { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn as_gray4(&self) -> Gray4 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated constants `OFF` and `ON` are never used [INFO] [stdout] --> src/display/color.rs:164:15 [INFO] [stdout] | [INFO] [stdout] 163 | impl Color { [INFO] [stdout] | ---------- associated constants in this implementation [INFO] [stdout] 164 | pub const OFF: Color = Color::Black; [INFO] [stdout] | ^^^ [INFO] [stdout] 165 | pub const ON: Color = Color::White; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/display/color_proxy.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 64 | pub enum Pal16 { [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 65 | Black = 0x0, // Black [INFO] [stdout] 66 | Blue = 0x1, // Blue [INFO] [stdout] | ^^^^ [INFO] [stdout] 67 | Green = 0x2, // Green [INFO] [stdout] | ^^^^^ [INFO] [stdout] 68 | Cyan = 0x3, // Cyan [INFO] [stdout] | ^^^^ [INFO] [stdout] 69 | Red = 0x4, // Red [INFO] [stdout] | ^^^ [INFO] [stdout] 70 | Magenta = 0x5, // Magenta [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 71 | Brown = 0x6, // Brown [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | LightBlue = 0x9, // Light blue [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 75 | LightGreen = 0xA, // Light green [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 76 | LightCyan = 0xB, // Light cyan [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 77 | LightRed = 0xC, // Light red [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 78 | LightMagenta = 0xD, // Light magenta [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 79 | Yellow = 0xE, // Yellow [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Pal16` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get_framebuffer`, `reset_state`, and `save_to_pbm` are never used [INFO] [stdout] --> src/display/drivers/mock.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 90 | impl MockDriver { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn get_framebuffer(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 153 | pub fn reset_state(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 169 | pub fn save_to_pbm(&self, path: &str) -> std::io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ErrorNullPointer` and `ErrorAbiMismatch` are never constructed [INFO] [stdout] --> src/display/plugin/ffi.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 59 | pub enum LyMonsErrorCode { [INFO] [stdout] | --------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 82 | ErrorNullPointer = 7, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 88 | ErrorAbiMismatch = 9, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyMonsErrorCode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `driver_type` and `abi_version` are never read [INFO] [stdout] --> src/display/plugin/loader.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct PluginMetadata { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub driver_type: String, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub abi_version: (u32, u32, u32), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PluginMetadata` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `plugin_name` and `plugin_version` are never used [INFO] [stdout] --> src/display/plugin/adapter.rs:132:12 [INFO] [stdout] | [INFO] [stdout] 64 | impl PluginDriverAdapter { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn plugin_name(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn plugin_version(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `status_bar`, `content_area`, `fonts`, and `clock` are never read [INFO] [stdout] --> src/display/layout.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct LayoutConfig { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 45 | pub status_bar: StatusBarLayout, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub content_area: ContentAreaLayout, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | pub fonts: FontSizes, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 60 | pub clock: ClockLayout, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LayoutConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `height`, `y`, `icon_size`, `spacing`, and `font_size` are never read [INFO] [stdout] --> src/display/layout.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 84 | pub struct StatusBarLayout { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 85 | /// Height of status bar in pixels [INFO] [stdout] 86 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub y: u32, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 92 | pub icon_size: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 95 | pub spacing: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 98 | pub font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `StatusBarLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `y`, `height`, `margin_left`, `margin_right`, `margin_top`, and `margin_bottom` are never read [INFO] [stdout] --> src/display/layout.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 103 | pub struct ContentAreaLayout { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 104 | /// Y position where content starts (after status bar) [INFO] [stdout] 105 | pub y: u32, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 111 | pub margin_left: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub margin_right: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub margin_top: u32, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 120 | pub margin_bottom: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ContentAreaLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `height`, `vu_segments`, `peak_height`, and `hist_bar_width` are never read [INFO] [stdout] --> src/display/layout.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 125 | pub struct VisualizerLayout { [INFO] [stdout] | ---------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 130 | pub height: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub vu_segments: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub peak_height: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub hist_bar_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VisualizerLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `digit_width`, `digit_height`, `digit_spacing`, `date_font_size`, `clock_y`, and `date_y` are never read [INFO] [stdout] --> src/display/layout.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 147 | pub struct ClockLayout { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 148 | /// Digit width for large clock digits [INFO] [stdout] 149 | pub digit_width: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 152 | pub digit_height: u32, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub digit_spacing: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 158 | pub date_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 161 | pub clock_y: u32, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 164 | pub date_y: u32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClockLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `icon_size`, `temp_font_size`, `condition_font_size`, and `forecast_font_size` are never read [INFO] [stdout] --> src/display/layout.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 169 | pub struct WeatherLayout { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 170 | /// Icon size for weather icons [INFO] [stdout] 171 | pub icon_size: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 174 | pub temp_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 177 | pub condition_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub forecast_font_size: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `status`, `content`, `time`, `clock_digits`, and `weather` are never read [INFO] [stdout] --> src/display/layout.rs:209:9 [INFO] [stdout] | [INFO] [stdout] 207 | pub struct FontSizes { [INFO] [stdout] | --------- fields in this struct [INFO] [stdout] 208 | /// Status bar text [INFO] [stdout] 209 | pub status: FontSize, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub content: FontSize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub time: FontSize, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 218 | pub clock_digits: FontSize, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub weather: FontSize, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FontSizes` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `scroll_speed`, `recommended_fps`, and `supports_grayscale` are never used [INFO] [stdout] --> src/display/layout.rs:465:12 [INFO] [stdout] | [INFO] [stdout] 224 | impl LayoutConfig { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn scroll_speed(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 475 | pub fn recommended_fps(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | pub fn supports_grayscale(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Visualizer` and `EasterEgg` are never constructed [INFO] [stdout] --> src/display/layout.rs:496:5 [INFO] [stdout] | [INFO] [stdout] 491 | pub enum AssetType { [INFO] [stdout] | --------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 496 | Visualizer, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 499 | EasterEgg, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AssetType` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `track_buffer` is never read [INFO] [stdout] --> src/display/manager.rs:66:9 [INFO] [stdout] | [INFO] [stdout] 60 | pub struct RenderBuffers { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 66 | pub track_buffer: ArrayString<128>, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RenderBuffers` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `format_hms` is never used [INFO] [stdout] --> src/display/manager.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 82 | impl RenderBuffers { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn format_hms(&mut self, seconds: f32) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `easter_eggs_component`, `last_viz_state`, `album`, and `weather_wind_speed_units` are never read [INFO] [stdout] --> src/display/manager.rs:255:5 [INFO] [stdout] | [INFO] [stdout] 231 | pub struct DisplayManager { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 255 | easter_eggs_component: EasterEggsComponent, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 267 | pub last_viz_state: LastVizState, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 283 | pub album: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 293 | pub weather_wind_speed_units: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/display/manager.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 304 | impl DisplayManager { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 440 | pub fn capabilities(&self) -> &DisplayCapabilities { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 445 | pub fn layout(&self) -> &LayoutConfig { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 450 | pub fn status_bar_mut(&mut self) -> &mut StatusBar { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 455 | pub fn scrolling_text_mut(&mut self) -> &mut ScrollingText { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 460 | pub fn clock_display_mut(&mut self) -> &mut ClockDisplay { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | pub fn weather_display_mut(&mut self) -> &mut WeatherComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 470 | pub fn visualizer_mut(&mut self) -> &mut VisualizerComponent { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 837 | fn render_progress_bar_to_field_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 887 | fn render_progress_bar_to_field(&mut self, field: &crate::display::field::Field, fb: &mut D) -> Result<(), DisplayError> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 895 | fn render_progress_bar(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 938 | fn render_info_line_to_field_data( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1014 | fn render_info_line_to_field(&mut self, field: &crate::display::field::Field, fb: &mut D) -> Result<(), DisplayError> [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 1030 | fn render_info_line(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2788 | pub fn set_brightness(&mut self, brightness: u8) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2793 | pub fn display_mode(&self) -> DisplayMode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2819 | pub fn is_manual_mode_override(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2835 | pub fn check_emulator_mode_request(&mut self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2849 | pub fn update_emulator_current_mode(&mut self, _mode: DisplayMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2862 | pub async fn update(&mut self) -> Result<(), DisplayError> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2875 | pub fn render_buffers_mut(&mut self) -> &mut RenderBuffers { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 2880 | pub fn performance_metrics(&self) -> &PerformanceMetrics { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3102 | pub async fn setup_visualizer( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3170 | pub fn cycle_easter_egg(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 3198 | pub fn cycle_visualization(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `layout` is never read [INFO] [stdout] --> src/display/components/status_bar.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 99 | pub struct StatusBar { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] 100 | state: StatusBarState, [INFO] [stdout] 101 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `state`, `render`, and `format_volume` are never used [INFO] [stdout] --> src/display/components/status_bar.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl StatusBar { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update(&mut self, state: StatusBarState) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn state(&self) -> &StatusBarState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub fn format_volume(&self) -> ArrayString<8> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_repeat_mode` is never used [INFO] [stdout] --> src/display/components/status_bar.rs:377:8 [INFO] [stdout] | [INFO] [stdout] 377 | pub fn transpose_repeat_mode(mode: i32) -> RepeatMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_shuffle_mode` is never used [INFO] [stdout] --> src/display/components/status_bar.rs:387:8 [INFO] [stdout] | [INFO] [stdout] 387 | pub fn transpose_shuffle_mode(mode: i32) -> ShuffleMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `album_artist_scroller`, `album_scroller`, `title_scroller`, `artist_scroller`, `layout`, and `display_width` are never read [INFO] [stdout] --> src/display/components/scrollers.rs:119:5 [INFO] [stdout] | [INFO] [stdout] 118 | pub struct ScrollingText { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 119 | album_artist_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 120 | album_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 121 | title_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 122 | artist_scroller: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 123 | scroll_mode: ScrollMode, [INFO] [stdout] 124 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | display_width: u32, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_track_info`, `update`, `render`, `stop`, `scroll_mode`, and `set_scroll_mode` are never used [INFO] [stdout] --> src/display/components/scrollers.rs:173:12 [INFO] [stdout] | [INFO] [stdout] 133 | impl ScrollingText { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn set_track_info(&mut self, artist: String, title: String) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 193 | pub fn update(&mut self) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 215 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 346 | pub fn scroll_mode(&self) -> ScrollMode { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 351 | pub fn set_scroll_mode(&mut self, mode: ScrollMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `last_clock_digits`, `colon_on`, `last_colon_toggle_time`, `last_second_drawn`, and `last_date_drawn` are never read [INFO] [stdout] --> src/display/components/clock.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct ClockState { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 33 | /// Last displayed time digits [H, H, :, M, M] [INFO] [stdout] 34 | pub last_clock_digits: [char; 5], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 37 | pub colon_on: bool, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | pub last_colon_toggle_time: Instant, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 43 | pub last_second_drawn: f32, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | pub last_date_drawn: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ClockState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `state` and `metrics` are never read [INFO] [stdout] --> src/display/components/clock.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct ClockDisplay { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 63 | state: ClockState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | metrics: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `toggle_colon`, `state`, and `set_date` are never used [INFO] [stdout] --> src/display/components/clock.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl ClockDisplay { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 81 | pub fn update(&mut self, current_time_secs: f32) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn toggle_colon(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 326 | pub fn state(&self) -> &ClockState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn set_date(&mut self, date: String) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Forecast` is never constructed [INFO] [stdout] --> src/display/components/weather.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 32 | pub enum WeatherDisplayMode { [INFO] [stdout] | ------------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 37 | Forecast, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherDisplayMode` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `layout`, `display_mode`, and `display_switch_timer` are never read [INFO] [stdout] --> src/display/components/weather.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct WeatherDisplay { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 42 | layout: LayoutConfig, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 43 | last_weather_data: Vec, [INFO] [stdout] 44 | display_mode: WeatherDisplayMode, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 45 | display_switch_timer: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `display_mode`, `set_display_mode`, `toggle_mode`, `has_changed`, `render`, and `get_icon_path` are never used [INFO] [stdout] --> src/display/components/weather.rs:65:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl WeatherDisplay { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 65 | pub fn display_mode(&self) -> WeatherDisplayMode { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | pub fn set_display_mode(&mut self, mode: WeatherDisplayMode) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 75 | pub fn toggle_mode(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 84 | pub fn has_changed(&self, new_data: &[WeatherData]) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn render(&self, target: &mut D) -> Result<(), D::Error> [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 114 | pub fn get_icon_path(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `level`, `pct`, and `viz_init_clear` are never read [INFO] [stdout] --> src/display/components/visualizer.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 41 | pub struct VisualizerState { [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 42 | /// Audio level (0-100) [INFO] [stdout] 43 | pub level: u8, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 44 | /// Peak percentage [INFO] [stdout] 45 | pub pct: f64, [INFO] [stdout] | ^^^ [INFO] [stdout] 46 | /// Whether visualizer needs initialization clear [INFO] [stdout] 47 | pub viz_init_clear: bool, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VisualizerState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `state` is never read [INFO] [stdout] --> src/display/components/visualizer.rs:92:5 [INFO] [stdout] | [INFO] [stdout] 90 | pub struct VisualizerComponent { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] 91 | visualizer: Option, [INFO] [stdout] 92 | state: VisualizerState, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/display/components/visualizer.rs:119:12 [INFO] [stdout] | [INFO] [stdout] 99 | impl VisualizerComponent { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn set_visualizer(&mut self, visualizer: Visualizer) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 123 | pub fn update_visual(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 133 | pub fn visualizer(&self) -> Option<&Visualizer> { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | pub fn update(&mut self, level: u8, pct: f64) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn state(&self) -> &VisualizerState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn visualization_type(&self) -> Visualization { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | pub fn set_visualization_type(&mut self, viz_type: Visualization) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 382 | pub fn mark_init_clear(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 387 | pub fn needs_init_clear(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 392 | pub fn clear_init_flag(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 402 | pub fn viz_state(&self) -> &crate::vision::LastVizState { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `render_egg_image`, `render_artist_text`, `render_title_text`, and `render_time_text` are never used [INFO] [stdout] --> src/display/components/easter_eggs.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 45 | impl EasterEggsComponent { [INFO] [stdout] | ------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 51 | pub async fn render_egg_image( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 79 | pub fn render_artist_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn render_title_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn render_time_text( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `field_type` is never read [INFO] [stdout] --> src/display/field.rs:52:9 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct Field { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 52 | pub field_type: FieldType, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Field` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bg_binary` is never used [INFO] [stdout] --> src/display/field.rs:168:12 [INFO] [stdout] | [INFO] [stdout] 77 | impl Field { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn bg_binary(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `name` is never read [INFO] [stdout] --> src/display/page.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct PageLayout { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 32 | /// Page identifier [INFO] [stdout] 33 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PageLayout` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `add_fields` and `get_field_mut` are never used [INFO] [stdout] --> src/display/page.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 39 | impl PageLayout { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 55 | pub fn add_fields(mut self, fields: Vec) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 66 | pub fn get_field_mut(&mut self, name: &str) -> Option<&mut Field> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `create_visualizer_page`, `create_easter_eggs_page`, and `layout_config` are never used [INFO] [stdout] --> src/display/layout_manager.rs:537:12 [INFO] [stdout] | [INFO] [stdout] 44 | impl LayoutManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 537 | pub fn create_visualizer_page(&self) -> PageLayout { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 560 | pub fn create_easter_eggs_page(&self) -> PageLayout { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 627 | pub fn layout_config(&self) -> &LayoutConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_DIGIT_WIDTH` is never used [INFO] [stdout] --> src/display/layout_manager.rs:142:15 [INFO] [stdout] | [INFO] [stdout] 142 | const CLOCK_DIGIT_WIDTH: i32 = 25; // custom font width [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `time_since_mode_change` is never used [INFO] [stdout] --> src/display/mode_controller.rs:176:12 [INFO] [stdout] | [INFO] [stdout] 72 | impl DisplayModeController { [INFO] [stdout] | -------------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn time_since_mode_change(&self) -> std::time::Duration { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> src/metrics.rs:44:8 [INFO] [stdout] | [INFO] [stdout] 40 | impl MachineMetrics { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | fn read_first_float_from_file(&mut self, path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn read_first_long_from_file(&mut self, path: &str) -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 59 | fn cpu_load(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 68 | fn cpu_temp(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 80 | fn up_time(&mut self) -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 87 | pub fn update(&mut self, metrics: MachineMetrics) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn check(&mut self) -> MachineMetrics { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ALBUMARTIST` is never used [INFO] [stdout] --> src/constants.rs:28:11 [INFO] [stdout] | [INFO] [stdout] 28 | pub const TAG_DISPLAY_ALBUMARTIST: usize = 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ALBUM` is never used [INFO] [stdout] --> src/constants.rs:29:11 [INFO] [stdout] | [INFO] [stdout] 29 | pub const TAG_DISPLAY_ALBUM: usize = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_TITLE` is never used [INFO] [stdout] --> src/constants.rs:30:11 [INFO] [stdout] | [INFO] [stdout] 30 | pub const TAG_DISPLAY_TITLE: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `TAG_DISPLAY_ARTIST` is never used [INFO] [stdout] --> src/constants.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const TAG_DISPLAY_ARTIST: usize = 3; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:34:11 [INFO] [stdout] | [INFO] [stdout] 34 | pub const DISPLAY_WIDTH: u32 = 128; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_X_OFFSET` is never used [INFO] [stdout] --> src/constants.rs:39:11 [INFO] [stdout] | [INFO] [stdout] 39 | pub const DISPLAY_REGION_X_OFFSET: i32 = 0; // Starts from the left edge [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_Y_OFFSET` is never used [INFO] [stdout] --> src/constants.rs:41:11 [INFO] [stdout] | [INFO] [stdout] 41 | pub const DISPLAY_REGION_Y_OFFSET: i32 = 0; // Starts from the top edge [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DISPLAY_REGION_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const DISPLAY_REGION_WIDTH: u32 = DISPLAY_WIDTH - 2; // Occupies adjusted width [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_LINES` is never used [INFO] [stdout] --> src/constants.rs:50:11 [INFO] [stdout] | [INFO] [stdout] 50 | pub const MAX_LINES: usize = 6; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAIN_FONT_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:53:11 [INFO] [stdout] | [INFO] [stdout] 53 | pub const MAIN_FONT_HEIGHT: u32 = 8; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAIN_LINE_SPACING` is never used [INFO] [stdout] --> src/constants.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const MAIN_LINE_SPACING: i32 = 2; // Additional pixels between lines [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | pub const GLYPH_WIDTH: u32 = 8; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_DIGIT_GAP_HORIZONTAL` is never used [INFO] [stdout] --> src/constants.rs:65:11 [INFO] [stdout] | [INFO] [stdout] 65 | pub const CLOCK_DIGIT_GAP_HORIZONTAL: i32 = 1; // For spacing between H and H, M and M, and H and colon [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_COLON_MINUTE_GAP` is never used [INFO] [stdout] --> src/constants.rs:67:11 [INFO] [stdout] | [INFO] [stdout] 67 | pub const CLOCK_COLON_MINUTE_GAP: i32 = 0; // Wider gap for visual separation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `CLOCK_PROGRESS_BAR_GAP` is never used [INFO] [stdout] --> src/constants.rs:69:11 [INFO] [stdout] | [INFO] [stdout] 69 | pub const CLOCK_PROGRESS_BAR_GAP: i32 = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PROGRESS_BAR_DATE_GAP` is never used [INFO] [stdout] --> src/constants.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | pub const PROGRESS_BAR_DATE_GAP: i32 = 2; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DATE_FONT_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:73:11 [INFO] [stdout] | [INFO] [stdout] 73 | pub const DATE_FONT_HEIGHT: u32 = 10; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_Y_POS` is never used [INFO] [stdout] --> src/constants.rs:77:11 [INFO] [stdout] | [INFO] [stdout] 77 | pub const PLAYER_PROGRESS_BAR_Y_POS: i32 = 51; // Line 5 starts at this Y position [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:79:11 [INFO] [stdout] | [INFO] [stdout] 79 | pub const PLAYER_PROGRESS_BAR_WIDTH: u32 = DISPLAY_WIDTH - 4; // 2 pixels padding on each side [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_HEIGHT` is never used [INFO] [stdout] --> src/constants.rs:81:11 [INFO] [stdout] | [INFO] [stdout] 81 | pub const PLAYER_PROGRESS_BAR_HEIGHT: u32 = 4; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_PROGRESS_BAR_BORDER_THICKNESS` is never used [INFO] [stdout] --> src/constants.rs:83:11 [INFO] [stdout] | [INFO] [stdout] 83 | pub const PLAYER_PROGRESS_BAR_BORDER_THICKNESS: u32 = 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PLAYER_TRACK_INFO_LINE_Y_POS` is never used [INFO] [stdout] --> src/constants.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | pub const PLAYER_TRACK_INFO_LINE_Y_POS: i32 = DISPLAY_HEIGHT as i32 - MAIN_FONT_HEIGHT as i32; // Bottom of the screen [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LYMONS_LOGO_WIDTH` is never used [INFO] [stdout] --> src/constants.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | pub const LYMONS_LOGO_WIDTH: u32 = 108; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AudioBitrate` is never used [INFO] [stdout] --> src/glyphs.rs:26:10 [INFO] [stdout] | [INFO] [stdout] 26 | pub enum AudioBitrate { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_repeat_mode` is never used [INFO] [stdout] --> src/glyphs.rs:42:4 [INFO] [stdout] | [INFO] [stdout] 42 | fn map_repeat_mode(mode: u8) -> RepeatMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `map_shuffle_mode` is never used [INFO] [stdout] --> src/glyphs.rs:60:4 [INFO] [stdout] | [INFO] [stdout] 60 | fn map_shuffle_mode(mode: u8) -> ShuffleMode { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_HD` is never used [INFO] [stdout] --> src/glyphs.rs:86:11 [INFO] [stdout] | [INFO] [stdout] 86 | pub const GLYPH_AUDIO_HD: [u8; 8] = [0x00, 0x66, 0x66, 0x7e, 0x7e, 0x66, 0x66, 0x00,]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_SD` is never used [INFO] [stdout] --> src/glyphs.rs:87:11 [INFO] [stdout] | [INFO] [stdout] 87 | pub const GLYPH_AUDIO_SD: [u8; 8] = [0x00, 0x3c, 0x66, 0x60, 0x1c, 0x46, 0x66, 0x3c,]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GLYPH_AUDIO_DSD` is never used [INFO] [stdout] --> src/glyphs.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | pub const GLYPH_AUDIO_DSD: [u8; 8] = [0x00, 0x78, 0x6c, 0x66, 0x66, 0x6c, 0x78, 0x00,]; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_zero_i16` is never used [INFO] [stdout] --> src/deutils.rs:30:8 [INFO] [stdout] | [INFO] [stdout] 30 | pub fn default_zero_i16() -> i16 { 0 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_numeric_i32` is never used [INFO] [stdout] --> src/deutils.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | pub fn deserialize_numeric_i32<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_numeric_u8` is never used [INFO] [stdout] --> src/deutils.rs:102:8 [INFO] [stdout] | [INFO] [stdout] 102 | pub fn deserialize_numeric_u8<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_epoch_to_date_string` is never used [INFO] [stdout] --> src/deutils.rs:119:8 [INFO] [stdout] | [INFO] [stdout] 119 | pub fn deserialize_epoch_to_date_string<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `deserialize_seconds_to_hms` is never used [INFO] [stdout] --> src/deutils.rs:158:8 [INFO] [stdout] | [INFO] [stdout] 158 | pub fn deserialize_seconds_to_hms<'de, D>(deserializer: D) -> Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `playing_rx` is never read [INFO] [stdout] --> src/sliminfo.rs:382:5 [INFO] [stdout] | [INFO] [stdout] 362 | pub struct LMSServer { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 382 | playing_rx: watch::Receiver, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LMSServer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `subscribe_playing` and `player_mac` are never used [INFO] [stdout] --> src/sliminfo.rs:417:12 [INFO] [stdout] | [INFO] [stdout] 388 | impl LMSServer { [INFO] [stdout] | -------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 417 | pub fn subscribe_playing(&self) -> watch::Receiver { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 537 | pub fn player_mac(&self) -> &str { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `IconSet` is never used [INFO] [stdout] --> src/weather.rs:46:10 [INFO] [stdout] | [INFO] [stdout] 46 | pub enum IconSet { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `ForecastDay4`, `ForecastDay5`, and `ForecastDay6` are never constructed [INFO] [stdout] --> src/weather.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 52 | pub enum WeatherCondition { [INFO] [stdout] | ---------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 57 | ForecastDay4 = 4, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 58 | ForecastDay5 = 5, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] 59 | ForecastDay6 = 6, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherCondition` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `wind_speed_units`, `sun`, `svg`, and `fsvg` are never read [INFO] [stdout] --> src/weather.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 63 | pub struct WeatherDisplay{ [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 64 | pub temp_units: String, [INFO] [stdout] 65 | pub wind_speed_units: String, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 66 | pub sun: sun::SunTimes, [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 69 | pub svg: String, [INFO] [stdout] | ^^^ [INFO] [stdout] 70 | pub fsvg: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WeatherDisplay` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Location` is never constructed [INFO] [stdout] --> src/weather.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | pub struct Location { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SCROLL_RIGHT` is never used [INFO] [stdout] --> src/textable.rs:42:7 [INFO] [stdout] | [INFO] [stdout] 42 | const SCROLL_RIGHT: i8 = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `GAP_BETWEEN_LOOP_TEXT_FIXED` is never used [INFO] [stdout] --> src/textable.rs:43:11 [INFO] [stdout] | [INFO] [stdout] 43 | pub const GAP_BETWEEN_LOOP_TEXT_FIXED: i32 = 12; // Fixed gap for continuous loop [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple fields are never read [INFO] [stdout] --> src/textable.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct State { // Made public so OledDisplay can read it [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 55 | pub text: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 56 | pub scroll_mode: ScrollMode, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 57 | pub font: MonoFont<'static>, // Stored here to be accessible to the task [INFO] [stdout] | ^^^^ [INFO] [stdout] 58 | pub text_width: u32, // NEW: Text width, updated by OledDisplay [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 59 | pub stop_flag: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 60 | pub current_offset_float: f32, // Use f32 for smoother scrolling calculation [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 61 | pub last_drawn_x_rounded: i32, // Store the last rounded X position that was drawn [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 62 | pub direction: i8, // -1 for left, 1 for right (for cylon) [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 63 | pub paused: bool, // For pause states in scrolling [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 64 | pub has_paused: bool, // For pause states in scrolling [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `name`, `top_left`, `width`, and `state` are never read [INFO] [stdout] --> src/textable.rs:96:9 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct TextScroller { [INFO] [stdout] | ------------ fields in this struct [INFO] [stdout] 96 | pub name: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] 97 | pub top_left: Point, // Public so OledDisplay can get position [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 98 | pub width: u32, // Display region width [INFO] [stdout] | ^^^^^ [INFO] [stdout] 99 | pub state: Arc>, // Shared state for the scrolling task [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `spawn_task`, `update_content`, `start`, and `stop` are never used [INFO] [stdout] --> src/textable.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 103 | impl TextScroller { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn new( [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 138 | fn spawn_task(&mut self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub async fn update_content(&mut self, new_text: String, new_mode: ScrollMode, new_text_width: u32) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 273 | pub async fn start(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 287 | pub async fn stop(&mut self) { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `THERMO_GLYPH_WIDTH` is never used [INFO] [stdout] --> src/weather_glyph.rs:37:11 [INFO] [stdout] | [INFO] [stdout] 37 | pub const THERMO_GLYPH_WIDTH: u32 = 12; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `THERMO_GLYPH_HEIGHT` is never used [INFO] [stdout] --> src/weather_glyph.rs:38:11 [INFO] [stdout] | [INFO] [stdout] 38 | pub const THERMO_GLYPH_HEIGHT: u32 = 12; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_weather_glyph_slice` is never used [INFO] [stdout] --> src/weather_glyph.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 61 | pub fn get_weather_glyph_slice(glyph_index: usize) -> &'static [u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_WIDTH` is never used [INFO] [stdout] --> src/weather_glyph.rs:71:11 [INFO] [stdout] | [INFO] [stdout] 71 | pub const MOON_PHASE_WIDTH: u32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_HEIGHT` is never used [INFO] [stdout] --> src/weather_glyph.rs:72:11 [INFO] [stdout] | [INFO] [stdout] 72 | pub const MOON_PHASE_HEIGHT: u32 = 30; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MOON_PHASE_RAW_DATA` is never used [INFO] [stdout] --> src/weather_glyph.rs:76:7 [INFO] [stdout] | [INFO] [stdout] 76 | const MOON_PHASE_RAW_DATA: &[u8] = include_bytes!("../data/moonphase_30x30.bin"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_moon_phase_slice` is never used [INFO] [stdout] --> src/weather_glyph.rs:85:8 [INFO] [stdout] | [INFO] [stdout] 85 | pub fn get_moon_phase_slice(phase: MoonPhase) -> &'static [u8] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `ConfigMissing` is never constructed [INFO] [stdout] --> src/location.rs:66:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub enum LocationError { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] 66 | ConfigMissing, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LocationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `moonrise` and `moonset` are never read [INFO] [stdout] --> src/astral.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct AstralData { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 38 | pub moonrise: Option>, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 39 | pub moonset: Option>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AstralData` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_daytime`, `minutes_until_next_event`, and `update_location` are never used [INFO] [stdout] --> src/astral.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 48 | impl AstralService { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn is_daytime(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 125 | pub fn minutes_until_next_event(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 148 | pub fn update_location(&mut self, location: Location) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NO_WIDE_ASSETS` is never used [INFO] [stdout] --> src/eggs.rs:56:11 [INFO] [stdout] | [INFO] [stdout] 56 | pub const NO_WIDE_ASSETS: [u8; 1] = [EGGS_TYPE_CASSETTE]; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HIST_FLOOR_DB` is never used [INFO] [stdout] --> src/spectrum.rs:24:7 [INFO] [stdout] | [INFO] [stdout] 24 | const HIST_FLOOR_DB: f32 = -80.0; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HIST_CEIL_DB` is never used [INFO] [stdout] --> src/spectrum.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const HIST_CEIL_DB: f32 = -12.0; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `EPS` is never used [INFO] [stdout] --> src/spectrum.rs:26:7 [INFO] [stdout] | [INFO] [stdout] 26 | const EPS: f32 = 1e-12; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SPECTRUM_MIN_HZ` is never used [INFO] [stdout] --> src/spectrum.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const SPECTRUM_MIN_HZ: f32 = 20.0; // start of spectrum [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FFT_MIN` is never used [INFO] [stdout] --> src/spectrum.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | const FFT_MIN: usize = 128; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `FFT_MAX` is never used [INFO] [stdout] --> src/spectrum.rs:29:7 [INFO] [stdout] | [INFO] [stdout] 29 | const FFT_MAX: usize = 4096; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PEAK_METER_LEVELS_MAX` is never used [INFO] [stdout] --> src/spectrum.rs:30:7 [INFO] [stdout] | [INFO] [stdout] 30 | const PEAK_METER_LEVELS_MAX: u8 = 48; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `SPECTRUM_BANDS_COUNT` is never used [INFO] [stdout] --> src/spectrum.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 31 | pub const SPECTRUM_BANDS_COUNT:u8 = 16; // Number of spectrum bands [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_hist_level` is never used [INFO] [stdout] --> src/spectrum.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn db_to_hist_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SpectrumEngine` is never constructed [INFO] [stdout] --> src/spectrum.rs:39:12 [INFO] [stdout] | [INFO] [stdout] 39 | pub struct SpectrumEngine { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `build_log_bands`, `ensure`, `compute_db_bands`, and `compute_levels` are never used [INFO] [stdout] --> src/spectrum.rs:56:12 [INFO] [stdout] | [INFO] [stdout] 55 | impl SpectrumEngine { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 56 | pub fn new(sr: u32, samples_len: usize, bands: usize) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | pub fn build_log_bands(sr: u32, nfft: usize, bands: usize) -> Vec<(usize, usize)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn ensure(&mut self, sr: u32, samples_len: usize) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 116 | pub fn compute_db_bands(&mut self, pcm: &[i16]) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 157 | pub fn compute_levels(&mut self, left: &[i16], right: &[i16]) -> (Vec, Vec) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `width` and `height` are never used [INFO] [stdout] --> src/vframebuf.rs:44:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl VarFrameBuf { [INFO] [stdout] | ------------------------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 44 | pub fn width(&self) -> usize { self.w } [INFO] [stdout] | ^^^^^ [INFO] [stdout] 45 | pub fn height(&self) -> usize { self.h } [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `VIS_BUF_SIZE` is never used [INFO] [stdout] --> src/vision.rs:52:7 [INFO] [stdout] | [INFO] [stdout] 52 | const VIS_BUF_SIZE:usize = 16_384; // Predefined in Squeezelite. [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `PEAK_METER_SCALE_HEADROOM` is never used [INFO] [stdout] --> src/vision.rs:54:11 [INFO] [stdout] | [INFO] [stdout] 54 | pub const PEAK_METER_SCALE_HEADROOM:f32 = 0.8; // 20% headroom clipping [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `METER_CHANNELS` is never used [INFO] [stdout] --> src/vision.rs:55:11 [INFO] [stdout] | [INFO] [stdout] 55 | pub const METER_CHANNELS:usize = 2; // Number of metered channels. [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LEVEL_DECAY_STEPS_PER_FRAME` is never used [INFO] [stdout] --> src/vision.rs:59:11 [INFO] [stdout] | [INFO] [stdout] 59 | pub const LEVEL_DECAY_STEPS_PER_FRAME: u8 = 1; // visual fall rate (levels / frame) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `LOCK_TRY_WINDOW_MS` is never used [INFO] [stdout] --> src/vision.rs:60:7 [INFO] [stdout] | [INFO] [stdout] 60 | const LOCK_TRY_WINDOW_MS: u32 = 5; // total budget for try-loop [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `POLL_IDLE` is never used [INFO] [stdout] --> src/vision.rs:64:11 [INFO] [stdout] | [INFO] [stdout] 64 | pub const POLL_IDLE: Duration = Duration::from_millis(48); // chill when idle [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset` is never used [INFO] [stdout] --> src/vision.rs:241:12 [INFO] [stdout] | [INFO] [stdout] 239 | impl LastVizState { [INFO] [stdout] | ----------------- method in this implementation [INFO] [stdout] 240 | [INFO] [stdout] 241 | pub fn reset(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ensure_band_state_old` is never used [INFO] [stdout] --> src/vision.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 275 | pub fn ensure_band_state_old( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ReadGuard` is never constructed [INFO] [stdout] --> src/vision.rs:409:8 [INFO] [stdout] | [INFO] [stdout] 409 | struct ReadGuard { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisT` is never constructed [INFO] [stdout] --> src/vision.rs:420:8 [INFO] [stdout] | [INFO] [stdout] 420 | struct VisT { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisFrame` is never constructed [INFO] [stdout] --> src/vision.rs:432:12 [INFO] [stdout] | [INFO] [stdout] 432 | pub struct VisFrame { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `VisReader` is never constructed [INFO] [stdout] --> src/vision.rs:440:12 [INFO] [stdout] | [INFO] [stdout] 440 | pub struct VisReader { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/vision.rs:458:12 [INFO] [stdout] | [INFO] [stdout] 456 | impl VisReader { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 457 | /// Discover the active Squeezelite shm in /dev/shm and map it. [INFO] [stdout] 458 | pub fn new() -> io::Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 494 | fn sd(&self) -> &VisT { [INFO] [stdout] | ^^ [INFO] [stdout] ... [INFO] [stdout] 501 | pub fn snapshot_if_new(&mut self) -> io::Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 565 | fn unlocked_snapshot_if_new_using_index(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 611 | pub fn with_data(&mut self, f: F) -> io::Result [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 634 | pub fn with_data_extended(&mut self, f: F) -> io::Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 654 | pub fn with_data_swapped(&mut self, swap_lr: bool, f: F) -> std::io::Result [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 679 | pub fn reopen_if_stale(&mut self) -> io::Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 694 | fn unlocked_snapshot_if_new(&self) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `header_looks_good` is never used [INFO] [stdout] --> src/vision.rs:745:4 [INFO] [stdout] | [INFO] [stdout] 745 | fn header_looks_good(size: usize, idx: usize, rate: u32) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `lock_read_best_effort` is never used [INFO] [stdout] --> src/vision.rs:754:11 [INFO] [stdout] | [INFO] [stdout] 754 | unsafe fn lock_read_best_effort( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `peak_and_rms` is never used [INFO] [stdout] --> src/vision.rs:783:8 [INFO] [stdout] | [INFO] [stdout] 783 | pub fn peak_and_rms(ch: &[i16]) -> (i16, f32) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level` is never used [INFO] [stdout] --> src/vision.rs:799:4 [INFO] [stdout] | [INFO] [stdout] 799 | fn db_to_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level_scale` is never used [INFO] [stdout] --> src/vision.rs:806:4 [INFO] [stdout] | [INFO] [stdout] 806 | fn db_to_level_scale(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `dbfs` is never used [INFO] [stdout] --> src/vision.rs:811:8 [INFO] [stdout] | [INFO] [stdout] 811 | pub fn dbfs(x: f32) -> f32 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stereo_channel_peak_rms` is never used [INFO] [stdout] --> src/vision.rs:816:4 [INFO] [stdout] | [INFO] [stdout] 816 | fn stereo_channel_peak_rms(samples_l: &[i16],samples_r: &[i16]) -> ((i16, f32), (i16, f32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stereo_peak_rms` is never used [INFO] [stdout] --> src/vision.rs:847:4 [INFO] [stdout] | [INFO] [stdout] 847 | fn stereo_peak_rms(samples: &[i16]) -> ((i16, f32), (i16, f32)) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PeakStereo`, `PeakMono`, `HistStereo`, `HistMono`, `AioHistMono`, and `WaveformSpectrum` are never constructed [INFO] [stdout] --> src/visualization.rs:43:5 [INFO] [stdout] | [INFO] [stdout] 40 | pub enum Visualization { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 43 | PeakStereo, // two peak meters with hold/decay [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 44 | PeakMono, // mono peak meter with hold/decay [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 45 | HistStereo, // two histogram bars (L/R) [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 46 | HistMono, // mono histogram (downmix) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 49 | AioHistMono, // All In One with downmix histogram [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 50 | WaveformSpectrum, // Waveform + Spectrogram (oscilloscope + waterfall) [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Visualization` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `transpose_kind` is never used [INFO] [stdout] --> src/visualization.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 375 | pub fn transpose_kind(kind: &str) -> Visualization { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_visualizer_panel_with_layout` is never used [INFO] [stdout] --> src/visualization.rs:397:8 [INFO] [stdout] | [INFO] [stdout] 397 | pub fn get_visualizer_panel_with_layout(kind: Visualization, layout: &LayoutConfig) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_visualizer_panel` is never used [INFO] [stdout] --> src/visualization.rs:437:8 [INFO] [stdout] | [INFO] [stdout] 437 | pub fn get_visualizer_panel(kind: Visualization, wide: bool) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `ts`, `playing`, `sample_rate`, and `kind` are never read [INFO] [stdout] --> src/visualizer.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 57 | pub struct VizFrameOut { [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] 58 | pub ts: i64, [INFO] [stdout] | ^^ [INFO] [stdout] 59 | pub playing: bool, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 60 | pub sample_rate: u32, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 61 | pub kind: Visualization, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizFrameOut` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple variants are never constructed [INFO] [stdout] --> src/visualizer.rs:68:5 [INFO] [stdout] | [INFO] [stdout] 67 | pub enum VizPayload { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 68 | VuStereo { l_db: f32, r_db: f32 }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 69 | VuMono { m_db: f32 }, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 70 | PeakStereo { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 74 | PeakMono { m_db: f32, hold: u8 }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 75 | HistStereo { bands_l: Vec, bands_r: Vec }, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] 76 | HistMono { bands: Vec }, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 77 | VuStereoWithCenterPeak { l_db: f32, r_db: f32, m_db: f32, peak_hold: u8 }, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 78 | AioVuMono { m_db: f32 }, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 79 | AioHistMono { bands: Vec }, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 80 | WaveformSpectrum { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 85 | NoVisualization {}, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizPayload` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Enable` and `SetKind` are never constructed [INFO] [stdout] --> src/visualizer.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 90 | pub enum VizCommand { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] 91 | Enable(bool), // enable/disable publishing [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 92 | SetKind(Visualization), // switch viz mode [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `VizCommand` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `spawn`, `enable`, `set_kind`, and `shutdown` are never used [INFO] [stdout] --> src/visualizer.rs:107:12 [INFO] [stdout] | [INFO] [stdout] 104 | impl Visualizer { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn spawn(kind: &str, playing_rx: watch::Receiver) -> std::io::Result { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | pub fn enable(&self, on: bool) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 130 | pub fn set_kind(&self, k: Visualization) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn shutdown(mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `visualizer_worker` is never used [INFO] [stdout] --> src/visualizer.rs:152:10 [INFO] [stdout] | [INFO] [stdout] 152 | async fn visualizer_worker( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `publish` is never used [INFO] [stdout] --> src/visualizer.rs:349:4 [INFO] [stdout] | [INFO] [stdout] 349 | fn publish( [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `db_to_level` is never used [INFO] [stdout] --> src/visualizer.rs:363:4 [INFO] [stdout] | [INFO] [stdout] 363 | fn db_to_level(db: f32) -> u8 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PeakHold` is never constructed [INFO] [stdout] --> src/visualizer.rs:368:8 [INFO] [stdout] | [INFO] [stdout] 368 | struct PeakHold { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `update` is never used [INFO] [stdout] --> src/visualizer.rs:375:8 [INFO] [stdout] | [INFO] [stdout] 374 | impl PeakHold { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 375 | fn update(&mut self, leds: &[bool; 19]) -> Option { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `with_db_range`, `with_arc_degrees`, `with_restitution`, and `with_max_dt` are never used [INFO] [stdout] --> src/vuphysics_new.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 148 | impl VuMeter { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 224 | pub fn with_db_range(mut self, scale_min: f64, scale_max: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 234 | pub fn with_arc_degrees(mut self, sweep_min: f64, sweep_max: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn with_restitution(mut self, restitution: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 320 | pub fn with_max_dt(mut self, max_dt: f64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_arc_degrees`, `set_overload_threshold`, and `set_physics` are never used [INFO] [stdout] --> src/vuphysics_new.rs:355:12 [INFO] [stdout] | [INFO] [stdout] 327 | impl VuMeter { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn set_arc_degrees(&mut self, sweep_min: f64, sweep_max: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 363 | pub fn set_overload_threshold(&mut self, threshold_db: f64, hold_s: f64) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 370 | pub fn set_physics(&mut self, inertia: f64, spring_k: f64, damping_b: f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `angle_radians` is never used [INFO] [stdout] --> src/vuphysics_new.rs:406:12 [INFO] [stdout] | [INFO] [stdout] 388 | impl VuMeter { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 406 | pub fn angle_radians(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `RenderingError` is never constructed [INFO] [stdout] --> src/svgimage.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 47 | pub enum SvgImageError { [INFO] [stdout] | ------------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 55 | RenderingError(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SvgImageError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `find_squeezelite_shm_path` is never used [INFO] [stdout] --> src/shm_path.rs:28:8 [INFO] [stdout] | [INFO] [stdout] 28 | pub fn find_squeezelite_shm_path() -> io::Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FunctionTimer` is never constructed [INFO] [stdout] --> src/func_timer.rs:28:12 [INFO] [stdout] | [INFO] [stdout] 28 | pub struct FunctionTimer { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/func_timer.rs:34:13 [INFO] [stdout] | [INFO] [stdout] 33 | impl FunctionTimer { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] 34 | pub fn new(name: &'static str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `asin_deg` is never used [INFO] [stdout] --> src/sun.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | fn asin_deg(x: f64) -> f64 { (x).asin() * RAD_TO_DEG } [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `to_fixed_offset` is never used [INFO] [stdout] --> src/sun.rs:166:8 [INFO] [stdout] | [INFO] [stdout] 166 | pub fn to_fixed_offset( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:457:9 [INFO] [stdout] | [INFO] [stdout] 457 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 463 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 463 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:469:9 [INFO] [stdout] | [INFO] [stdout] 469 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 475 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 475 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/eggs.rs:494:9 [INFO] [stdout] | [INFO] [stdout] 494 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 500 | ) -> Result, EggsError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 500 | ) -> Result, EggsError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:249:9 [INFO] [stdout] | [INFO] [stdout] 249 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 260 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 260 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:277:9 [INFO] [stdout] | [INFO] [stdout] 277 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 288 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 288 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/visualization.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | &mut self, [INFO] [stdout] | ^^^^^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 330 | ) -> Result, VizError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 330 | ) -> Result, VizError> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 42s [INFO] running `Command { std: "docker" "inspect" "004b36bd29b04138070c3dd2506ae016bcf6e0f364ed386ee7d639abd35f4361", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "004b36bd29b04138070c3dd2506ae016bcf6e0f364ed386ee7d639abd35f4361", kill_on_drop: false }` [INFO] [stdout] 004b36bd29b04138070c3dd2506ae016bcf6e0f364ed386ee7d639abd35f4361