[INFO] cloning repository https://github.com/Kunaixfox/digipet
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Kunaixfox/digipet" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKunaixfox%2Fdigipet", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKunaixfox%2Fdigipet'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e08491a9a4353f353298b6e10ea1bcc6a85e2b62
[INFO] checking Kunaixfox/digipet against try#5f6abd89da253a562ad85d235b9342a3ac336c28 for pr-156114
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKunaixfox%2Fdigipet" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Kunaixfox/digipet
[INFO] finished tweaking git repo https://github.com/Kunaixfox/digipet
[INFO] tweaked toml for git repo https://github.com/Kunaixfox/digipet written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Kunaixfox/digipet on toolchain 5f6abd89da253a562ad85d235b9342a3ac336c28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5f6abd89da253a562ad85d235b9342a3ac336c28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Kunaixfox/digipet 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" "+5f6abd89da253a562ad85d235b9342a3ac336c28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded syn v2.0.116
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+5f6abd89da253a562ad85d235b9342a3ac336c28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 60e44f38d53c6bc3b7c51bc887454a4ee7a711d47185aac6baae60c48771de54
[INFO] running `Command { std: "docker" "start" "-a" "60e44f38d53c6bc3b7c51bc887454a4ee7a711d47185aac6baae60c48771de54", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "60e44f38d53c6bc3b7c51bc887454a4ee7a711d47185aac6baae60c48771de54", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "60e44f38d53c6bc3b7c51bc887454a4ee7a711d47185aac6baae60c48771de54", kill_on_drop: false }`
[INFO] [stdout] 60e44f38d53c6bc3b7c51bc887454a4ee7a711d47185aac6baae60c48771de54
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+5f6abd89da253a562ad85d235b9342a3ac336c28" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 64112683d6b95ddfd5c35fb499c26ffe66189b0cdcc47e468fe4d783068cfc3e
[INFO] running `Command { std: "docker" "start" "-a" "64112683d6b95ddfd5c35fb499c26ffe66189b0cdcc47e468fe4d783068cfc3e", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling rustversion v1.0.22
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling zmij v1.0.21
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]    Compiling getrandom v0.4.1
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]     Checking memchr v2.8.0
[INFO] [stderr]     Checking iana-time-zone v0.1.65
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]     Checking compact_str v0.7.1
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]     Checking errno v0.3.14
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking signal-hook-registry v1.4.8
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.5
[INFO] [stderr]     Checking crossterm v0.27.0
[INFO] [stderr]     Checking tempfile v3.25.0
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling stability v0.2.1
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.26.3
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking chrono v0.4.43
[INFO] [stderr]     Checking digipet v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:291:29
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line> {
[INFO] [stdout]     |                             ^^^^^ the lifetime is elided here                                        ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line<'_>> {
[INFO] [stdout]     |                                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:350:28
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_stats`
[INFO] [stdout]    --> tests/task64_action_selection_execution_qa.rs:215:13
[INFO] [stdout]     |
[INFO] [stdout] 215 |         let original_stats = (pet.health, pet.hunger, pet.happiness, pet.energy, pet.cleanliness);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_stats`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `final_stats`
[INFO] [stdout]    --> tests/task64_action_selection_execution_qa.rs:265:13
[INFO] [stdout]     |
[INFO] [stdout] 265 |         let final_stats = (pet.health, pet.hunger, pet.happiness, pet.energy, pet.cleanliness);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_final_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_area` is never used
[INFO] [stdout]   --> tests/task27_enhanced_stats_input_handling_qa.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn create_test_area() -> Rect {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task11_main_loop_evolution_integration_e2e.rs:165:9
[INFO] [stdout]     |
[INFO] [stdout] 165 |     let mut pet = Pet::new();
[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]   --> tests/task38_cooldown_display_wiring_qa.rs:72:9
[INFO] [stdout]    |
[INFO] [stdout] 72 |     let mut backend = TestBackend::new(100, 50);
[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: unused variable: `area`
[INFO] [stdout]   --> tests/task38_cooldown_display_wiring_qa.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]   --> tests/task38_cooldown_display_wiring_qa.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 65 |     let pet = create_test_pet();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/task38_cooldown_display_wiring_qa.rs:97:9
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]    |         ----^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `actions_area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |         let actions_area = Rect::new(0, 0, 100, 20);
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_actions_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]   --> tests/task38_cooldown_display_wiring_qa.rs:92:9
[INFO] [stdout]    |
[INFO] [stdout] 92 |     let pet = create_test_pet();
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `comprehensive_stats`
[INFO] [stdout]    --> tests/task2_global_error_handler_integration_qa.rs:420:9
[INFO] [stdout]     |
[INFO] [stdout] 420 |     let comprehensive_stats = error_handler.get_stats();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_comprehensive_stats`
[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]    --> tests/task38_cooldown_display_wiring_qa.rs:123:9
[INFO] [stdout]     |
[INFO] [stdout] 123 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:143:9
[INFO] [stdout]     |
[INFO] [stdout] 143 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `comprehensive_stats`
[INFO] [stdout]    --> tests/task2_global_error_handler_integration_qa.rs:521:9
[INFO] [stdout]     |
[INFO] [stdout] 521 |     let comprehensive_stats = comprehensive_handler.get_stats();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_comprehensive_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:180:13
[INFO] [stdout]     |
[INFO] [stdout] 180 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task70_evolution_stage_sprite_switching_qa.rs:152:13
[INFO] [stdout]     |
[INFO] [stdout] 152 |         let area = Rect::new(0, 0, 40, 20);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[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]    --> tests/task38_cooldown_display_wiring_qa.rs:203:9
[INFO] [stdout]     |
[INFO] [stdout] 203 |     let mut backend = TestBackend::new(120, 60);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `full_area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:208:13
[INFO] [stdout]     |
[INFO] [stdout] 208 |         let full_area = Rect::new(0, 0, 120, 60);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_full_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:235:13
[INFO] [stdout]     |
[INFO] [stdout] 235 |         let mut backend = TestBackend::new(width, height);
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:239:17
[INFO] [stdout]     |
[INFO] [stdout] 239 |             let area = Rect::new(0, 0, width, height);
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:223:9
[INFO] [stdout]     |
[INFO] [stdout] 223 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:262:9
[INFO] [stdout]     |
[INFO] [stdout] 262 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:280:13
[INFO] [stdout]     |
[INFO] [stdout] 280 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:267:13
[INFO] [stdout]     |
[INFO] [stdout] 267 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:256:9
[INFO] [stdout]     |
[INFO] [stdout] 256 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:297:9
[INFO] [stdout]     |
[INFO] [stdout] 297 |     let mut backend = TestBackend::new(100, 50);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:312:13
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let area = Rect::new(0, 0, 100, 50);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         let mut display_manager = DisplayManager::new();
[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: unused variable: `pet`
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:227:9
[INFO] [stdout]     |
[INFO] [stdout] 227 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_check`
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let first_check = display_manager.needs_update(&save_data.pet);
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_check`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `second_check`
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |     let second_check = display_manager.needs_update(&save_data.pet);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_second_check`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:267:13
[INFO] [stdout]     |
[INFO] [stdout] 267 |         let mut display_manager = DisplayManager::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needs_update`
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let needs_update = display_manager.needs_update(&save_data.pet);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_needs_update`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_mode`
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:278:9
[INFO] [stdout]     |
[INFO] [stdout] 278 |     let stats_mode = display_manager.get_stats_display_mode();
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:333:13
[INFO] [stdout]     |
[INFO] [stdout] 333 |         let mut display_manager = DisplayManager::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:183:17
[INFO] [stdout]     |
[INFO] [stdout] 183 |         assert!(current_layout.pet_display.width >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:185:17
[INFO] [stdout]     |
[INFO] [stdout] 185 |         assert!(current_layout.stats_area.height >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:640:17
[INFO] [stdout]     |
[INFO] [stdout] 640 |         assert!(layout.pet_display.width >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:642:17
[INFO] [stdout]     |
[INFO] [stdout] 642 |         assert!(layout.stats_area.height >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:644:17
[INFO] [stdout]     |
[INFO] [stdout] 644 |         assert!(layout.actions_area.width >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/layout_system_integration_qa.rs:646:17
[INFO] [stdout]     |
[INFO] [stdout] 646 |         assert!(layout.messages_area.height >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:439:13
[INFO] [stdout]     |
[INFO] [stdout] 439 |         let mut display_manager = DisplayManager::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task38_cooldown_display_wiring_qa.rs:471:13
[INFO] [stdout]     |
[INFO] [stdout] 471 |     assert!(stats.total_renders >= 0, "DisplayManager should track rendering stats");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:105:13
[INFO] [stdout]     |
[INFO] [stdout] 105 |     assert!(stats.total_renders >= 0, "Should track render count");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:214:13
[INFO] [stdout]     |
[INFO] [stdout] 214 |     assert!(stats.total_renders >= 0, "Should maintain valid render count");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:282:13
[INFO] [stdout]     |
[INFO] [stdout] 282 |     assert!(display_manager.get_stats().total_renders >= 0,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task37_conditional_rendering_integration_qa.rs:393:13
[INFO] [stdout]     |
[INFO] [stdout] 393 |     assert!(final_stats.total_renders >= 0, "Should maintain valid stats throughout testing");
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:284:17
[INFO] [stdout]     |
[INFO] [stdout] 284 |         assert!(stat_tracker.history_size() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:289:35
[INFO] [stdout]     |
[INFO] [stdout] 289 |         let tracking_api_exists = stat_tracker.history_size() >= 0; // API is functional
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task28_stat_predictions_integration_qa.rs:455:17
[INFO] [stdout]     |
[INFO] [stdout] 455 |         assert!(stat_tracker.history_size() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task1_action_menu_integration_qa.rs:268:9
[INFO] [stdout]     |
[INFO] [stdout] 268 |     let save_data = SaveData::new(pet.clone(), pet.calculate_state());
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needs_update`
[INFO] [stdout]    --> tests/task1_action_menu_integration_qa.rs:284:9
[INFO] [stdout]     |
[INFO] [stdout] 284 |     let needs_update = display_manager.needs_update(&pet);
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_needs_update`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task1_action_menu_integration_qa.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 343 |     let save_data = SaveData::new(pet.clone(), pet.calculate_state());
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `display_stats`
[INFO] [stdout]    --> tests/task1_action_menu_integration_qa.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let display_stats = display_manager.get_stats();
[INFO] [stdout]     |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_display_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/task35_evolution_popup_triggering_qa.rs:75:9
[INFO] [stdout]    |
[INFO] [stdout] 75 |     let mut pet = create_pet_ready_for_evolution(EvolutionStage::Baby);
[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: unused variable: `initial_points`
[INFO] [stdout]   --> tests/task35_evolution_popup_triggering_qa.rs:81:9
[INFO] [stdout]    |
[INFO] [stdout] 81 |     let initial_points = save_data.pet.evolution_points;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_points`
[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]    --> tests/task35_evolution_popup_triggering_qa.rs:137:9
[INFO] [stdout]     |
[INFO] [stdout] 137 |     let mut pet = create_pet_ready_for_evolution(EvolutionStage::Baby);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task35_evolution_popup_triggering_qa.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let mut pet = create_pet_ready_for_evolution(EvolutionStage::Child);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `last_pet_update` is never read
[INFO] [stdout]    --> tests/task35_evolution_popup_triggering_qa.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         last_pet_update = now;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task35_evolution_popup_triggering_qa.rs:338:9
[INFO] [stdout]     |
[INFO] [stdout] 338 |     let mut pet = create_pet_ready_for_evolution(EvolutionStage::Teen);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task35_evolution_popup_triggering_qa.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 |     let mut pet = create_pet_ready_for_evolution(EvolutionStage::Adult);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_pet` is never used
[INFO] [stdout]   --> tests/task35_evolution_popup_triggering_qa.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn create_test_pet() -> Pet {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task69_state_dependent_sprite_display_qa.rs:273:9
[INFO] [stdout]     |
[INFO] [stdout] 273 |     let area = Rect::new(0, 0, 30, 15);
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> tests/task69_state_dependent_sprite_display_qa.rs:361:9
[INFO] [stdout]     |
[INFO] [stdout] 361 |     let area = Rect::new(0, 0, 30, 15);
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::style::Color`
[INFO] [stdout]  --> tests/task76_action_cooldown_visual_indicators_qa.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use ratatui::style::Color;
[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 variable: `save_data`
[INFO] [stdout]   --> tests/task15_responsive_layout_modes_integration_qa.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let save_data = create_test_save_data(pet);
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]   --> tests/task15_responsive_layout_modes_integration_qa.rs:38:13
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let cooldowns = ActionCooldowns::default();
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let save_data = create_test_save_data(pet);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `perf_stats`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |         let perf_stats = display_manager.get_performance_stats();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_perf_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `activity_level`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:201:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |         let activity_level = display_manager.get_activity_level();
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_activity_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:213:13
[INFO] [stdout]     |
[INFO] [stdout] 213 |         let save_data = create_test_save_data(pet);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:152:21
[INFO] [stdout]     |
[INFO] [stdout] 152 |             assert!(stats.total_renders >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:213:17
[INFO] [stdout]     |
[INFO] [stdout] 213 |         assert!(stat_tracker.history_size() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:217:17
[INFO] [stdout]     |
[INFO] [stdout] 217 |         assert!(stat_tracker.history_size() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:300:29
[INFO] [stdout]     |
[INFO] [stdout] 300 |                     assert!(stats.total_renders >= 0,
[INFO] [stdout]     |                             ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:365:17
[INFO] [stdout]     |
[INFO] [stdout] 365 |         assert!(areas_for_improvement.len() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task29_care_quality_assessment_integration_qa.rs:382:17
[INFO] [stdout]     |
[INFO] [stdout] 382 |         assert!(stat_tracker.history_size() >= 0,
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:483:13
[INFO] [stdout]     |
[INFO] [stdout] 483 |         let save_data = create_test_save_data(pet);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:484:13
[INFO] [stdout]     |
[INFO] [stdout] 484 |         let cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> tests/task15_responsive_layout_modes_integration_qa.rs:73:42
[INFO] [stdout]    |
[INFO] [stdout] 73 |             assert!(layout.is_valid() || layout.pet_display.width >= 0,
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:101:21
[INFO] [stdout]     |
[INFO] [stdout] 101 |             assert!(layout_with_config.pet_display.width >= 0 && layout_with_config.pet_display.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:101:66
[INFO] [stdout]     |
[INFO] [stdout] 101 |             assert!(layout_with_config.pet_display.width >= 0 && layout_with_config.pet_display.height >= 0,
[INFO] [stdout]     |                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/task15_responsive_layout_modes_integration_qa.rs:287:54
[INFO] [stdout]     |
[INFO] [stdout] 287 |                 assert!(current_layout.is_valid() || current_layout.pet_display.width >= 0,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_mock_cooldown_info` is never used
[INFO] [stdout]   --> tests/task76_action_cooldown_visual_indicators_qa.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn create_mock_cooldown_info(action: PlayerAction, is_on_cooldown: bool, remaining: Option<i64>, total: i64) -> CooldownInfo {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task86_rendering_performance_optimization_qa.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |     let mut manager = DisplayManager::new();
[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 `test_pet` is assigned to, but never used
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |     let mut test_pet = pet;
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_test_pet` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_pet` is never read
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:291:5
[INFO] [stdout]     |
[INFO] [stdout] 291 |     test_pet.happiness = 75;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_pet` is never read
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:292:5
[INFO] [stdout]     |
[INFO] [stdout] 292 |     test_pet.health = 50;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_pet` is never read
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:293:5
[INFO] [stdout]     |
[INFO] [stdout] 293 |     test_pet.energy = 25;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_pet` is never read
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:294:5
[INFO] [stdout]     |
[INFO] [stdout] 294 |     test_pet.hunger = 60;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_pet` is never read
[INFO] [stdout]    --> tests/task16_component_area_management_integration_qa.rs:295:5
[INFO] [stdout]     |
[INFO] [stdout] 295 |     test_pet.cleanliness = 90;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> tests/task14_display_manager_layout_fields_qa.rs:240:13
[INFO] [stdout]     |
[INFO] [stdout] 240 |         let save_data = create_test_save_data();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `has_trends`
[INFO] [stdout]    --> tests/task25_simple_integration_qa.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let has_trends = display_manager.has_trend_data();
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_has_trends`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_pet` is never used
[INFO] [stdout]   --> tests/task25_simple_integration_qa.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn create_test_pet() -> Pet {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> tests/task25_simple_integration_qa.rs:70:13
[INFO] [stdout]    |
[INFO] [stdout] 70 |     assert!(stat_tracker.history_size() >= 0, "Stat tracker should have valid history size");
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/task36_evolution_checking_main_loop_qa.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Baby);
[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]    --> tests/task36_evolution_checking_main_loop_qa.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Child);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:159:9
[INFO] [stdout]     |
[INFO] [stdout] 159 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Teen);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_panel`
[INFO] [stdout]    --> tests/task26_stats_display_mode_integration_qa.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |     let stats_panel = StatsPanel::new(area);
[INFO] [stdout]     |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_panel`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pet`
[INFO] [stdout]    --> tests/task26_stats_display_mode_integration_qa.rs:307:9
[INFO] [stdout]     |
[INFO] [stdout] 307 |     let pet = create_test_pet();
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_pet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:197:9
[INFO] [stdout]     |
[INFO] [stdout] 197 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Adult);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:205:9
[INFO] [stdout]     |
[INFO] [stdout] 205 |     let mut action_cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `previous_state`
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:224:17
[INFO] [stdout]     |
[INFO] [stdout] 224 |             let previous_state = save_data.pet_state;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_state`
[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]    --> tests/task36_evolution_checking_main_loop_qa.rs:271:9
[INFO] [stdout]     |
[INFO] [stdout] 271 |     let mut pet = Pet::new(); // Default pet with insufficient evolution requirements
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Baby);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task36_evolution_checking_main_loop_qa.rs:405:9
[INFO] [stdout]     |
[INFO] [stdout] 405 |     let mut pet = create_evolution_ready_pet(EvolutionStage::Child);
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/task87_main_loop_qa.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let mut pet = Pet::new();
[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: unused variable: `initial_happiness`
[INFO] [stdout]   --> tests/task87_main_loop_qa.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let initial_happiness = save_data.pet.happiness;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_happiness`
[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]   --> tests/task87_main_loop_qa.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut pet = Pet::new();
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:141:9
[INFO] [stdout]     |
[INFO] [stdout] 141 |     let mut pet = Pet::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 191 |     let mut pet = Pet::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needs_update`
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:221:13
[INFO] [stdout]     |
[INFO] [stdout] 221 |         let needs_update = display_manager.needs_update(&save_data.pet);
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_needs_update`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut pet = Pet::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_energy`
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:244:9
[INFO] [stdout]     |
[INFO] [stdout] 244 |     let initial_energy = save_data.pet.energy;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_energy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 371 |     let mut pet = Pet::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `needs_update`
[INFO] [stdout]    --> tests/task87_main_loop_qa.rs:397:13
[INFO] [stdout]     |
[INFO] [stdout] 397 |         let needs_update = display_manager.needs_update(&save_data.pet);
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_needs_update`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task82_tui_pet_system_integration_qa.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let mut pet = create_test_pet();
[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]    --> tests/task82_tui_pet_system_integration_qa.rs:277:9
[INFO] [stdout]     |
[INFO] [stdout] 277 |     let mut pet = create_test_pet();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/task82_tui_pet_system_integration_qa.rs:527:9
[INFO] [stdout]     |
[INFO] [stdout] 527 |     let mut pet = create_test_pet();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_save_data` is never used
[INFO] [stdout]   --> tests/task82_tui_pet_system_integration_qa.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn create_test_save_data() -> SaveData {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/e2e_tests.rs:98:9
[INFO] [stdout]    |
[INFO] [stdout] 98 |     let mut pet = Pet::new();
[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]    --> tests/e2e_tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 |     let mut action_cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `action_cooldowns`
[INFO] [stdout]    --> tests/e2e_tests.rs:356:9
[INFO] [stdout]     |
[INFO] [stdout] 356 |     let mut action_cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_cooldowns`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_health`
[INFO] [stdout]    --> tests/e2e_tests.rs:540:9
[INFO] [stdout]     |
[INFO] [stdout] 540 |     let original_health = pet.health;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_health`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_happiness`
[INFO] [stdout]    --> tests/e2e_tests.rs:541:9
[INFO] [stdout]     |
[INFO] [stdout] 541 |     let original_happiness = pet.happiness;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_happiness`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_evolution_stage`
[INFO] [stdout]    --> tests/e2e_tests.rs:542:9
[INFO] [stdout]     |
[INFO] [stdout] 542 |     let original_evolution_stage = pet.evolution_stage;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_evolution_stage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pre_save_timestamp`
[INFO] [stdout]    --> tests/e2e_tests.rs:584:9
[INFO] [stdout]     |
[INFO] [stdout] 584 |     let pre_save_timestamp = save_data.pet.last_updated;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_pre_save_timestamp`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/e2e_tests.rs:565:13
[INFO] [stdout]     |
[INFO] [stdout] 565 |     assert!(pet.health >= 0 && pet.health <= 100,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/e2e_tests.rs:567:13
[INFO] [stdout]     |
[INFO] [stdout] 567 |     assert!(pet.happiness >= 0 && pet.happiness <= 100,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/e2e_tests.rs:569:13
[INFO] [stdout]     |
[INFO] [stdout] 569 |     assert!(pet.hunger >= 0 && pet.hunger <= 100,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/e2e_tests.rs:571:13
[INFO] [stdout]     |
[INFO] [stdout] 571 |     assert!(pet.energy >= 0 && pet.energy <= 100,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> tests/e2e_tests.rs:573:13
[INFO] [stdout]     |
[INFO] [stdout] 573 |     assert!(pet.cleanliness >= 0 && pet.cleanliness <= 100,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:291:29
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line> {
[INFO] [stdout]     |                             ^^^^^ the lifetime is elided here                                        ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line<'_>> {
[INFO] [stdout]     |                                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:350:28
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `pet` is assigned to, but never used
[INFO] [stdout]    --> src/ui/pet_display.rs:511:13
[INFO] [stdout]     |
[INFO] [stdout] 511 |         let mut pet = create_test_pet();
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_pet` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pet` is never read
[INFO] [stdout]    --> src/ui/pet_display.rs:524:13
[INFO] [stdout]     |
[INFO] [stdout] 524 |             pet.evolution_stage = stage;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |         let mut feedback_manager = FeedbackManager::new();
[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: unused variable: `layout`
[INFO] [stdout]    --> src/ui/mod.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let layout = UiLayout::new(full_area);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]    --> src/ui/mod.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]    --> src/ui/mod.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layout`
[INFO] [stdout]    --> src/ui/mod.rs:312:13
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let layout = UiLayout::new(full_area);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_panel`
[INFO] [stdout]    --> src/ui/mod.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let stats_panel = StatsPanel::new(full_area);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_panel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status_area`
[INFO] [stdout]    --> src/ui/mod.rs:325:13
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let status_area = StatusArea::new(full_area, true, "Integration Test".to_string());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_status_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:341:13
[INFO] [stdout]     |
[INFO] [stdout] 341 |         let mut error_handler = ErrorHandler::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut error_display = ErrorDisplay::new(area, true, "Error Test".to_string());
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_display`
[INFO] [stdout]    --> src/ui/mod.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut error_display = ErrorDisplay::new(area, true, "Error Test".to_string());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_display`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> src/ui/mod.rs:470:13
[INFO] [stdout]     |
[INFO] [stdout] 470 |         let save_data = create_test_save_data();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:526:13
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let mut feedback_manager = FeedbackManager::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/ui/mod.rs:500:13
[INFO] [stdout]     |
[INFO] [stdout] 500 |         let area = Rect::new(0, 0, 80, 24);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_save_data` is never used
[INFO] [stdout]     --> src/ui/display_manager.rs:2552:8
[INFO] [stdout]      |
[INFO] [stdout] 2552 |     fn create_test_save_data() -> SaveData {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_pet` is never used
[INFO] [stdout]    --> src/ui/stat_bars.rs:434:8
[INFO] [stdout]     |
[INFO] [stdout] 434 |     fn create_test_pet() -> Pet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:291:29
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line> {
[INFO] [stdout]     |                             ^^^^^ the lifetime is elided here                                        ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line<'_>> {
[INFO] [stdout]     |                                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:350:28
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/display_manager.rs:3169:17
[INFO] [stdout]      |
[INFO] [stdout] 3169 |         assert!(final_stats.partial_updates >= 0 || final_stats.total_renders >= 0,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/display_manager.rs:3169:53
[INFO] [stdout]      |
[INFO] [stdout] 3169 |         assert!(final_stats.partial_updates >= 0 || final_stats.total_renders >= 0,
[INFO] [stdout]      |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:673:21
[INFO] [stdout]     |
[INFO] [stdout] 673 |             assert!(layout.pet_display.width >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:675:21
[INFO] [stdout]     |
[INFO] [stdout] 675 |             assert!(layout.stats_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:677:21
[INFO] [stdout]     |
[INFO] [stdout] 677 |             assert!(layout.actions_area.width >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:679:21
[INFO] [stdout]     |
[INFO] [stdout] 679 |             assert!(layout.messages_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:746:39
[INFO] [stdout]     |
[INFO] [stdout] 746 |             let _pet_display_exists = layout.pet_display.width >= 0 && layout.pet_display.height >= 0;
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:746:72
[INFO] [stdout]     |
[INFO] [stdout] 746 |             let _pet_display_exists = layout.pet_display.width >= 0 && layout.pet_display.height >= 0;
[INFO] [stdout]     |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:747:38
[INFO] [stdout]     |
[INFO] [stdout] 747 |             let _stats_area_exists = layout.stats_area.width >= 0 && layout.stats_area.height >= 0;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:747:70
[INFO] [stdout]     |
[INFO] [stdout] 747 |             let _stats_area_exists = layout.stats_area.width >= 0 && layout.stats_area.height >= 0;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:748:40
[INFO] [stdout]     |
[INFO] [stdout] 748 |             let _actions_area_exists = layout.actions_area.width >= 0 && layout.actions_area.height >= 0;
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:748:74
[INFO] [stdout]     |
[INFO] [stdout] 748 |             let _actions_area_exists = layout.actions_area.width >= 0 && layout.actions_area.height >= 0;
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:749:41
[INFO] [stdout]     |
[INFO] [stdout] 749 |             let _messages_area_exists = layout.messages_area.width >= 0 && layout.messages_area.height >= 0;
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:749:76
[INFO] [stdout]     |
[INFO] [stdout] 749 |             let _messages_area_exists = layout.messages_area.width >= 0 && layout.messages_area.height >= 0;
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:910:21
[INFO] [stdout]     |
[INFO] [stdout] 910 |             assert!(minimal_layout.pet_display.width >= 0, "Minimal layout pet display should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:911:21
[INFO] [stdout]     |
[INFO] [stdout] 911 |             assert!(minimal_layout.stats_area.height >= 0, "Minimal layout stats area should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:912:21
[INFO] [stdout]     |
[INFO] [stdout] 912 |             assert!(minimal_layout.actions_area.width >= 0, "Minimal layout actions area should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:913:21
[INFO] [stdout]     |
[INFO] [stdout] 913 | ...   assert!(minimal_layout.messages_area.height >= 0, "Minimal layout messages area should not crash for {}x{}", width, height);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:951:21
[INFO] [stdout]     |
[INFO] [stdout] 951 |             assert!(layout.pet_display.width >= 0, "{}: Pet display should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:952:21
[INFO] [stdout]     |
[INFO] [stdout] 952 |             assert!(layout.stats_area.height >= 0, "{}: Stats area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:953:21
[INFO] [stdout]     |
[INFO] [stdout] 953 |             assert!(layout.actions_area.width >= 0, "{}: Actions area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:954:21
[INFO] [stdout]     |
[INFO] [stdout] 954 |             assert!(layout.messages_area.height >= 0, "{}: Messages area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:986:21
[INFO] [stdout]     |
[INFO] [stdout] 986 |             assert!(layout.pet_display.width >= 0 && layout.pet_display.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:986:54
[INFO] [stdout]     |
[INFO] [stdout] 986 |             assert!(layout.pet_display.width >= 0 && layout.pet_display.height >= 0,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:988:21
[INFO] [stdout]     |
[INFO] [stdout] 988 |             assert!(layout.stats_area.width >= 0 && layout.stats_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:988:53
[INFO] [stdout]     |
[INFO] [stdout] 988 |             assert!(layout.stats_area.width >= 0 && layout.stats_area.height >= 0,
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:990:21
[INFO] [stdout]     |
[INFO] [stdout] 990 |             assert!(layout.actions_area.width >= 0 && layout.actions_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:990:55
[INFO] [stdout]     |
[INFO] [stdout] 990 |             assert!(layout.actions_area.width >= 0 && layout.actions_area.height >= 0,
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:992:21
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(layout.messages_area.width >= 0 && layout.messages_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:992:56
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(layout.messages_area.width >= 0 && layout.messages_area.height >= 0,
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/layout.rs:1047:17
[INFO] [stdout]      |
[INFO] [stdout] 1047 |         assert!(centered_popup.x >= 0 && centered_popup.x + centered_popup.width <= frame_size.width,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/layout.rs:1049:17
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(centered_popup.y >= 0 && centered_popup.y + centered_popup.height <= frame_size.height,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:265:17
[INFO] [stdout]     |
[INFO] [stdout] 265 |         assert!(stats.total_active >= 0, "Should have valid feedback count");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:345:17
[INFO] [stdout]     |
[INFO] [stdout] 345 |         assert!(initial_stats.total_errors >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:346:17
[INFO] [stdout]     |
[INFO] [stdout] 346 |         assert!(initial_stats.recovery_attempts >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:521:17
[INFO] [stdout]     |
[INFO] [stdout] 521 |         assert!(stats.total_renders >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:522:17
[INFO] [stdout]     |
[INFO] [stdout] 522 |         assert!(stats.cache_hits >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:523:17
[INFO] [stdout]     |
[INFO] [stdout] 523 |         assert!(stats.cache_misses >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:528:17
[INFO] [stdout]     |
[INFO] [stdout] 528 |         assert!(feedback_stats.total_active >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:529:17
[INFO] [stdout]     |
[INFO] [stdout] 529 |         assert!(feedback_stats.button_presses >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `pet` is assigned to, but never used
[INFO] [stdout]    --> src/ui/pet_display.rs:511:13
[INFO] [stdout]     |
[INFO] [stdout] 511 |         let mut pet = create_test_pet();
[INFO] [stdout]     |             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_pet` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pet` is never read
[INFO] [stdout]    --> src/ui/pet_display.rs:524:13
[INFO] [stdout]     |
[INFO] [stdout] 524 |             pet.evolution_stage = stage;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:259:13
[INFO] [stdout]     |
[INFO] [stdout] 259 |         let mut feedback_manager = FeedbackManager::new();
[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: unused variable: `layout`
[INFO] [stdout]    --> src/ui/mod.rs:284:13
[INFO] [stdout]     |
[INFO] [stdout] 284 |         let layout = UiLayout::new(full_area);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]    --> src/ui/mod.rs:294:13
[INFO] [stdout]     |
[INFO] [stdout] 294 |         let cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cooldowns`
[INFO] [stdout]    --> src/ui/mod.rs:309:13
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut cooldowns = ActionCooldowns::default();
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cooldowns`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `layout`
[INFO] [stdout]    --> src/ui/mod.rs:312:13
[INFO] [stdout]     |
[INFO] [stdout] 312 |         let layout = UiLayout::new(full_area);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_layout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stats_panel`
[INFO] [stdout]    --> src/ui/mod.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let stats_panel = StatsPanel::new(full_area);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_stats_panel`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status_area`
[INFO] [stdout]    --> src/ui/mod.rs:325:13
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let status_area = StatusArea::new(full_area, true, "Integration Test".to_string());
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_status_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:341:13
[INFO] [stdout]     |
[INFO] [stdout] 341 |         let mut error_handler = ErrorHandler::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut error_display = ErrorDisplay::new(area, true, "Error Test".to_string());
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `error_display`
[INFO] [stdout]    --> src/ui/mod.rs:349:13
[INFO] [stdout]     |
[INFO] [stdout] 349 |         let mut error_display = ErrorDisplay::new(area, true, "Error Test".to_string());
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_error_display`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `save_data`
[INFO] [stdout]    --> src/ui/mod.rs:470:13
[INFO] [stdout]     |
[INFO] [stdout] 470 |         let save_data = create_test_save_data();
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_save_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui/mod.rs:526:13
[INFO] [stdout]     |
[INFO] [stdout] 526 |         let mut feedback_manager = FeedbackManager::new();
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/ui/mod.rs:500:13
[INFO] [stdout]     |
[INFO] [stdout] 500 |         let area = Rect::new(0, 0, 80, 24);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1495:13
[INFO] [stdout]      |
[INFO] [stdout] 1495 |         let mut pet = Pet::new();
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1537:13
[INFO] [stdout]      |
[INFO] [stdout] 1537 |         let mut pet = Pet::new();
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/main.rs:1598:13
[INFO] [stdout]      |
[INFO] [stdout] 1598 |         let mut pet = Pet::new();
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_save_data` is never used
[INFO] [stdout]     --> src/ui/display_manager.rs:2552:8
[INFO] [stdout]      |
[INFO] [stdout] 2552 |     fn create_test_save_data() -> SaveData {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_test_pet` is never used
[INFO] [stdout]    --> src/ui/stat_bars.rs:434:8
[INFO] [stdout]     |
[INFO] [stdout] 434 |     fn create_test_pet() -> Pet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:291:29
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line> {
[INFO] [stdout]     |                             ^^^^^ the lifetime is elided here                                        ^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 291 |     fn create_content_lines(&self, cooldown_info: &[CooldownInfo], mode: CooldownDisplayMode) -> Vec<Line<'_>> {
[INFO] [stdout]     |                                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:320:29
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 320 |     fn create_detailed_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/ui/cooldown_display.rs:350:28
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line {
[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] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 350 |     fn create_compact_line(&self, info: &CooldownInfo) -> Line<'_> {
[INFO] [stdout]     |                                                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/display_manager.rs:3169:17
[INFO] [stdout]      |
[INFO] [stdout] 3169 |         assert!(final_stats.partial_updates >= 0 || final_stats.total_renders >= 0,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/display_manager.rs:3169:53
[INFO] [stdout]      |
[INFO] [stdout] 3169 |         assert!(final_stats.partial_updates >= 0 || final_stats.total_renders >= 0,
[INFO] [stdout]      |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:673:21
[INFO] [stdout]     |
[INFO] [stdout] 673 |             assert!(layout.pet_display.width >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:675:21
[INFO] [stdout]     |
[INFO] [stdout] 675 |             assert!(layout.stats_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:677:21
[INFO] [stdout]     |
[INFO] [stdout] 677 |             assert!(layout.actions_area.width >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:679:21
[INFO] [stdout]     |
[INFO] [stdout] 679 |             assert!(layout.messages_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:746:39
[INFO] [stdout]     |
[INFO] [stdout] 746 |             let _pet_display_exists = layout.pet_display.width >= 0 && layout.pet_display.height >= 0;
[INFO] [stdout]     |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:746:72
[INFO] [stdout]     |
[INFO] [stdout] 746 |             let _pet_display_exists = layout.pet_display.width >= 0 && layout.pet_display.height >= 0;
[INFO] [stdout]     |                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:747:38
[INFO] [stdout]     |
[INFO] [stdout] 747 |             let _stats_area_exists = layout.stats_area.width >= 0 && layout.stats_area.height >= 0;
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:747:70
[INFO] [stdout]     |
[INFO] [stdout] 747 |             let _stats_area_exists = layout.stats_area.width >= 0 && layout.stats_area.height >= 0;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:748:40
[INFO] [stdout]     |
[INFO] [stdout] 748 |             let _actions_area_exists = layout.actions_area.width >= 0 && layout.actions_area.height >= 0;
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:748:74
[INFO] [stdout]     |
[INFO] [stdout] 748 |             let _actions_area_exists = layout.actions_area.width >= 0 && layout.actions_area.height >= 0;
[INFO] [stdout]     |                                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:749:41
[INFO] [stdout]     |
[INFO] [stdout] 749 |             let _messages_area_exists = layout.messages_area.width >= 0 && layout.messages_area.height >= 0;
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:749:76
[INFO] [stdout]     |
[INFO] [stdout] 749 |             let _messages_area_exists = layout.messages_area.width >= 0 && layout.messages_area.height >= 0;
[INFO] [stdout]     |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:910:21
[INFO] [stdout]     |
[INFO] [stdout] 910 |             assert!(minimal_layout.pet_display.width >= 0, "Minimal layout pet display should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:911:21
[INFO] [stdout]     |
[INFO] [stdout] 911 |             assert!(minimal_layout.stats_area.height >= 0, "Minimal layout stats area should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:912:21
[INFO] [stdout]     |
[INFO] [stdout] 912 |             assert!(minimal_layout.actions_area.width >= 0, "Minimal layout actions area should not crash for {}x{}", width, height);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:913:21
[INFO] [stdout]     |
[INFO] [stdout] 913 | ...   assert!(minimal_layout.messages_area.height >= 0, "Minimal layout messages area should not crash for {}x{}", width, height);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:951:21
[INFO] [stdout]     |
[INFO] [stdout] 951 |             assert!(layout.pet_display.width >= 0, "{}: Pet display should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:952:21
[INFO] [stdout]     |
[INFO] [stdout] 952 |             assert!(layout.stats_area.height >= 0, "{}: Stats area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:953:21
[INFO] [stdout]     |
[INFO] [stdout] 953 |             assert!(layout.actions_area.width >= 0, "{}: Actions area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:954:21
[INFO] [stdout]     |
[INFO] [stdout] 954 |             assert!(layout.messages_area.height >= 0, "{}: Messages area should remain valid", description);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:986:21
[INFO] [stdout]     |
[INFO] [stdout] 986 |             assert!(layout.pet_display.width >= 0 && layout.pet_display.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:986:54
[INFO] [stdout]     |
[INFO] [stdout] 986 |             assert!(layout.pet_display.width >= 0 && layout.pet_display.height >= 0,
[INFO] [stdout]     |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:988:21
[INFO] [stdout]     |
[INFO] [stdout] 988 |             assert!(layout.stats_area.width >= 0 && layout.stats_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:988:53
[INFO] [stdout]     |
[INFO] [stdout] 988 |             assert!(layout.stats_area.width >= 0 && layout.stats_area.height >= 0,
[INFO] [stdout]     |                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:990:21
[INFO] [stdout]     |
[INFO] [stdout] 990 |             assert!(layout.actions_area.width >= 0 && layout.actions_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:990:55
[INFO] [stdout]     |
[INFO] [stdout] 990 |             assert!(layout.actions_area.width >= 0 && layout.actions_area.height >= 0,
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:992:21
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(layout.messages_area.width >= 0 && layout.messages_area.height >= 0,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/layout.rs:992:56
[INFO] [stdout]     |
[INFO] [stdout] 992 |             assert!(layout.messages_area.width >= 0 && layout.messages_area.height >= 0,
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/layout.rs:1047:17
[INFO] [stdout]      |
[INFO] [stdout] 1047 |         assert!(centered_popup.x >= 0 && centered_popup.x + centered_popup.width <= frame_size.width,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]     --> src/ui/layout.rs:1049:17
[INFO] [stdout]      |
[INFO] [stdout] 1049 |         assert!(centered_popup.y >= 0 && centered_popup.y + centered_popup.height <= frame_size.height,
[INFO] [stdout]      |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:265:17
[INFO] [stdout]     |
[INFO] [stdout] 265 |         assert!(stats.total_active >= 0, "Should have valid feedback count");
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:345:17
[INFO] [stdout]     |
[INFO] [stdout] 345 |         assert!(initial_stats.total_errors >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:346:17
[INFO] [stdout]     |
[INFO] [stdout] 346 |         assert!(initial_stats.recovery_attempts >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:521:17
[INFO] [stdout]     |
[INFO] [stdout] 521 |         assert!(stats.total_renders >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:522:17
[INFO] [stdout]     |
[INFO] [stdout] 522 |         assert!(stats.cache_hits >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:523:17
[INFO] [stdout]     |
[INFO] [stdout] 523 |         assert!(stats.cache_misses >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:528:17
[INFO] [stdout]     |
[INFO] [stdout] 528 |         assert!(feedback_stats.total_active >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/ui/mod.rs:529:17
[INFO] [stdout]     |
[INFO] [stdout] 529 |         assert!(feedback_stats.button_presses >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.51s
[INFO] running `Command { std: "docker" "inspect" "64112683d6b95ddfd5c35fb499c26ffe66189b0cdcc47e468fe4d783068cfc3e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "64112683d6b95ddfd5c35fb499c26ffe66189b0cdcc47e468fe4d783068cfc3e", kill_on_drop: false }`
[INFO] [stdout] 64112683d6b95ddfd5c35fb499c26ffe66189b0cdcc47e468fe4d783068cfc3e
