[INFO] cloning repository https://github.com/esmondo/resikno-mac
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/esmondo/resikno-mac" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesmondo%2Fresikno-mac", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesmondo%2Fresikno-mac'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 47e6073d442d10f8f756d7f286d0efd9d522f6a0
[INFO] checking esmondo/resikno-mac against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fesmondo%2Fresikno-mac" "/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/esmondo/resikno-mac
[INFO] finished tweaking git repo https://github.com/esmondo/resikno-mac
[INFO] tweaked toml for git repo https://github.com/esmondo/resikno-mac written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/esmondo/resikno-mac 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/esmondo/resikno-mac 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]  Downloading crates ...
[INFO] [stderr]   Downloaded stability v0.1.1
[INFO] [stderr]   Downloaded rustyline v12.0.0
[INFO] [stderr]   Downloaded ratatui v0.25.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] 394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9
[INFO] running `Command { std: "docker" "start" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9", 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" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9", 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" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]    Compiling zmij v1.0.16
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking bytecount v0.6.9
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking clap_lex v0.7.7
[INFO] [stderr]     Checking papergrid v0.11.0
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking clap_builder v4.5.54
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking float-cmp v0.10.0
[INFO] [stderr]     Checking socket2 v0.6.2
[INFO] [stderr]     Checking fd-lock v3.0.13
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]    Compiling assert_cmd v2.1.2
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking rustyline v12.0.0
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking bstr v1.12.1
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking directories v5.0.1
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking fs_extra v1.3.0
[INFO] [stderr]     Checking shlex v1.3.0
[INFO] [stderr]     Checking bytesize v1.3.3
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking tempfile v3.24.0
[INFO] [stderr]    Compiling tabled_derive v0.7.0
[INFO] [stderr]    Compiling stability v0.1.1
[INFO] [stderr]     Checking tabled v0.15.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling strum_macros v0.25.3
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]     Checking tokio v1.49.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking ratatui v0.25.0
[INFO] [stderr]     Checking clap v4.5.54
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking resikno-mac v0.2.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::scanner::SafetyLevel`
[INFO] [stdout]    --> src/ui/tree.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 |     use crate::scanner::SafetyLevel;
[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: `super::*`
[INFO] [stdout]   --> src/scanner/cache.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 |     use super::*;
[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: `super::*`
[INFO] [stdout]    --> src/scanner/large_files.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scanner::SafetyLevel`
[INFO] [stdout]    --> src/ui/tree.rs:423:9
[INFO] [stdout]     |
[INFO] [stdout] 423 |     use crate::scanner::SafetyLevel;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/cli/commands.rs:254:38
[INFO] [stdout]     |
[INFO] [stdout] 254 | ...                   for (i, entry) in manifest.items.iter().take(5).enumerate() {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/shell/mod.rs:529:34
[INFO] [stdout]     |
[INFO] [stdout] 529 | ...                   for (i, entry) in manifest.items.iter().take(5).enumerate() {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/cli/commands.rs:254:38
[INFO] [stdout]     |
[INFO] [stdout] 254 | ...                   for (i, entry) in manifest.items.iter().take(5).enumerate() {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> src/ui/colors.rs:197:18
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn separator(color: Color) -> String {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `force` is never read
[INFO] [stdout]   --> src/cleaner/mod.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct CleanupOptions {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub force: bool,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CleanupOptions` has derived impls for the traits `Clone` and `Debug`, but these are 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: function `cleanup` is never used
[INFO] [stdout]    --> src/cleaner/mod.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn cleanup(paths: &[PathBuf], options: &CleanupOptions) -> Result<CleanupResult> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `matches_safe_pattern` is never used
[INFO] [stdout]    --> src/cleaner/delete.rs:191:8
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub fn matches_safe_pattern(path: &Path) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `config_dir` is never used
[INFO] [stdout]   --> src/platform/mod.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub trait PlatformPaths {
[INFO] [stdout]    |           ------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn config_dir(&self) -> PathBuf;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `home_dir` is never used
[INFO] [stdout]   --> src/platform/mod.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn home_dir() -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> src/scanner/mod.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl SafetyLevel {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn label(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `human_size` is never used
[INFO] [stdout]    --> src/scanner/mod.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl ScannedItem {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 201 |     pub fn human_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `human_total_size` and `human_recoverable` are never used
[INFO] [stdout]    --> src/scanner/mod.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl ScanResults {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 215 |     pub fn human_total_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn human_recoverable(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash` is never read
[INFO] [stdout]   --> src/scanner/duplicates.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct DuplicateGroup {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 42 |     pub hash: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DuplicateGroup` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_old_files` is never used
[INFO] [stdout]   --> src/scanner/large_files.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn find_old_files(paths: &[PathBuf], days_old: u32) -> Result<Vec<LargeFile>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `human_size` and `days_since_access` are never used
[INFO] [stdout]    --> src/scanner/large_files.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl LargeFile {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 105 |     pub fn human_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn days_since_access(&self) -> Option<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Shell` is never constructed
[INFO] [stdout]   --> src/shell/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Shell {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/shell/mod.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Shell {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  26 |     /// Create a new shell instance
[INFO] [stdout]  27 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn run(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn execute_line(&mut self, line: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn print_help(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn cmd_scan(&mut self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     fn cmd_review(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn cmd_status(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn cmd_clean(&mut self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     fn cmd_analyze(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     fn cmd_restore(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     fn cmd_update(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 662 |     fn cmd_version(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 745 |     fn parse_min_size(&self, args: &[String]) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 754 |     fn parse_max_size(&self, args: &[String]) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 763 |     fn display_scan_summary(&self, results: &ScanResults) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_latest_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:796:4
[INFO] [stdout]     |
[INFO] [stdout] 796 | fn fetch_latest_version() -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `version_compare` is never used
[INFO] [stdout]    --> src/shell/mod.rs:834:4
[INFO] [stdout]     |
[INFO] [stdout] 834 | fn version_compare(v1: &str, v2: &str) -> std::cmp::Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:856:4
[INFO] [stdout]     |
[INFO] [stdout] 856 | fn is_valid_version(version: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bump_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:865:4
[INFO] [stdout]     |
[INFO] [stdout] 865 | fn bump_version(current: &str, part: &str) -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cargo_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:886:4
[INFO] [stdout]     |
[INFO] [stdout] 886 | fn set_cargo_version(new_version: &str) -> Result<(), String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display` is never used
[INFO] [stdout]  --> src/shell/welcome.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn display() {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_compact` is never used
[INFO] [stdout]   --> src/shell/welcome.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn display_compact() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expanded` and `selected` are never read
[INFO] [stdout]   --> src/ui/mod.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct CategoryView {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub expanded: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 94 |     pub selected: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_paths` is never used
[INFO] [stdout]    --> src/ui/mod.rs:282:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn get_selected_paths(&self) -> Vec<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cat_idx` and `item_offset` are never read
[INFO] [stdout]    --> src/ui/mod.rs:373:12
[INFO] [stdout]     |
[INFO] [stdout] 373 |     Item { cat_idx: usize, item_idx: usize, item_offset: usize },
[INFO] [stdout]     |     ----   ^^^^^^^                          ^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RowInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cat_idx`, `item_idx`, and `child_idx` are never read
[INFO] [stdout]    --> src/ui/mod.rs:374:13
[INFO] [stdout]     |
[INFO] [stdout] 374 |     Child { cat_idx: usize, item_idx: usize, child_idx: usize, path: PathBuf },
[INFO] [stdout]     |     -----   ^^^^^^^         ^^^^^^^^         ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RowInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ui/colors.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct ColorScheme {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub bg_hover: Color,        // Hover state
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub accent_blue: Color,     // Secondary accent
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 21 |     pub accent_green: Color,    // Success/positive
[INFO] [stdout] 22 |     pub accent_yellow: Color,   // Warning/caution
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub accent_orange: Color,   // Attention
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub accent_red: Color,      // Error/danger
[INFO] [stdout] 25 |     pub accent_purple: Color,   // Special/interactive
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub safe: Style,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 29 |     pub review: Style,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 30 |     pub careful: Style,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 31 |     pub protected: Style,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub hovered: Style,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub active: Style,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 38 |     pub inactive: Style,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub border_active: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 42 |     pub border_inactive: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |     pub border_subtle: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ui/colors.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl ColorScheme {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 106 |     /// Get style based on file size
[INFO] [stdout] 107 |     pub fn for_size(&self, bytes: u64) -> Style {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn for_percentage(&self, percent: f64) -> Color {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn tool_block_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn header_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn user_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn muted_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn success_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn error_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `progress_bar` is never used
[INFO] [stdout]    --> src/ui/colors.rs:180:8
[INFO] [stdout]     |
[INFO] [stdout] 180 | pub fn progress_bar(percent: f64, width: usize, color: Color) -> Vec<Span<'static>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `separator` is never used
[INFO] [stdout]    --> src/ui/colors.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn separator(color: Color) -> String {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `horizontal_bar` is never used
[INFO] [stdout]  --> src/ui/charts.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn horizontal_bar(label: &str, size: u64, max_size: u64, width: usize) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertical_bars` is never used
[INFO] [stdout]   --> src/ui/charts.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn vertical_bars(data: &[(String, u64)], height: usize) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pie_chart_legend` is never used
[INFO] [stdout]   --> src/ui/charts.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn pie_chart_legend(data: &[(String, u64)]) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `treemap` is never used
[INFO] [stdout]   --> src/ui/charts.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn treemap(data: &[(String, u64)], width: usize, height: usize) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `truncate` is never used
[INFO] [stdout]    --> src/ui/charts.rs:144:4
[INFO] [stdout]     |
[INFO] [stdout] 144 | fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/tree.rs:837:61
[INFO] [stdout]     |
[INFO] [stdout] 837 | fn safety_badge(level: crate::scanner::SafetyLevel, colors: &ColorScheme) -> Span {
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                                             |
[INFO] [stdout]     |                                                             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 837 | fn safety_badge(level: crate::scanner::SafetyLevel, colors: &ColorScheme) -> Span<'_> {
[INFO] [stdout]     |                                                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/shell/mod.rs:529:34
[INFO] [stdout]     |
[INFO] [stdout] 529 | ...                   for (i, entry) in manifest.items.iter().take(5).enumerate() {
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> src/ui/colors.rs:197:18
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn separator(color: Color) -> String {
[INFO] [stdout]     |                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cleanup` is never used
[INFO] [stdout]    --> src/cleaner/mod.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn cleanup(paths: &[PathBuf], options: &CleanupOptions) -> Result<CleanupResult> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `config_dir` is never used
[INFO] [stdout]   --> src/platform/mod.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub trait PlatformPaths {
[INFO] [stdout]    |           ------------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn config_dir(&self) -> PathBuf;
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `home_dir` is never used
[INFO] [stdout]   --> src/platform/mod.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn home_dir() -> Option<PathBuf> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `label` is never used
[INFO] [stdout]    --> src/scanner/mod.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | impl SafetyLevel {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn label(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `human_size` is never used
[INFO] [stdout]    --> src/scanner/mod.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 200 | impl ScannedItem {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 201 |     pub fn human_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `human_total_size` and `human_recoverable` are never used
[INFO] [stdout]    --> src/scanner/mod.rs:215:12
[INFO] [stdout]     |
[INFO] [stdout] 214 | impl ScanResults {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 215 |     pub fn human_total_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn human_recoverable(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash` is never read
[INFO] [stdout]   --> src/scanner/duplicates.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct DuplicateGroup {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 42 |     pub hash: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DuplicateGroup` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_old_files` is never used
[INFO] [stdout]   --> src/scanner/large_files.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn find_old_files(paths: &[PathBuf], days_old: u32) -> Result<Vec<LargeFile>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `human_size` and `days_since_access` are never used
[INFO] [stdout]    --> src/scanner/large_files.rs:105:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl LargeFile {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] 105 |     pub fn human_size(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn days_since_access(&self) -> Option<i64> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Shell` is never constructed
[INFO] [stdout]   --> src/shell/mod.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Shell {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/shell/mod.rs:27:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Shell {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  26 |     /// Create a new shell instance
[INFO] [stdout]  27 |     pub fn new() -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn run(&mut self) -> Result<()> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     fn execute_line(&mut self, line: &str) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn print_help(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 203 |     fn cmd_scan(&mut self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     fn cmd_review(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     fn cmd_status(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     fn cmd_clean(&mut self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 396 |     fn cmd_analyze(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 482 |     fn cmd_restore(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     fn cmd_update(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 662 |     fn cmd_version(&self, args: &[String]) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 745 |     fn parse_min_size(&self, args: &[String]) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 754 |     fn parse_max_size(&self, args: &[String]) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 763 |     fn display_scan_summary(&self, results: &ScanResults) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fetch_latest_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:796:4
[INFO] [stdout]     |
[INFO] [stdout] 796 | fn fetch_latest_version() -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `version_compare` is never used
[INFO] [stdout]    --> src/shell/mod.rs:834:4
[INFO] [stdout]     |
[INFO] [stdout] 834 | fn version_compare(v1: &str, v2: &str) -> std::cmp::Ordering {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:856:4
[INFO] [stdout]     |
[INFO] [stdout] 856 | fn is_valid_version(version: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bump_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:865:4
[INFO] [stdout]     |
[INFO] [stdout] 865 | fn bump_version(current: &str, part: &str) -> Result<String, String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cargo_version` is never used
[INFO] [stdout]    --> src/shell/mod.rs:886:4
[INFO] [stdout]     |
[INFO] [stdout] 886 | fn set_cargo_version(new_version: &str) -> Result<(), String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display` is never used
[INFO] [stdout]  --> src/shell/welcome.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn display() {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_compact` is never used
[INFO] [stdout]   --> src/shell/welcome.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn display_compact() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `expanded` and `selected` are never read
[INFO] [stdout]   --> src/ui/mod.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct CategoryView {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub expanded: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 94 |     pub selected: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_selected_paths` is never used
[INFO] [stdout]    --> src/ui/mod.rs:282:12
[INFO] [stdout]     |
[INFO] [stdout]  97 | impl App {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 282 |     pub fn get_selected_paths(&self) -> Vec<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cat_idx` and `item_offset` are never read
[INFO] [stdout]    --> src/ui/mod.rs:373:12
[INFO] [stdout]     |
[INFO] [stdout] 373 |     Item { cat_idx: usize, item_idx: usize, item_offset: usize },
[INFO] [stdout]     |     ----   ^^^^^^^                          ^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RowInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cat_idx`, `item_idx`, and `child_idx` are never read
[INFO] [stdout]    --> src/ui/mod.rs:374:13
[INFO] [stdout]     |
[INFO] [stdout] 374 |     Child { cat_idx: usize, item_idx: usize, child_idx: usize, path: PathBuf },
[INFO] [stdout]     |     -----   ^^^^^^^         ^^^^^^^^         ^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     fields in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RowInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ui/colors.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct ColorScheme {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub bg_hover: Color,        // Hover state
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub accent_blue: Color,     // Secondary accent
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub accent_purple: Color,   // Special/interactive
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub safe: Style,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 29 |     pub review: Style,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 30 |     pub careful: Style,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 31 |     pub protected: Style,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub hovered: Style,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub active: Style,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 38 |     pub inactive: Style,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub border_active: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 42 |     pub border_inactive: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |     pub border_subtle: Color,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ui/colors.rs:128:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl ColorScheme {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 128 |     pub fn for_percentage(&self, percent: f64) -> Color {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn tool_block_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn header_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn user_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn muted_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn success_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn error_style(&self) -> Style {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `separator` is never used
[INFO] [stdout]    --> src/ui/colors.rs:197:8
[INFO] [stdout]     |
[INFO] [stdout] 197 | pub fn separator(color: Color) -> String {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vertical_bars` is never used
[INFO] [stdout]   --> src/ui/charts.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn vertical_bars(data: &[(String, u64)], height: usize) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pie_chart_legend` is never used
[INFO] [stdout]   --> src/ui/charts.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn pie_chart_legend(data: &[(String, u64)]) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `treemap` is never used
[INFO] [stdout]   --> src/ui/charts.rs:91:8
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn treemap(data: &[(String, u64)], width: usize, height: usize) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/tree.rs:837:61
[INFO] [stdout]     |
[INFO] [stdout] 837 | fn safety_badge(level: crate::scanner::SafetyLevel, colors: &ColorScheme) -> Span {
[INFO] [stdout]     |                                                             ^^^^^^^^^^^^     ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                                             |
[INFO] [stdout]     |                                                             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 837 | fn safety_badge(level: crate::scanner::SafetyLevel, colors: &ColorScheme) -> Span<'_> {
[INFO] [stdout]     |                                                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 58.63s
[INFO] running `Command { std: "docker" "inspect" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9", kill_on_drop: false }`
[INFO] [stdout] 394a4ffbfe7c8ff49406a0ab920cfdb685a3843565d45047c0f17dd0721c60a9
