[INFO] cloning repository https://github.com/Yacheen/handheld_video_player
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Yacheen/handheld_video_player" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYacheen%2Fhandheld_video_player", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYacheen%2Fhandheld_video_player'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 94c84cf059d0cc10a7e7c10124ef50a7590f4606
[INFO] checking Yacheen/handheld_video_player against master#82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1 for pr-150408
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FYacheen%2Fhandheld_video_player" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Yacheen/handheld_video_player
[INFO] finished tweaking git repo https://github.com/Yacheen/handheld_video_player
[INFO] tweaked toml for git repo https://github.com/Yacheen/handheld_video_player written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Yacheen/handheld_video_player on toolchain 82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Yacheen/handheld_video_player 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" "+82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ssd1306 v0.10.0
[INFO] [stderr]   Downloaded display-interface-i2c v0.5.0
[INFO] [stderr]   Downloaded linuxfb v0.3.1
[INFO] [stderr]   Downloaded sysfs_gpio v0.6.2
[INFO] [stderr]   Downloaded debouncr v0.2.2
[INFO] [stderr]   Downloaded linux-embedded-hal v0.4.0
[INFO] [stderr]   Downloaded i2cdev v0.6.1
[INFO] [stderr]   Downloaded gpio-cdev v0.4.0
[INFO] [stderr]   Downloaded maybe-async-cfg v0.2.4
[INFO] [stderr]   Downloaded gpio-cdev v0.6.0
[INFO] [stderr]   Downloaded zune-jpeg v0.4.20
[INFO] [stderr]   Downloaded serialport v4.7.2
[INFO] [stderr]   Downloaded pulldown-cmark v0.11.3
[INFO] [stderr]   Downloaded unescaper v0.1.6
[INFO] [stderr]   Downloaded openweathermap v0.2.4
[INFO] [stderr]   Downloaded spidev v0.6.0
[INFO] [stderr]   Downloaded mipidsi v0.9.0
[INFO] [stderr]   Downloaded nix v0.23.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] db151a449dfce5ec07b820393e9f2bf30b1a4bd3be5c8a33ab5fa0c531c9fe6f
[INFO] running `Command { std: "docker" "start" "-a" "db151a449dfce5ec07b820393e9f2bf30b1a4bd3be5c8a33ab5fa0c531c9fe6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "db151a449dfce5ec07b820393e9f2bf30b1a4bd3be5c8a33ab5fa0c531c9fe6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "db151a449dfce5ec07b820393e9f2bf30b1a4bd3be5c8a33ab5fa0c531c9fe6f", kill_on_drop: false }`
[INFO] [stdout] db151a449dfce5ec07b820393e9f2bf30b1a4bd3be5c8a33ab5fa0c531c9fe6f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+82dd3cb008233bfe50ba6b8d6618e6bbd6054eb1" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8c28bbe8ee144790b0c3de65cfbb86e277f10d6ff31086c65d9c5ebb200111fc
[INFO] running `Command { std: "docker" "start" "-a" "8c28bbe8ee144790b0c3de65cfbb86e277f10d6ff31086c65d9c5ebb200111fc", kill_on_drop: false }`
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking itoa v1.0.16
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling prettyplease v0.2.36
[INFO] [stderr]    Compiling az v1.2.1
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling memoffset v0.6.5
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking http v0.2.12
[INFO] [stderr]    Compiling bindgen v0.68.1
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling which v4.4.2
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]    Compiling clang-sys v1.8.1
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling pulldown-cmark v0.11.3
[INFO] [stderr]    Compiling peeking_take_while v0.1.2
[INFO] [stderr]     Checking ryu v1.0.21
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking http-body v0.4.6
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]    Compiling doc-comment v0.3.3
[INFO] [stderr]    Compiling nix v0.14.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking embedded-graphics-core v0.4.0
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]    Compiling serde_json v1.0.143
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking display-interface v0.5.0
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking nix v0.23.2
[INFO] [stderr]     Checking unescaper v0.1.6
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking hash32 v0.3.1
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking byte-slice-cast v1.2.3
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking zune-jpeg v0.4.20
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking spidev v0.6.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking serialport v4.7.2
[INFO] [stderr]     Checking i2cdev v0.6.1
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking display-interface-spi v0.5.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]     Checking heapless v0.8.0
[INFO] [stderr]     Checking display-interface-i2c v0.5.0
[INFO] [stderr]     Checking float-cmp v0.9.0
[INFO] [stderr]     Checking memmap v0.7.0
[INFO] [stderr]     Checking micromath v2.1.0
[INFO] [stderr]     Checking critical-section v1.2.0
[INFO] [stderr]     Checking mipidsi v0.9.0
[INFO] [stderr]     Checking embedded-hal-bus v0.3.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking embedded-graphics v0.8.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking debouncr v0.2.2
[INFO] [stderr]     Checking url v2.5.7
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking gpio-cdev v0.4.0
[INFO] [stderr]     Checking tokio-util v0.7.17
[INFO] [stderr]     Checking gpio-cdev v0.6.0
[INFO] [stderr]     Checking sysfs_gpio v0.6.2
[INFO] [stderr]     Checking linux-embedded-hal v0.4.0
[INFO] [stderr]    Compiling maybe-async-cfg v0.2.4
[INFO] [stderr]     Checking h2 v0.3.27
[INFO] [stderr]     Checking ssd1306 v0.10.0
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]    Compiling linuxfb v0.3.1
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking openweathermap v0.2.4
[INFO] [stderr]     Checking first_display_project_spi v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `AsyncLineEventHandle`, `EventRequestFlags`, and `EventType`
[INFO] [stdout]  --> src/main.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use linux_embedded_hal::{gpio_cdev::{AsyncLineEventHandle, Chip, EventRequestFlags, EventType, LineRequestFlags}, I2cdev};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `linux_embedded_hal::i2cdev::core::I2CDevice`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use linux_embedded_hal::i2cdev::core::I2CDevice;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `collections::HashMap`
[INFO] [stdout]  --> src/main.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{collections::HashMap, fs::DirEntry, io::prelude::*, os::unix::{ffi::OsStringExt, fs::MetadataExt}, path::PathBuf, sync::{at...
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Debouncer` and `Repeat4`
[INFO] [stdout]   --> src/main.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 | use debouncr::{debounce_4, Debouncer, Edge, Repeat4};
[INFO] [stdout]    |                            ^^^^^^^^^        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `init` and `update`
[INFO] [stdout]   --> src/main.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | use openweathermap::{blocking::weather, init, update};
[INFO] [stdout]    |                                         ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryColor` and `CornerRadii`
[INFO] [stdout]  --> src/draw.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |   pixelcolor::{BinaryColor, Rgb565}, prelude::*, primitives::{Circle, CornerRadii, Line, Polyline, PrimitiveStyle, Rectangle, Rounded...
[INFO] [stdout]   |                ^^^^^^^^^^^                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AsyncLineEventHandle`, `EventRequestFlags`, and `EventType`
[INFO] [stdout]  --> src/main.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use linux_embedded_hal::{gpio_cdev::{AsyncLineEventHandle, Chip, EventRequestFlags, EventType, LineRequestFlags}, I2cdev};
[INFO] [stdout]   |                                      ^^^^^^^^^^^^^^^^^^^^        ^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `linux_embedded_hal::i2cdev::core::I2CDevice`
[INFO] [stdout]  --> src/main.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use linux_embedded_hal::i2cdev::core::I2CDevice;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `collections::HashMap`
[INFO] [stdout]  --> src/main.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{collections::HashMap, fs::DirEntry, io::prelude::*, os::unix::{ffi::OsStringExt, fs::MetadataExt}, path::PathBuf, sync::{at...
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Debouncer` and `Repeat4`
[INFO] [stdout]   --> src/main.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 | use debouncr::{debounce_4, Debouncer, Edge, Repeat4};
[INFO] [stdout]    |                            ^^^^^^^^^        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `init` and `update`
[INFO] [stdout]   --> src/main.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | use openweathermap::{blocking::weather, init, update};
[INFO] [stdout]    |                                         ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BinaryColor` and `CornerRadii`
[INFO] [stdout]  --> src/draw.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |   pixelcolor::{BinaryColor, Rgb565}, prelude::*, primitives::{Circle, CornerRadii, Line, Polyline, PrimitiveStyle, Rectangle, Rounded...
[INFO] [stdout]   |                ^^^^^^^^^^^                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::StreamExt`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use futures::StreamExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ffi::OsStringExt`
[INFO] [stdout]  --> src/main.rs:9:74
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{collections::HashMap, fs::DirEntry, io::prelude::*, os::unix::{ffi::OsStringExt, fs::MetadataExt}, path::PathBuf, sync::{at...
[INFO] [stdout]   |                                                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures::StreamExt`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use futures::StreamExt;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ffi::OsStringExt`
[INFO] [stdout]  --> src/main.rs:9:74
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::{collections::HashMap, fs::DirEntry, io::prelude::*, os::unix::{ffi::OsStringExt, fs::MetadataExt}, path::PathBuf, sync::{at...
[INFO] [stdout]   |                                                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:47:53
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn draw_clock(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:47:67
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn draw_clock(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:72:54
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn draw_folder(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:72:68
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn draw_folder(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:93:53
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_cloud(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:93:67
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_cloud(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:47:53
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn draw_clock(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:47:67
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn draw_clock(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:72:54
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn draw_folder(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                      ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:72:68
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn draw_folder(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]   --> src/draw.rs:93:53
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_cloud(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `height`
[INFO] [stdout]   --> src/draw.rs:93:67
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_cloud(display: &mut FramebufferDisplay, width: usize, height: usize, top_left: Point) {
[INFO] [stdout]    |                                                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:621:25
[INFO] [stdout]     |
[INFO] [stdout] 621 |                         _ => ()
[INFO] [stdout]     |                         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:621:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         ButtonEvent::Escape => {
[INFO] [stdout]     |                         ------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 554 |                         ButtonEvent::Select => {
[INFO] [stdout]     |                         ------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 594 |                         ButtonEvent::Up => {
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 602 |                         ButtonEvent::Down => {
[INFO] [stdout]     |                         ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 621 |                         _ => ()
[INFO] [stdout]     |                         ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/main.rs:621:25
[INFO] [stdout]     |
[INFO] [stdout] 621 |                         _ => ()
[INFO] [stdout]     |                         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/main.rs:621:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |                         ButtonEvent::Escape => {
[INFO] [stdout]     |                         ------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 554 |                         ButtonEvent::Select => {
[INFO] [stdout]     |                         ------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 594 |                         ButtonEvent::Up => {
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 602 |                         ButtonEvent::Down => {
[INFO] [stdout]     |                         ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 621 |                         _ => ()
[INFO] [stdout]     |                         ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:161:19
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let (draw_tx, mut draw_rx) = mpsc::channel::<DrawCommand>();
[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/main.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |                       ----^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]    --> src/main.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let output = Command::new("./setup_gpios.sh")
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_dir_as_str`
[INFO] [stdout]    --> src/main.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let current_dir_as_str= current_dir
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_dir_as_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:161:19
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let (draw_tx, mut draw_rx) = mpsc::channel::<DrawCommand>();
[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/main.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |                       ----^^^^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i2c_draw_tx`
[INFO] [stdout]    --> src/main.rs:162:10
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_draw_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i2c_draw_rx`
[INFO] [stdout]    --> src/main.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_draw_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_modified`
[INFO] [stdout]    --> src/main.rs:322:84
[INFO] [stdout]     |
[INFO] [stdout] 322 | ...                   SelectResponse::Directory { file_path, file_count, last_modified } => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^^ help: try ignoring the field: `last_modified: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]    --> src/main.rs:134:9
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let output = Command::new("./setup_gpios.sh")
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_dir_as_str`
[INFO] [stdout]    --> src/main.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let current_dir_as_str= current_dir
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_dir_as_str`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i2c_draw_tx`
[INFO] [stdout]    --> src/main.rs:162:10
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |          ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_draw_tx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i2c_draw_rx`
[INFO] [stdout]    --> src/main.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let (i2c_draw_tx, mut i2c_draw_rx) = mpsc::channel::<DrawCommand>();
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_i2c_draw_rx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_modified`
[INFO] [stdout]    --> src/main.rs:322:84
[INFO] [stdout]     |
[INFO] [stdout] 322 | ...                   SelectResponse::Directory { file_path, file_count, last_modified } => {
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^^ help: try ignoring the field: `last_modified: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:762:21
[INFO] [stdout]     |
[INFO] [stdout] 762 |                 let mut value = color.into_storage();
[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/main.rs:762:21
[INFO] [stdout]     |
[INFO] [stdout] 762 |                 let mut value = color.into_storage();
[INFO] [stdout]     |                     ----^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/main.rs:1162:70
[INFO] [stdout]      |
[INFO] [stdout] 1162 | fn undraw_nav_background(fb: &mut [u8], width: usize, height: usize, msg: &str, point: Point) {
[INFO] [stdout]      |                                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]     --> src/main.rs:1162:70
[INFO] [stdout]      |
[INFO] [stdout] 1162 | fn undraw_nav_background(fb: &mut [u8], width: usize, height: usize, msg: &str, point: Point) {
[INFO] [stdout]      |                                                                      ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/main.rs:1346:17
[INFO] [stdout]      |
[INFO] [stdout] 1346 |                 _ => ()
[INFO] [stdout]      |                 ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/main.rs:1346:17
[INFO] [stdout]      |
[INFO] [stdout] 1282 |                 DrawCommand::Text { content, position, undraw, is_selected } => {
[INFO] [stdout]      |                 ------------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1290 |                 DrawCommand::ConfirmingBackground { message, options } => {
[INFO] [stdout]      |                 ------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1294 |                 DrawCommand::NavigatingBackground { current_dir, file_count, current_index } => {
[INFO] [stdout]      |                 ---------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1297 |                 DrawCommand::RawFrame { data } => {
[INFO] [stdout]      |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1346 |                 _ => ()
[INFO] [stdout]      |                 ^ ...and 6 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/main.rs:1346:17
[INFO] [stdout]      |
[INFO] [stdout] 1346 |                 _ => ()
[INFO] [stdout]      |                 ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/main.rs:1346:17
[INFO] [stdout]      |
[INFO] [stdout] 1282 |                 DrawCommand::Text { content, position, undraw, is_selected } => {
[INFO] [stdout]      |                 ------------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1290 |                 DrawCommand::ConfirmingBackground { message, options } => {
[INFO] [stdout]      |                 ------------------------------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1294 |                 DrawCommand::NavigatingBackground { current_dir, file_count, current_index } => {
[INFO] [stdout]      |                 ---------------------------------------------------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1297 |                 DrawCommand::RawFrame { data } => {
[INFO] [stdout]      |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1346 |                 _ => ()
[INFO] [stdout]      |                 ^ ...and 6 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1228:23
[INFO] [stdout]      |
[INFO] [stdout] 1228 | fn start_drawing_task(mut draw_rx: mpsc::Receiver<DrawCommand>) {
[INFO] [stdout]      |                       ----^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bpp`
[INFO] [stdout]     --> src/main.rs:1233:9
[INFO] [stdout]      |
[INFO] [stdout] 1233 |     let bpp = fb.get_bytes_per_pixel() as usize;
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_bpp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1228:23
[INFO] [stdout]      |
[INFO] [stdout] 1228 | fn start_drawing_task(mut draw_rx: mpsc::Receiver<DrawCommand>) {
[INFO] [stdout]      |                       ----^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bpp`
[INFO] [stdout]     --> src/main.rs:1233:9
[INFO] [stdout]      |
[INFO] [stdout] 1233 |     let bpp = fb.get_bytes_per_pixel() as usize;
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_bpp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]     --> src/main.rs:1776:13
[INFO] [stdout]      |
[INFO] [stdout] 1776 |         Err(err) => {
[INFO] [stdout]      |             ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]     --> src/main.rs:1776:13
[INFO] [stdout]      |
[INFO] [stdout] 1776 |         Err(err) => {
[INFO] [stdout]      |             ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SSD1306_SLAVE_ADDR` is never used
[INFO] [stdout]   --> src/main.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const SSD1306_SLAVE_ADDR: u16 = 0x3c;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `previous_state` and `error_state` are never read
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct State {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 54 |     current_state: Arc<Mutex<DisplayState>>,
[INFO] [stdout] 55 |     previous_state: DisplayState,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     error_state: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/main.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct ModalState {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] 65 |     message: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ModalState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_size`, `file_name`, `file_extension`, `is_dir`, and `last_modified` are never read
[INFO] [stdout]   --> src/main.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct FileDetails {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 71 |     file_path: PathBuf,
[INFO] [stdout] 72 |     file_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 73 |     file_name: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 74 |     file_extension: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     is_dir: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 76 |     last_modified: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileDetails` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ClearI2CScreen` is never constructed
[INFO] [stdout]    --> src/main.rs:809:5
[INFO] [stdout]     |
[INFO] [stdout] 778 | enum DrawCommand {
[INFO] [stdout]     |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 809 |     ClearI2CScreen(bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `undraw_nav_background` is never used
[INFO] [stdout]     --> src/main.rs:1162:4
[INFO] [stdout]      |
[INFO] [stdout] 1162 | fn undraw_nav_background(fb: &mut [u8], width: usize, height: usize, msg: &str, point: Point) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FatalError` is never constructed
[INFO] [stdout]     --> src/main.rs:1534:5
[INFO] [stdout]      |
[INFO] [stdout] 1519 | enum SelectResponse {
[INFO] [stdout]      |      -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1534 |     FatalError(String),
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOP_CAROUSEL_BG_COORDS` is never used
[INFO] [stdout]   --> src/draw.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const TOP_CAROUSEL_BG_COORDS: Point = Point::new(50, 90);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_CAROUSEL_BG_COORDS` is never used
[INFO] [stdout]   --> src/draw.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const BOTTOM_CAROUSEL_BG_COORDS: Point = Point::new(50, 190);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_camera` is never used
[INFO] [stdout]    --> src/draw.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn draw_camera(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_file` is never used
[INFO] [stdout]    --> src/draw.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn draw_file(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_question_mark` is never used
[INFO] [stdout]    --> src/draw.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn draw_question_mark(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_music_note` is never used
[INFO] [stdout]    --> src/draw.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn draw_music_note(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_playing` is never used
[INFO] [stdout]    --> src/draw.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn draw_playing(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_paused` is never used
[INFO] [stdout]    --> src/draw.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn draw_paused(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_volume` is never used
[INFO] [stdout]    --> src/draw.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn draw_volume(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SSD1306_SLAVE_ADDR` is never used
[INFO] [stdout]   --> src/main.rs:27:7
[INFO] [stdout]    |
[INFO] [stdout] 27 | const SSD1306_SLAVE_ADDR: u16 = 0x3c;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `previous_state` and `error_state` are never read
[INFO] [stdout]   --> src/main.rs:55:5
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct State {
[INFO] [stdout]    |        ----- fields in this struct
[INFO] [stdout] 54 |     current_state: Arc<Mutex<DisplayState>>,
[INFO] [stdout] 55 |     previous_state: DisplayState,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     error_state: String,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `message` is never read
[INFO] [stdout]   --> src/main.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 64 | struct ModalState {
[INFO] [stdout]    |        ---------- field in this struct
[INFO] [stdout] 65 |     message: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ModalState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file_size`, `file_name`, `file_extension`, `is_dir`, and `last_modified` are never read
[INFO] [stdout]   --> src/main.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct FileDetails {
[INFO] [stdout]    |        ----------- fields in this struct
[INFO] [stdout] 71 |     file_path: PathBuf,
[INFO] [stdout] 72 |     file_size: u64,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 73 |     file_name: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 74 |     file_extension: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 75 |     is_dir: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 76 |     last_modified: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileDetails` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ClearI2CScreen` is never constructed
[INFO] [stdout]    --> src/main.rs:809:5
[INFO] [stdout]     |
[INFO] [stdout] 778 | enum DrawCommand {
[INFO] [stdout]     |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 809 |     ClearI2CScreen(bool),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `undraw_nav_background` is never used
[INFO] [stdout]     --> src/main.rs:1162:4
[INFO] [stdout]      |
[INFO] [stdout] 1162 | fn undraw_nav_background(fb: &mut [u8], width: usize, height: usize, msg: &str, point: Point) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `FatalError` is never constructed
[INFO] [stdout]     --> src/main.rs:1534:5
[INFO] [stdout]      |
[INFO] [stdout] 1519 | enum SelectResponse {
[INFO] [stdout]      |      -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1534 |     FatalError(String),
[INFO] [stdout]      |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TOP_CAROUSEL_BG_COORDS` is never used
[INFO] [stdout]   --> src/draw.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const TOP_CAROUSEL_BG_COORDS: Point = Point::new(50, 90);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOTTOM_CAROUSEL_BG_COORDS` is never used
[INFO] [stdout]   --> src/draw.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const BOTTOM_CAROUSEL_BG_COORDS: Point = Point::new(50, 190);
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_camera` is never used
[INFO] [stdout]    --> src/draw.rs:125:8
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub fn draw_camera(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_file` is never used
[INFO] [stdout]    --> src/draw.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn draw_file(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_question_mark` is never used
[INFO] [stdout]    --> src/draw.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn draw_question_mark(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_music_note` is never used
[INFO] [stdout]    --> src/draw.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn draw_music_note(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_playing` is never used
[INFO] [stdout]    --> src/draw.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn draw_playing(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_paused` is never used
[INFO] [stdout]    --> src/draw.rs:238:8
[INFO] [stdout]     |
[INFO] [stdout] 238 | pub fn draw_paused(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_volume` is never used
[INFO] [stdout]    --> src/draw.rs:275:8
[INFO] [stdout]     |
[INFO] [stdout] 275 | pub fn draw_volume(fb: &mut [u8], width: usize, height: usize, top_left: Point) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 48.76s
[INFO] running `Command { std: "docker" "inspect" "8c28bbe8ee144790b0c3de65cfbb86e277f10d6ff31086c65d9c5ebb200111fc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8c28bbe8ee144790b0c3de65cfbb86e277f10d6ff31086c65d9c5ebb200111fc", kill_on_drop: false }`
[INFO] [stdout] 8c28bbe8ee144790b0c3de65cfbb86e277f10d6ff31086c65d9c5ebb200111fc
