[INFO] cloning repository https://github.com/gmono/advance-shell
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gmono/advance-shell" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmono%2Fadvance-shell", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmono%2Fadvance-shell'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 39c2b287bb4cfcd463e97c1df1e41684d3d6d3e8
[INFO] checking gmono/advance-shell against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgmono%2Fadvance-shell" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-3-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/gmono/advance-shell
[INFO] finished tweaking git repo https://github.com/gmono/advance-shell
[INFO] tweaked toml for git repo https://github.com/gmono/advance-shell written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/gmono/advance-shell on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/gmono/advance-shell 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: binary `system_tools` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /workspace/builds/worker-3-tc1/source/target/.../system_tools
[INFO] [stderr]    |                                                  ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `system-tools`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:64:8
[INFO] [stderr]    |
[INFO] [stderr] 64 - name = "system_tools"
[INFO] [stderr] 64 + name = "system-tools"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `system-tools`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:70:15
[INFO] [stderr]    |
[INFO] [stderr] 70 ~ opt-level = 0
[INFO] [stderr] 71 + [[bin]]
[INFO] [stderr] 72 + name = "system-tools"
[INFO] [stderr] 73 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `system_tools` (manifest) generated 1 warning
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fastbloom v0.14.1
[INFO] [stderr]   Downloaded utf8-width v0.1.8
[INFO] [stderr]   Downloaded html-escape v0.2.13
[INFO] [stderr]   Downloaded rustyline v14.0.0
[INFO] [stderr]   Downloaded nix v0.28.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c
[INFO] running `Command { std: "docker" "start" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `system_tools` should have a kebab-case name
[INFO] [stderr]    |
[INFO] [stderr]  1 | /opt/rustwide/target/.../system_tools
[INFO] [stderr]    |                          ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `system-tools`, convert `package.name`
[INFO] [stderr]   --> Cargo.toml:64:8
[INFO] [stderr]    |
[INFO] [stderr] 64 - name = "system_tools"
[INFO] [stderr] 64 + name = "system-tools"
[INFO] [stderr]    |
[INFO] [stderr] help: to change the binary name to `system-tools`, specify `bin.name`
[INFO] [stderr]   --> Cargo.toml:70:15
[INFO] [stderr]    |
[INFO] [stderr] 70 ~ opt-level = 0
[INFO] [stderr] 71 + [[bin]]
[INFO] [stderr] 72 + name = "system-tools"
[INFO] [stderr] 73 + path = "src/main.rs"
[INFO] [stderr]    |
[INFO] [stderr] warning: `system_tools` (manifest) generated 1 warning
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling libc v0.2.183
[INFO] [stderr]     Checking stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]     Checking cfg-if v1.0.4
[INFO] [stderr]     Checking itoa v1.0.17
[INFO] [stderr]     Checking bytes v1.11.1
[INFO] [stderr]     Checking pin-project-lite v0.2.17
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]    Compiling shlex v1.3.0
[INFO] [stderr]    Compiling find-msvc-tools v0.1.9
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]     Checking writeable v0.6.2
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]     Checking litemap v0.8.1
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling icu_normalizer_data v2.1.1
[INFO] [stderr]    Compiling icu_properties_data v2.1.2
[INFO] [stderr]    Compiling cc v1.2.57
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking percent-encoding v2.3.2
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking untrusted v0.9.0
[INFO] [stderr]     Checking rustls-pki-types v1.14.0
[INFO] [stderr]     Checking try-lock v0.2.5
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling rustls v0.23.37
[INFO] [stderr]     Checking tower-service v0.3.3
[INFO] [stderr]     Checking want v0.3.1
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking atomic-waker v1.1.2
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking hashbrown v0.16.1
[INFO] [stderr]     Checking linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]    Compiling nix v0.28.0
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking tracing-core v0.1.36
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]     Checking utf8_iter v1.0.4
[INFO] [stderr]     Checking http v1.4.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]     Checking base64 v0.22.1
[INFO] [stderr]     Checking ipnet v2.12.0
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking webpki-roots v1.0.6
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking iri-string v0.7.10
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking winnow v0.7.15
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking indexmap v2.13.0
[INFO] [stderr]     Checking unsafe-libyaml v0.2.11
[INFO] [stderr]     Checking utf8-width v0.1.8
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking libloading v0.8.9
[INFO] [stderr]     Checking html-escape v0.2.13
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking tokio v1.50.0
[INFO] [stderr]     Checking fd-lock v4.0.4
[INFO] [stderr]     Checking terminal_size v0.4.3
[INFO] [stderr]     Checking rustyline v14.0.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.2
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.1
[INFO] [stderr]     Checking zerovec v0.11.5
[INFO] [stderr]     Checking zerotrie v0.2.3
[INFO] [stderr]     Checking rustls-webpki v0.103.9
[INFO] [stderr]     Checking tinystr v0.8.2
[INFO] [stderr]     Checking potential_utf v0.1.4
[INFO] [stderr]     Checking icu_collections v2.1.1
[INFO] [stderr]     Checking icu_locale_core v2.1.1
[INFO] [stderr]     Checking hyper v1.8.1
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking icu_provider v2.1.1
[INFO] [stderr]     Checking icu_normalizer v2.1.1
[INFO] [stderr]     Checking icu_properties v2.1.2
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking hyper-rustls v0.27.7
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking system_tools v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `DebugChannel`, `DebugControl`, `DebugEvent`, and `DebugSnapshot`
[INFO] [stdout]   --> src/debug/mod.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use noop::{DebugChannel, DebugControl, DebugEvent, DebugSnapshot};
[INFO] [stdout]    |                ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/render/backend.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DrmOverlayPointer` and `TextArrowPointer`
[INFO] [stdout]  --> src/render/mouse/mod.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 |     MousePointer, TextArrowPointer, DrmOverlayPointer, NullPointer, PointerState, create_pointer,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `truncate_text` and `visible_char_width`
[INFO] [stdout]   --> src/render/mod.rs:16:52
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use ansi::{ansi, pad_right, pad_right_visible, truncate_text, truncate_visible, visible_char_width};
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^                    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Card` and `render_cards_row`
[INFO] [stdout]   --> src/render/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use cards::{Card, MonitorCard, pad_box_height, render_cards_row, render_monitor_row, render_panel_box};
[INFO] [stdout]    |                 ^^^^                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `colorize_status_segment` and `traffic_lights`
[INFO] [stdout]   --> src/render/mod.rs:21:25
[INFO] [stdout]    |
[INFO] [stdout] 21 |     colorize_candidate, colorize_status_segment,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     is_continuation_prompt, traffic_lights,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DebugChannel`, `DebugControl`, `DebugEvent`, and `DebugSnapshot`
[INFO] [stdout]   --> src/debug/mod.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use noop::{DebugChannel, DebugControl, DebugEvent, DebugSnapshot};
[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: `DrmOverlayPointer` and `TextArrowPointer`
[INFO] [stdout]  --> src/render/mouse/mod.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 |     MousePointer, TextArrowPointer, DrmOverlayPointer, NullPointer, PointerState, create_pointer,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `visible_char_width`
[INFO] [stdout]   --> src/render/mod.rs:16:85
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use ansi::{ansi, pad_right, pad_right_visible, truncate_text, truncate_visible, visible_char_width};
[INFO] [stdout]    |                                                                                     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Card` and `render_cards_row`
[INFO] [stdout]   --> src/render/mod.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use cards::{Card, MonitorCard, pad_box_height, render_cards_row, render_monitor_row, render_panel_box};
[INFO] [stdout]    |                 ^^^^                               ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `colorize_status_segment` and `traffic_lights`
[INFO] [stdout]   --> src/render/mod.rs:21:25
[INFO] [stdout]    |
[INFO] [stdout] 21 |     colorize_candidate, colorize_status_segment,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     is_continuation_prompt, traffic_lights,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/render/backend.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/render/backend.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/render/font_atlas.rs:3:35
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Read};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]    --> src/render/backend.rs:108:39
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn draw_text(&mut self, col: u16, row: u16, text: &str) {
[INFO] [stdout]     |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/font_atlas.rs:101:13
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let mut offset = header_size;
[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/render/font_atlas.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let mut make = |ch: char, pixels: &[(u32, u32)]| -> (char, GlyphBitmap) {
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/render/backend.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Read, Write};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/render/backend.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{Read, Write};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/render/font_atlas.rs:3:35
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{BufRead, BufReader, Read};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_spec_from_path` is never used
[INFO] [stdout]    --> src/app_spec/mod.rs:670:15
[INFO] [stdout]     |
[INFO] [stdout] 670 | pub(crate) fn load_spec_from_path(path: &Path) -> AppSpecResult<AppSpec> {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `debounce_ms` is never read
[INFO] [stdout]   --> src/code_precontext.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) struct PrecontextClient {
[INFO] [stdout]    |                   ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     debounce_ms: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrecontextClient` 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 `debounce_ms` is never used
[INFO] [stdout]    --> src/code_precontext.rs:112:19
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl PrecontextClient {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub(crate) fn debounce_ms(&self) -> u64 {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PROFILE` is never used
[INFO] [stdout]  --> src/config.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const DEFAULT_PROFILE: &str = "default";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENV_CONFIG_PATH` is never used
[INFO] [stdout]  --> src/config.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const ENV_CONFIG_PATH: &str = "SYSTEM_TOOLS_CONFIG";
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENV_PROFILE` is never used
[INFO] [stdout]  --> src/config.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const ENV_PROFILE: &str = "SYSTEM_TOOLS_PROFILE";
[INFO] [stdout]   |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemConfig` is never constructed
[INFO] [stdout]   --> src/config.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub(crate) struct SystemConfig {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/config.rs:18:19
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl SystemConfig {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  18 |     pub(crate) fn load(
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub(crate) fn profile_name(&self) -> &str {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub(crate) fn portal_shared_key(&self) -> Option<&str> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub(crate) fn portal_identity(&self) -> Option<&str> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub(crate) fn set_portal_shared_key(&mut self, key_hex: String) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub(crate) fn set_portal_identity(&mut self, identity: String) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub(crate) fn save(&self) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn profile_table(&self) -> Option<&Map<String, Value>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     fn ensure_active_profile(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `active_profile` is never used
[INFO] [stdout]    --> src/config.rs:133:4
[INFO] [stdout]     |
[INFO] [stdout] 133 | fn active_profile(environment: &BTreeMap<String, String>, data: &Value) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `config_path` is never used
[INFO] [stdout]    --> src/config.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn config_path(environment: &BTreeMap<String, String>) -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `home_dir` is never used
[INFO] [stdout]    --> src/config.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn home_dir(environment: &BTreeMap<String, String>) -> PathBuf {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugChannel` is never constructed
[INFO] [stdout]  --> src/debug/noop.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct DebugChannel;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, `try_recv`, and `recv_all` are never used
[INFO] [stdout]   --> src/debug/noop.rs:4:12
[INFO] [stdout]    |
[INFO] [stdout]  3 | impl DebugChannel {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout]  4 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |     pub fn send(&self, _event: DebugEvent) {}
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |
[INFO] [stdout] 10 |     pub fn try_recv(&self) -> Option<DebugEvent> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn recv_all(&self) -> Vec<DebugEvent> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DebugEvent` is never used
[INFO] [stdout]   --> src/debug/noop.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum DebugEvent {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugControl` is never constructed
[INFO] [stdout]   --> src/debug/noop.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct DebugControl;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_paused`, and `should_step` are never used
[INFO] [stdout]   --> src/debug/noop.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl DebugControl {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 31 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn is_paused(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn should_step(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugSnapshot` is never constructed
[INFO] [stdout]   --> src/debug/noop.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct DebugSnapshot;
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_json` and `to_json_pretty` are never used
[INFO] [stdout]   --> src/debug/noop.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl DebugSnapshot {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 54 |     pub fn to_json(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn to_json_pretty(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_fn_entry` is never used
[INFO] [stdout]   --> src/debug/noop.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn probe_fn_entry(_name: &'static str) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_fn_exit` is never used
[INFO] [stdout]   --> src/debug/noop.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn probe_fn_exit(_name: &'static str) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_state` is never used
[INFO] [stdout]   --> src/debug/noop.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn probe_state(_target: &'static str, _field: &'static str, _detail: String) {}
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_custom` is never used
[INFO] [stdout]   --> src/debug/noop.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn probe_custom(_tag: &'static str, _message: String) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUILTIN_PANEL_SUBCOMMANDS` is never used
[INFO] [stdout]  --> src/panel.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) const BUILTIN_PANEL_SUBCOMMANDS: &[&str] = &[
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Html` is never constructed
[INFO] [stdout]   --> src/panel.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub(crate) enum PanelContentType {
[INFO] [stdout]    |                 ---------------- variant in this enum
[INFO] [stdout] 28 |     Text,
[INFO] [stdout] 29 |     Html,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PanelContentType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Command` and `Static` are never constructed
[INFO] [stdout]   --> src/panel.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub(crate) enum PanelSource {
[INFO] [stdout]    |                 ----------- variants in this enum
[INFO] [stdout] 34 |     Command(String),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     Static,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PanelSource` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unregister`, `focused_id`, `is_empty`, `command_source`, and `auto_refresh_targets` are never used
[INFO] [stdout]    --> src/panel.rs:81:19
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl PanelManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub(crate) fn unregister(&mut self, id: &str) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub(crate) fn focused_id(&self) -> Option<&str> {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub(crate) fn is_empty(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub(crate) fn command_source(&self, id: &str) -> Option<&str> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub(crate) fn auto_refresh_targets(&self) -> Vec<(String, String, usize)> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_mouse`, `supports_cursor`, and `is_drm` are never read
[INFO] [stdout]   --> src/render/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RenderContext {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub supports_mouse: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     pub supports_cursor: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub is_drm: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_environment` is never used
[INFO] [stdout]   --> src/render/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl RenderContext {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 39 |     pub fn from_environment(environment: &BTreeMap<String, String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `terminal_width` is never used
[INFO] [stdout]   --> src/render/mod.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn terminal_width(environment: &BTreeMap<String, String>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/render/backend.rs:9:8
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait RenderBackend {
[INFO] [stdout]    |           ------------- methods in this trait
[INFO] [stdout]  9 |     fn draw_text(&mut self, col: u16, row: u16, text: &str);
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 10 |     fn draw_box(&mut self, col: u16, row: u16, width: u16, height: u16, title: &str);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 11 |     fn draw_cursor(&mut self, col: u16, row: u16, glyph: &str);
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 12 |     fn present(&mut self);
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 13 |     fn clear(&mut self);
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 14 |     fn size(&self) -> (u16, u16);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 15 |     fn backend_name(&self) -> &str;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cols`, `rows`, and `buffer` are never read
[INFO] [stdout]   --> src/render/backend.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct AnsiBackend {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 19 |     cols: u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 20 |     rows: u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 21 |     buffer: String,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cols`, `rows`, and `font_atlas` are never read
[INFO] [stdout]   --> src/render/backend.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub struct EglBackend {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 87 |     cols: u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 88 |     rows: u16,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 89 |     font_atlas: crate::render::font_atlas::FontAtlas,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_font_atlas` is never used
[INFO] [stdout]    --> src/render/backend.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl EglBackend {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_font_atlas(mut self, atlas: crate::render::font_atlas::FontAtlas) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_IOCTL_MODE_PAGE_FLIP` is never used
[INFO] [stdout]    --> src/render/backend.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 | const DRM_IOCTL_MODE_PAGE_FLIP: u64 = 0xB0;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_IOCTL_MODE_CURSOR` is never used
[INFO] [stdout]    --> src/render/backend.rs:145:7
[INFO] [stdout]     |
[INFO] [stdout] 145 | const DRM_IOCTL_MODE_CURSOR: u64 = 0xA9;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_MODE_CURSOR_BO` is never used
[INFO] [stdout]    --> src/render/backend.rs:149:7
[INFO] [stdout]     |
[INFO] [stdout] 149 | const DRM_MODE_CURSOR_BO: u32 = 0x01;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_MODE_CURSOR_MOVE` is never used
[INFO] [stdout]    --> src/render/backend.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | const DRM_MODE_CURSOR_MOVE: u32 = 0x02;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrmModeCursor` is never constructed
[INFO] [stdout]    --> src/render/backend.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 231 | struct DrmModeCursor {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file`, `fb_handle`, `dumb_pitch`, `dumb_size`, and `crtc_id` are never read
[INFO] [stdout]    --> src/render/backend.rs:254:5
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct DrmDevice {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 254 |     file: File,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     fb_handle: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     dumb_pitch: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 262 |     dumb_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     crtc_id: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/render/backend.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl DrmDevice {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 444 |     pub fn clear_framebuffer(&mut self, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 455 |     pub fn draw_pixel(&mut self, x: u32, y: u32, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 470 |     pub fn draw_rect(&mut self, x: u32, y: u32, w: u32, h: u32, r: u8, g: u8, b: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn create_cursor_buffer(&self, size: u32) -> Result<(u32, u32, u64), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn map_cursor_buffer(&self, handle: u32, size: u64) -> Result<*mut u8, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 519 |     pub fn destroy_cursor_buffer(&self, handle: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 524 |     pub fn set_hw_cursor(&self, handle: u32, x: i32, y: i32, size: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 537 |     pub fn move_hw_cursor(&self, x: i32, y: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn hide_hw_cursor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub fn fd(&self) -> libc::c_int {
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `glyph_cache` is never read
[INFO] [stdout]    --> src/render/backend.rs:598:5
[INFO] [stdout]     |
[INFO] [stdout] 592 | pub struct DrmBackend {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 598 |     glyph_cache: crate::render::glyph::GlyphCache,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_device` and `blit_glyph` are never used
[INFO] [stdout]    --> src/render/backend.rs:615:12
[INFO] [stdout]     |
[INFO] [stdout] 601 | impl DrmBackend {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn with_device(mut self, device: DrmDevice) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 641 |     fn blit_glyph(&mut self, col: u16, row: u16, ch: char) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width`, `height`, and `pixels` are never read
[INFO] [stdout]  --> src/render/cursor_icon.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct CursorIcon {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 4 |     pub width: u32,
[INFO] [stdout]   |         ^^^^^
[INFO] [stdout] 5 |     pub height: u32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 6 |     pub pixels: Vec<u8>,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_pixel`, `pixel`, `as_bgra_slice`, and `data_len` are never used
[INFO] [stdout]   --> src/render/cursor_icon.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl CursorIcon {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn set_pixel(&mut self, x: u32, y: u32, r: u8, g: u8, b: u8, a: u8) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn pixel(&self, x: u32, y: u32) -> (u8, u8, u8, u8) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn as_bgra_slice(&self) -> &[u8] {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn data_len(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_cursor_icon` is never used
[INFO] [stdout]   --> src/render/cursor_icon.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn generate_cursor_icon(state: PointerState, size: u32) -> CursorIcon {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_arrow_cursor` is never used
[INFO] [stdout]   --> src/render/cursor_icon.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn draw_arrow_cursor(icon: &mut CursorIcon, size: u32, r: u8, g: u8, b: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_text_cursor` is never used
[INFO] [stdout]   --> src/render/cursor_icon.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn draw_text_cursor(icon: &mut CursorIcon, size: u32, r: u8, g: u8, b: u8) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_cursor_outline` is never used
[INFO] [stdout]   --> src/render/cursor_icon.rs:97:4
[INFO] [stdout]    |
[INFO] [stdout] 97 | fn draw_cursor_outline(icon: &mut CursorIcon, size: u32) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_line` is never used
[INFO] [stdout]    --> src/render/cursor_icon.rs:124:4
[INFO] [stdout]     |
[INFO] [stdout] 124 | fn draw_line(icon: &mut CursorIcon, x0: i32, y0: i32, x1: i32, y1: i32, r: u8, g: u8, b: u8, a: u8) {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fill_polygon` is never used
[INFO] [stdout]    --> src/render/cursor_icon.rs:152:4
[INFO] [stdout]     |
[INFO] [stdout] 152 | fn fill_polygon(icon: &mut CursorIcon, points: &[(i32, i32)], r: u8, g: u8, b: u8, a: u8) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_cursor_set` is never used
[INFO] [stdout]    --> src/render/cursor_icon.rs:185:8
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub fn generate_cursor_set(size: u32) -> std::collections::HashMap<PointerState, CursorIcon> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `baseline` is never read
[INFO] [stdout]   --> src/render/font_atlas.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FontAtlas {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     baseline: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_bit` and `to_rgba` are never used
[INFO] [stdout]   --> src/render/font_atlas.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl GlyphBitmap {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn get_bit(&self, x: u32, y: u32) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn to_rgba(&self, r: u8, g: u8, b: u8) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/render/font_atlas.rs:74:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl FontAtlas {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn load_psf2<P: AsRef<Path>>(path: P) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn load_bdf<P: AsRef<Path>>(path: P) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 441 |     pub fn get(&self, ch: char) -> Option<&GlyphBitmap> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 445 |     pub fn get_or_builtin(&mut self, ch: char) -> &GlyphBitmap {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 453 |     pub fn char_width(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub fn char_height(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 465 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `glyphs`, `char_width`, and `char_height` are never read
[INFO] [stdout]  --> src/render/glyph.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct GlyphCache {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 4 |     glyphs: HashMap<char, GlyphBitmap>,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 5 |     char_width: u32,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 6 |     char_height: u32,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width`, `height`, and `data` are never read
[INFO] [stdout]   --> src/render/glyph.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GlyphBitmap {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 11 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 12 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 13 |     pub data: Vec<u8>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GlyphBitmap` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_pixel`, and `pixel` are never used
[INFO] [stdout]   --> src/render/glyph.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl GlyphBitmap {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(width: u32, height: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn set_pixel(&mut self, x: u32, y: u32, r: u8, g: u8, b: u8, a: u8) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn pixel(&self, x: u32, y: u32) -> (u8, u8, u8, u8) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/render/glyph.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  45 | impl GlyphCache {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn get(&self, ch: char) -> Option<&GlyphBitmap> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn get_or_render(&mut self, ch: char) -> &GlyphBitmap {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     fn render_glyph(&self, ch: char) -> GlyphBitmap {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn char_width(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn char_height(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `move_to` is never used
[INFO] [stdout]   --> src/render/mouse/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CursorState {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn move_to(&mut self, col: u16, row: u16) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Hover` is never constructed
[INFO] [stdout]   --> src/render/mouse/mod.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum MouseAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 64 |     Hover { col: u16, row: u16 },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseAction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `cursor`, `cursor_mut`, `is_button_pressed`, `render_cursor_ansi`, `hide_cursor_ansi`, and `show_cursor_ansi` are never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl MouseAba {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn cursor(&self) -> &CursorState {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn cursor_mut(&mut self) -> &mut CursorState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn is_button_pressed(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn render_cursor_ansi(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn hide_cursor_ansi() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn show_cursor_ansi() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MouseDevice` is never constructed
[INFO] [stdout]    --> src/render/mouse/mod.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct MouseDevice {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `open`, `open_path`, `read_event`, and `read_events` are never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl MouseDevice {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 195 |     pub fn open() -> Result<Self, MouseError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn open_path(path: &str) -> Result<Self, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn read_event(&mut self) -> Result<Option<MouseEvent>, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn read_events(&mut self) -> Result<Vec<MouseEvent>, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MouseError` is never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:226:10
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub enum MouseError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Text` is never constructed
[INFO] [stdout]  --> src/render/mouse/mouse_pointer.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PointerState {
[INFO] [stdout]   |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 8 |     Text,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `PointerState` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `show` is never used
[INFO] [stdout]   --> src/render/mouse/mouse_pointer.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait MousePointer {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] 41 |     fn show(&mut self, col: u16, row: u16);
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `col` and `row` are never read
[INFO] [stdout]   --> src/render/mouse/mouse_pointer.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | struct SavedChar {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 66 |     col: u16,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 67 |     row: u16,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SavedChar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `col` and `row` are never used
[INFO] [stdout]   --> src/render/mouse/mouse_pointer.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl TextArrowPointer {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn col(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn row(&self) -> u16 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cursor_handle`, `cursor_size`, `char_width`, `char_height`, and `cursor_icons` are never read
[INFO] [stdout]    --> src/render/mouse/mouse_pointer.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub struct DrmOverlayPointer {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 186 |     cursor_handle: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 187 |     cursor_size: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 188 |     char_width: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 189 |     char_height: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 190 |     cursor_icons: Option<std::collections::HashMap<PointerState, crate::render::cursor_icon::CursorIcon>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/render/mouse/mouse_pointer.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 193 | impl DrmOverlayPointer {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn with_cursor_handle(mut self, handle: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn with_cursor_size(mut self, size: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn with_char_dimensions(mut self, width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn generate_icons(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn current_icon(&self) -> Option<&crate::render::cursor_icon::CursorIcon> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn pixel_position(&self) -> (i32, i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn cursor_handle(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn pixel_pos(&self) -> (i32, i32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `available` is never used
[INFO] [stdout]  --> src/render/mouse/mouse_receiver.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait MouseReceiver {
[INFO] [stdout]   |           ------------- method in this trait
[INFO] [stdout] 4 |     fn poll(&mut self) -> Vec<MouseEvent>;
[INFO] [stdout] 5 |     fn available(&self) -> bool;
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `open_path` is never used
[INFO] [stdout]   --> src/render/mouse/mouse_receiver.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl DevInputReceiver {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn open_path(path: &str) -> Result<Self, MouseReceiverError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `feed_sgr_sequence` is never used
[INFO] [stdout]    --> src/render/mouse/mouse_receiver.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | impl TerminalMouseReceiver {
[INFO] [stdout]     | -------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn feed_sgr_sequence(&mut self, seq: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_sgr_mouse` is never used
[INFO] [stdout]    --> src/render/mouse/mouse_receiver.rs:158:4
[INFO] [stdout]     |
[INFO] [stdout] 158 | fn parse_sgr_mouse(seq: &str) -> Option<MouseEvent> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PermissionDenied` is never constructed
[INFO] [stdout]    --> src/render/mouse/mouse_receiver.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub enum MouseReceiverError {
[INFO] [stdout]     |          ------------------ variant in this enum
[INFO] [stdout] 192 |     DeviceNotFound,
[INFO] [stdout] 193 |     PermissionDenied,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MouseReceiverError` 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 `PtyTty` is never constructed
[INFO] [stdout]    --> src/render/tty.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub struct PtyTty {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/render/tty.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 112 | impl PtyTty {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] 113 |     pub fn new(cols: u16, rows: u16) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `render_backend` is never read
[INFO] [stdout]    --> src/shell.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | struct BashShell {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 265 |     render_backend: Box<dyn render::backend::RenderBackend>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row`
[INFO] [stdout]    --> src/render/backend.rs:108:39
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn draw_text(&mut self, col: u16, row: u16, text: &str) {
[INFO] [stdout]     |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_row`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/font_atlas.rs:101:13
[INFO] [stdout]     |
[INFO] [stdout] 101 |         let mut offset = header_size;
[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/render/font_atlas.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |         let mut make = |ch: char, pixels: &[(u32, u32)]| -> (char, GlyphBitmap) {
[INFO] [stdout]     |             ----^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `debounce_ms` is never read
[INFO] [stdout]   --> src/code_precontext.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) struct PrecontextClient {
[INFO] [stdout]    |                   ---------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     debounce_ms: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PrecontextClient` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `debounce_ms` is never used
[INFO] [stdout]    --> src/code_precontext.rs:112:19
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl PrecontextClient {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub(crate) fn debounce_ms(&self) -> u64 {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugChannel` is never constructed
[INFO] [stdout]  --> src/debug/noop.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct DebugChannel;
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `send`, `try_recv`, and `recv_all` are never used
[INFO] [stdout]   --> src/debug/noop.rs:4:12
[INFO] [stdout]    |
[INFO] [stdout]  3 | impl DebugChannel {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout]  4 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |     pub fn send(&self, _event: DebugEvent) {}
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |
[INFO] [stdout] 10 |     pub fn try_recv(&self) -> Option<DebugEvent> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub fn recv_all(&self) -> Vec<DebugEvent> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DebugEvent` is never used
[INFO] [stdout]   --> src/debug/noop.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum DebugEvent {}
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugControl` is never constructed
[INFO] [stdout]   --> src/debug/noop.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct DebugControl;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_paused`, and `should_step` are never used
[INFO] [stdout]   --> src/debug/noop.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl DebugControl {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 31 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn is_paused(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn should_step(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DebugSnapshot` is never constructed
[INFO] [stdout]   --> src/debug/noop.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct DebugSnapshot;
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `to_json` and `to_json_pretty` are never used
[INFO] [stdout]   --> src/debug/noop.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl DebugSnapshot {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] 54 |     pub fn to_json(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn to_json_pretty(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_fn_entry` is never used
[INFO] [stdout]   --> src/debug/noop.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn probe_fn_entry(_name: &'static str) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_fn_exit` is never used
[INFO] [stdout]   --> src/debug/noop.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn probe_fn_exit(_name: &'static str) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_state` is never used
[INFO] [stdout]   --> src/debug/noop.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn probe_state(_target: &'static str, _field: &'static str, _detail: String) {}
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_custom` is never used
[INFO] [stdout]   --> src/debug/noop.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn probe_custom(_tag: &'static str, _message: String) {}
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUILTIN_PANEL_SUBCOMMANDS` is never used
[INFO] [stdout]  --> src/panel.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) const BUILTIN_PANEL_SUBCOMMANDS: &[&str] = &[
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Html` is never constructed
[INFO] [stdout]   --> src/panel.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub(crate) enum PanelContentType {
[INFO] [stdout]    |                 ---------------- variant in this enum
[INFO] [stdout] 28 |     Text,
[INFO] [stdout] 29 |     Html,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PanelContentType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Static` is never constructed
[INFO] [stdout]   --> src/panel.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub(crate) enum PanelSource {
[INFO] [stdout]    |                 ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 43 |     Static,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PanelSource` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `unregister`, `is_empty`, and `command_source` are never used
[INFO] [stdout]    --> src/panel.rs:81:19
[INFO] [stdout]     |
[INFO] [stdout]  65 | impl PanelManager {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub(crate) fn unregister(&mut self, id: &str) {
[INFO] [stdout]     |                   ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub(crate) fn is_empty(&self) -> bool {
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub(crate) fn command_source(&self, id: &str) -> Option<&str> {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `supports_mouse`, `supports_cursor`, and `is_drm` are never read
[INFO] [stdout]   --> src/render/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct RenderContext {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub supports_mouse: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     pub supports_cursor: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 35 |     pub is_drm: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_environment` is never used
[INFO] [stdout]   --> src/render/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl RenderContext {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 39 |     pub fn from_environment(environment: &BTreeMap<String, String>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `terminal_width` is never used
[INFO] [stdout]   --> src/render/mod.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn terminal_width(environment: &BTreeMap<String, String>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_font_atlas` is never used
[INFO] [stdout]    --> src/render/backend.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl EglBackend {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_font_atlas(mut self, atlas: crate::render::font_atlas::FontAtlas) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_IOCTL_MODE_PAGE_FLIP` is never used
[INFO] [stdout]    --> src/render/backend.rs:144:7
[INFO] [stdout]     |
[INFO] [stdout] 144 | const DRM_IOCTL_MODE_PAGE_FLIP: u64 = 0xB0;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_IOCTL_MODE_CURSOR` is never used
[INFO] [stdout]    --> src/render/backend.rs:145:7
[INFO] [stdout]     |
[INFO] [stdout] 145 | const DRM_IOCTL_MODE_CURSOR: u64 = 0xA9;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_MODE_CURSOR_BO` is never used
[INFO] [stdout]    --> src/render/backend.rs:149:7
[INFO] [stdout]     |
[INFO] [stdout] 149 | const DRM_MODE_CURSOR_BO: u32 = 0x01;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DRM_MODE_CURSOR_MOVE` is never used
[INFO] [stdout]    --> src/render/backend.rs:150:7
[INFO] [stdout]     |
[INFO] [stdout] 150 | const DRM_MODE_CURSOR_MOVE: u32 = 0x02;
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DrmModeCursor` is never constructed
[INFO] [stdout]    --> src/render/backend.rs:231:8
[INFO] [stdout]     |
[INFO] [stdout] 231 | struct DrmModeCursor {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `file`, `fb_handle`, `dumb_size`, and `crtc_id` are never read
[INFO] [stdout]    --> src/render/backend.rs:254:5
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct DrmDevice {
[INFO] [stdout]     |            --------- fields in this struct
[INFO] [stdout] 254 |     file: File,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     fb_handle: u32,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     dumb_size: u64,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     crtc_id: u32,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/render/backend.rs:478:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl DrmDevice {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 478 |     pub fn create_cursor_buffer(&self, size: u32) -> Result<(u32, u32, u64), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 494 |     pub fn map_cursor_buffer(&self, handle: u32, size: u64) -> Result<*mut u8, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 519 |     pub fn destroy_cursor_buffer(&self, handle: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 524 |     pub fn set_hw_cursor(&self, handle: u32, x: i32, y: i32, size: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 537 |     pub fn move_hw_cursor(&self, x: i32, y: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub fn hide_hw_cursor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 563 |     pub fn fd(&self) -> libc::c_int {
[INFO] [stdout]     |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_device` is never used
[INFO] [stdout]    --> src/render/backend.rs:615:12
[INFO] [stdout]     |
[INFO] [stdout] 601 | impl DrmBackend {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn with_device(mut self, device: DrmDevice) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `baseline` is never read
[INFO] [stdout]   --> src/render/font_atlas.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct FontAtlas {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 10 |     baseline: u32,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/render/glyph.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl GlyphCache {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn get(&self, ch: char) -> Option<&GlyphBitmap> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `move_to` is never used
[INFO] [stdout]   --> src/render/mouse/mod.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl CursorState {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn move_to(&mut self, col: u16, row: u16) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Hover` is never constructed
[INFO] [stdout]   --> src/render/mouse/mod.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum MouseAction {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 64 |     Hover { col: u16, row: u16 },
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MouseAction` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `cursor`, `is_button_pressed`, `hide_cursor_ansi`, and `show_cursor_ansi` are never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl MouseAba {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn cursor(&self) -> &CursorState {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn is_button_pressed(&self, button: MouseButton) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn hide_cursor_ansi() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn show_cursor_ansi() -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MouseDevice` is never constructed
[INFO] [stdout]    --> src/render/mouse/mod.rs:190:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct MouseDevice {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `open`, `open_path`, `read_event`, and `read_events` are never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 194 | impl MouseDevice {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 195 |     pub fn open() -> Result<Self, MouseError> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn open_path(path: &str) -> Result<Self, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn read_event(&mut self) -> Result<Option<MouseEvent>, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn read_events(&mut self) -> Result<Vec<MouseEvent>, MouseError> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MouseError` is never used
[INFO] [stdout]    --> src/render/mouse/mod.rs:226:10
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub enum MouseError {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `col` and `row` are never read
[INFO] [stdout]   --> src/render/mouse/mouse_pointer.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 65 | struct SavedChar {
[INFO] [stdout]    |        --------- fields in this struct
[INFO] [stdout] 66 |     col: u16,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 67 |     row: u16,
[INFO] [stdout]    |     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SavedChar` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cursor_handle`, `cursor_size`, `char_width`, `char_height`, and `cursor_icons` are never read
[INFO] [stdout]    --> src/render/mouse/mouse_pointer.rs:186:5
[INFO] [stdout]     |
[INFO] [stdout] 178 | pub struct DrmOverlayPointer {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 186 |     cursor_handle: Option<u32>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 187 |     cursor_size: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 188 |     char_width: u32,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 189 |     char_height: u32,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 190 |     cursor_icons: Option<std::collections::HashMap<PointerState, crate::render::cursor_icon::CursorIcon>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/render/mouse/mouse_pointer.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout] 193 | impl DrmOverlayPointer {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn with_cursor_handle(mut self, handle: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn with_cursor_size(mut self, size: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn with_char_dimensions(mut self, width: u32, height: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn generate_icons(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn current_icon(&self) -> Option<&crate::render::cursor_icon::CursorIcon> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     fn pixel_position(&self) -> (i32, i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn cursor_handle(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn pixel_pos(&self) -> (i32, i32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `available` is never used
[INFO] [stdout]  --> src/render/mouse/mouse_receiver.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait MouseReceiver {
[INFO] [stdout]   |           ------------- method in this trait
[INFO] [stdout] 4 |     fn poll(&mut self) -> Vec<MouseEvent>;
[INFO] [stdout] 5 |     fn available(&self) -> bool;
[INFO] [stdout]   |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `open_path` is never used
[INFO] [stdout]   --> src/render/mouse/mouse_receiver.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | impl DevInputReceiver {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn open_path(path: &str) -> Result<Self, MouseReceiverError> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PermissionDenied` is never constructed
[INFO] [stdout]    --> src/render/mouse/mouse_receiver.rs:193:5
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub enum MouseReceiverError {
[INFO] [stdout]     |          ------------------ variant in this enum
[INFO] [stdout] 192 |     DeviceNotFound,
[INFO] [stdout] 193 |     PermissionDenied,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MouseReceiverError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `render_backend` is never read
[INFO] [stdout]    --> src/shell.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | struct BashShell {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 265 |     render_backend: Box<dyn render::backend::RenderBackend>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized] target(s) in 37.22s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.28.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c", kill_on_drop: false }`
[INFO] [stdout] d60d35b0392b9c0bb1423102cf8f8dd0fd5de5defd688528e4ca61bb468cd37c
