[INFO] cloning repository https://github.com/Matts-lab69/CorkyTux-Launcher
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Matts-lab69/CorkyTux-Launcher" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMatts-lab69%2FCorkyTux-Launcher", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMatts-lab69%2FCorkyTux-Launcher'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] bb2005e72d28b6d31cae75e2dc7232b98eb8a264
[INFO] checking Matts-lab69/CorkyTux-Launcher against 3154cc1a3e6424e44f438a95007d043ed5ceaaf6 for pr-133502-30
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FMatts-lab69%2FCorkyTux-Launcher" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Matts-lab69/CorkyTux-Launcher
[INFO] finished tweaking git repo https://github.com/Matts-lab69/CorkyTux-Launcher
[INFO] tweaked toml for git repo https://github.com/Matts-lab69/CorkyTux-Launcher written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Matts-lab69/CorkyTux-Launcher on toolchain 3154cc1a3e6424e44f438a95007d043ed5ceaaf6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Matts-lab69/CorkyTux-Launcher 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" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d
[INFO] running `Command { std: "docker" "start" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d" "/opt/rustwide/cargo-home/bin/cargo" "+3154cc1a3e6424e44f438a95007d043ed5ceaaf6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling target-lexicon v0.13.5
[INFO] [stderr]    Compiling smallvec v1.16.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]     Checking futures-sink v0.3.34
[INFO] [stderr]     Checking futures-task v0.3.34
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]    Compiling indexmap v2.14.2
[INFO] [stderr]    Compiling find-msvc-tools v0.1.12
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]    Compiling syn v2.0.119
[INFO] [stderr]    Compiling gio v0.20.12
[INFO] [stderr]     Checking tokio v1.53.1
[INFO] [stderr]    Compiling toml v1.1.5+spec-1.1.0
[INFO] [stderr]    Compiling rustls v0.23.44
[INFO] [stderr]    Compiling crc32fast v1.5.2
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]     Checking futures-channel v0.3.34
[INFO] [stderr]     Checking simd-adler32 v0.3.10
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking ipnet v2.12.2
[INFO] [stderr]    Compiling thiserror v2.0.21
[INFO] [stderr]     Checking aho-corasick v1.1.5
[INFO] [stderr]     Checking ryu v1.0.23
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]    Compiling cc v1.4.5
[INFO] [stderr]     Checking bumpalo v3.20.3
[INFO] [stderr]     Checking miniz_oxide v0.9.1
[INFO] [stderr]     Checking serde_json v1.0.151
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]     Checking flate2 v1.1.10
[INFO] [stderr]    Compiling cfg-expr v0.20.9
[INFO] [stderr]    Compiling system-deps v7.0.8
[INFO] [stderr]    Compiling toml_edit v0.25.13+spec-1.1.0
[INFO] [stderr]     Checking regex-automata v0.4.18
[INFO] [stderr]    Compiling glib-sys v0.20.10
[INFO] [stderr]    Compiling gobject-sys v0.20.10
[INFO] [stderr]    Compiling gio-sys v0.20.10
[INFO] [stderr]    Compiling cairo-sys-rs v0.20.10
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.20.10
[INFO] [stderr]    Compiling pango-sys v0.20.10
[INFO] [stderr]    Compiling graphene-sys v0.20.10
[INFO] [stderr]    Compiling gdk4-sys v0.9.6
[INFO] [stderr]    Compiling gsk4-sys v0.9.6
[INFO] [stderr]    Compiling gtk4-sys v0.9.6
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling libadwaita-sys v0.7.2
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking regex v1.13.1
[INFO] [stderr]     Checking hyper v1.11.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling glib-macros v0.20.12
[INFO] [stderr]    Compiling gtk4-macros v0.9.5
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling futures-macro v0.3.34
[INFO] [stderr]    Compiling displaydoc v0.2.7
[INFO] [stderr]    Compiling zerovec-derive v0.11.6
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]    Compiling thiserror-impl v2.0.21
[INFO] [stderr]     Checking zerofrom v0.1.8
[INFO] [stderr]     Checking yoke v0.8.3
[INFO] [stderr]     Checking futures-util v0.3.34
[INFO] [stderr]     Checking zerotrie v0.2.5
[INFO] [stderr]     Checking zerovec v0.11.8
[INFO] [stderr]     Checking rustls-webpki v0.103.15
[INFO] [stderr]     Checking tinystr v0.8.4
[INFO] [stderr]     Checking potential_utf v0.1.6
[INFO] [stderr]     Checking icu_collections v2.3.0
[INFO] [stderr]     Checking icu_locale_core v2.3.0
[INFO] [stderr]     Checking icu_provider v2.3.1
[INFO] [stderr]     Checking icu_properties v2.3.0
[INFO] [stderr]     Checking icu_normalizer v2.3.0
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking idna_adapter v1.2.2
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking futures-executor v0.3.34
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking glib v0.20.12
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking tokio-rustls v0.26.5
[INFO] [stderr]     Checking tower-http v0.6.11
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking cairo-rs v0.20.12
[INFO] [stderr]     Checking graphene-rs v0.20.10
[INFO] [stderr]     Checking gdk-pixbuf v0.20.10
[INFO] [stderr]     Checking pango v0.20.12
[INFO] [stderr]     Checking gdk4 v0.9.6
[INFO] [stderr]     Checking gsk4 v0.9.6
[INFO] [stderr]     Checking gtk4 v0.9.7
[INFO] [stderr]     Checking libadwaita v0.7.2
[INFO] [stderr]     Checking corkytux v3.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> examples/icon_probe.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut theme = gtk::IconTheme::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 import: `std::collections::BTreeMap`
[INFO] [stdout]  --> examples/game_info_probe.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::BTreeMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/config.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/theme.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/theme.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/game_model.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/backend/game_model.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf` and `Path`
[INFO] [stdout]  --> src/backend/game_model.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/game_model.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/game_model.rs:416:9
[INFO] [stdout]     |
[INFO] [stdout] 416 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cell` and `RefCell`
[INFO] [stdout]  --> src/backend/proton.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::{Cell, RefCell};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]   --> src/backend/proton.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     use glib::subclass::prelude::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/backend/proton.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     use std::path::PathBuf;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/plugins.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/plugins.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/integration.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/integration.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `theme::ThemeManager`
[INFO] [stdout]   --> src/backend/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use theme::ThemeManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GameModel` and `RecentModel`
[INFO] [stdout]   --> src/backend/mod.rs:15:22
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use game_model::{GameModel, RecentModel};
[INFO] [stdout]    |                      ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proton::ProtonManager`
[INFO] [stdout]   --> src/backend/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use proton::ProtonManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `integration::IntegrationManager`
[INFO] [stdout]   --> src/backend/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use integration::IntegrationManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/helpers.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/game_card.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backend::theme::ThemeManager`
[INFO] [stdout]  --> src/ui/game_card.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::backend::theme::ThemeManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/add_game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/remove_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/center.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/log_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/proton_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/game_settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/apps_settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/minecraft_view.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/stores_view.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ui::proton_modal::ProtonModal`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use ui::proton_modal::ProtonModal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/config.rs:163:9
[INFO] [stdout]     |
[INFO] [stdout] 163 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/theme.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/theme.rs:106:9
[INFO] [stdout]     |
[INFO] [stdout] 106 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/game_model.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/backend/game_model.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathBuf` and `Path`
[INFO] [stdout]  --> src/backend/game_model.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/game_model.rs:212:9
[INFO] [stdout]     |
[INFO] [stdout] 212 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/game_model.rs:416:9
[INFO] [stdout]     |
[INFO] [stdout] 416 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cell` and `RefCell`
[INFO] [stdout]  --> src/backend/proton.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::cell::{Cell, RefCell};
[INFO] [stdout]   |                 ^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]   --> src/backend/proton.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 67 |     use glib::subclass::prelude::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]   --> src/backend/proton.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     use std::path::PathBuf;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/plugins.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/plugins.rs:102:9
[INFO] [stdout]     |
[INFO] [stdout] 102 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cell::RefCell`
[INFO] [stdout]  --> src/backend/integration.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cell::RefCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib::subclass::prelude::*`
[INFO] [stdout]    --> src/backend/integration.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |     use glib::subclass::prelude::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `theme::ThemeManager`
[INFO] [stdout]   --> src/backend/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use theme::ThemeManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GameModel` and `RecentModel`
[INFO] [stdout]   --> src/backend/mod.rs:15:22
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use game_model::{GameModel, RecentModel};
[INFO] [stdout]    |                      ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `proton::ProtonManager`
[INFO] [stdout]   --> src/backend/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use proton::ProtonManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `integration::IntegrationManager`
[INFO] [stdout]   --> src/backend/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use integration::IntegrationManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/helpers.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/game_card.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::backend::theme::ThemeManager`
[INFO] [stdout]  --> src/ui/game_card.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::backend::theme::ThemeManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/add_game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/remove_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/center.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/log_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/proton_modal.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/game_settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/apps_settings.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/minecraft_view.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude::*`
[INFO] [stdout]  --> src/ui/stores_view.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ui::proton_modal::ProtonModal`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use ui::proton_modal::ProtonModal;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::allocation`: Since 4.12
[INFO] [stdout]    --> src/main.rs:244:25
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let a = win.allocation();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/theme.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/game_model.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/plugins.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/integration.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/backend/game_model.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let config = super::ConfigManager::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::allocation`: Since 4.12
[INFO] [stdout]    --> src/main.rs:244:25
[INFO] [stdout]     |
[INFO] [stdout] 244 |             let a = win.allocation();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/config.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/theme.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/game_model.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/plugins.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk::prelude`
[INFO] [stdout]  --> src/backend/integration.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/backend/proton.rs:1105:21
[INFO] [stdout]      |
[INFO] [stdout] 1105 |                 let mut wrapped_cmd = if game_mode {
[INFO] [stdout]      |                     ----^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/backend/proton.rs:1582:13
[INFO] [stdout]      |
[INFO] [stdout] 1582 |         let mut child = self.imp().running_child.borrow_mut().take();
[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/backend/proton.rs:2382:13
[INFO] [stdout]      |
[INFO] [stdout] 2382 |         let mut cmd = if tool == "winetricks" {
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/backend/game_model.rs:321:13
[INFO] [stdout]     |
[INFO] [stdout] 321 |         let config = super::ConfigManager::new();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_name`
[INFO] [stdout]     --> src/backend/proton.rs:2855:35
[INFO] [stdout]      |
[INFO] [stdout] 2855 |     pub fn find_wine_tools(&self, game_name: &str) -> Vec<(String, String)> {
[INFO] [stdout]      |                                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/backend/proton.rs:1105:21
[INFO] [stdout]      |
[INFO] [stdout] 1105 |                 let mut wrapped_cmd = if game_mode {
[INFO] [stdout]      |                     ----^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/backend/proton.rs:1582:13
[INFO] [stdout]      |
[INFO] [stdout] 1582 |         let mut child = self.imp().running_child.borrow_mut().take();
[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/backend/proton.rs:2382:13
[INFO] [stdout]      |
[INFO] [stdout] 2382 |         let mut cmd = if tool == "winetricks" {
[INFO] [stdout]      |             ----^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_name`
[INFO] [stdout]     --> src/backend/proton.rs:2855:35
[INFO] [stdout]      |
[INFO] [stdout] 2855 |     pub fn find_wine_tools(&self, game_name: &str) -> Vec<(String, String)> {
[INFO] [stdout]      |                                   ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rev_notify`
[INFO] [stdout]    --> src/ui/details_panel.rs:365:13
[INFO] [stdout]     |
[INFO] [stdout] 365 |         let rev_notify = revealer.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rev_notify`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rev_notify`
[INFO] [stdout]    --> src/ui/details_panel.rs:365:13
[INFO] [stdout]     |
[INFO] [stdout] 365 |         let rev_notify = revealer.clone();
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rev_notify`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proton_c2`
[INFO] [stdout]    --> src/ui/proton_modal.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 | ...                   let proton_c2 = proton_c.clone();
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_proton_c2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/ui/game_settings.rs:85:21
[INFO] [stdout]    |
[INFO] [stdout] 85 |     for (i, (label, id, icon_name)) in tabs.iter().enumerate() {
[INFO] [stdout]    |                     ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `icon_p`
[INFO] [stdout]    --> src/ui/game_settings.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     let icon_p = icon_preview.clone();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_icon_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `patch`
[INFO] [stdout]    --> src/ui/minecraft_view.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let patch: u32 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0);
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_patch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `proton_c2`
[INFO] [stdout]    --> src/ui/proton_modal.rs:160:37
[INFO] [stdout]     |
[INFO] [stdout] 160 | ...                   let proton_c2 = proton_c.clone();
[INFO] [stdout]     |                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_proton_c2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]   --> src/ui/game_settings.rs:85:21
[INFO] [stdout]    |
[INFO] [stdout] 85 |     for (i, (label, id, icon_name)) in tabs.iter().enumerate() {
[INFO] [stdout]    |                     ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `icon_p`
[INFO] [stdout]    --> src/ui/game_settings.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     let icon_p = icon_preview.clone();
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_icon_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/ui/minecraft_view.rs:941:19
[INFO] [stdout]     |
[INFO] [stdout] 941 | fn inst_icon_path(id: &str, kind: &str, is_dark: bool) -> Option<String> {
[INFO] [stdout]     |                   ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `patch`
[INFO] [stdout]    --> src/ui/minecraft_view.rs:167:9
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let patch: u32 = parts.next().and_then(|s| s.parse().ok()).unwrap_or(0);
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_patch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/ui/minecraft_view.rs:941:19
[INFO] [stdout]     |
[INFO] [stdout] 941 | fn inst_icon_path(id: &str, kind: &str, is_dark: bool) -> Option<String> {
[INFO] [stdout]     |                   ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]     --> src/ui/minecraft_view.rs:4534:17
[INFO] [stdout]      |
[INFO] [stdout] 4534 |             let d = dlg.clone();
[INFO] [stdout]      |                 ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `d`
[INFO] [stdout]     --> src/ui/minecraft_view.rs:4534:17
[INFO] [stdout]      |
[INFO] [stdout] 4534 |             let d = dlg.clone();
[INFO] [stdout]      |                 ^ help: if this is intentional, prefix it with an underscore: `_d`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `force`
[INFO] [stdout]     --> src/ui/minecraft_view.rs:6827:60
[INFO] [stdout]      |
[INFO] [stdout] 6827 |             let load = Rc::new(RefCell::new(Box::new(move |force: bool| {}) as Box<dyn Fn(bool)>));
[INFO] [stdout]      |                                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_force`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `force`
[INFO] [stdout]     --> src/ui/minecraft_view.rs:6827:60
[INFO] [stdout]      |
[INFO] [stdout] 6827 |             let load = Rc::new(RefCell::new(Box::new(move |force: bool| {}) as Box<dyn Fn(bool)>));
[INFO] [stdout]      |                                                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_force`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/ui/stores_view.rs:1832:17
[INFO] [stdout]      |
[INFO] [stdout] 1832 |                 _ => true,
[INFO] [stdout]      |                 ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/ui/stores_view.rs:1832:17
[INFO] [stdout]      |
[INFO] [stdout] 1781 |                 PluginEvent::Custom(val) => {
[INFO] [stdout]      |                 ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1805 |                 PluginEvent::Progress { extra, .. } => {
[INFO] [stdout]      |                 ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1815 |                 PluginEvent::Done(val) => {
[INFO] [stdout]      |                 ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1825 |                 PluginEvent::Error { message, .. } => {
[INFO] [stdout]      |                 ---------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1832 |                 _ => true,
[INFO] [stdout]      |                 ^ collectively making this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/ui/stores_view.rs:1832:17
[INFO] [stdout]      |
[INFO] [stdout] 1832 |                 _ => true,
[INFO] [stdout]      |                 ^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]     --> src/ui/stores_view.rs:1832:17
[INFO] [stdout]      |
[INFO] [stdout] 1781 |                 PluginEvent::Custom(val) => {
[INFO] [stdout]      |                 ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1805 |                 PluginEvent::Progress { extra, .. } => {
[INFO] [stdout]      |                 ----------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1815 |                 PluginEvent::Done(val) => {
[INFO] [stdout]      |                 ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1825 |                 PluginEvent::Error { message, .. } => {
[INFO] [stdout]      |                 ---------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 1832 |                 _ => true,
[INFO] [stdout]      |                 ^ collectively making this unreachable
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:342:26
[INFO] [stdout]     |
[INFO] [stdout] 342 |                     let (mut i, mut b) = if needs_appimage {
[INFO] [stdout]     |                          ----^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let win = window.clone();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dlg_c`
[INFO] [stdout]     --> src/main.rs:1528:9
[INFO] [stdout]      |
[INFO] [stdout] 1528 |     let dlg_c = dlg.clone();
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_dlg_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:342:26
[INFO] [stdout]     |
[INFO] [stdout] 342 |                     let (mut i, mut b) = if needs_appimage {
[INFO] [stdout]     |                          ----^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_KEY` is never used
[INFO] [stdout]   --> src/backend/isolation.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const GAME_KEY: &str = "Isolated";
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PATHS_KEY` is never used
[INFO] [stdout]   --> src/backend/isolation.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const GAME_PATHS_KEY: &str = "IsolatePaths";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `query_folder_size_recursive` is never used
[INFO] [stdout]    --> src/backend/integration.rs:885:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl IntegrationManager {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 885 |     fn query_folder_size_recursive(&self, path: &Path) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ProtocolMode` is never used
[INFO] [stdout]   --> src/backend/plugin_process.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum ProtocolMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `exit_code` is never read
[INFO] [stdout]   --> src/backend/plugin_process.rs:54:30
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Error { message: String, exit_code: Option<i32>, code: Option<i32> },
[INFO] [stdout]    |     -----                    ^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `available`, `status`, `integrate`, `run_detached`, and `spawn_run` are never used
[INFO] [stdout]   --> src/backend/external.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl AppImageManager {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn available() -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn status() -> Result<serde_json::Value, String> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn integrate(path: &str, move_to_apps: bool) -> Result<serde_json::Value, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn run_detached(path: &str, args: &[String]) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn spawn_run(path: String, args: Vec<String>) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `install_check`, `run`, `config_show`, `run_with_runtime`, and `engine_of` are never used
[INFO] [stdout]    --> src/backend/external.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl RpgMakerManager {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn install_check() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn run(path: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn config_show() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_with_runtime(path: &str, runtime: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn engine_of(scan_doc: &serde_json::Value) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `available`, `auth`, `uninstall`, and `launch_info` are never used
[INFO] [stdout]    --> src/backend/external.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl StoreManager {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn auth(store: &str, code: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn uninstall(store: &str, app_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn launch_info(store: &str, app_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_mb` is never read
[INFO] [stdout]    --> src/backend/external.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 370 | pub struct LaunchOpts {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 371 |     pub max_mb: u32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/backend/external.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 381 | impl MinecraftManager {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn auth_config(client_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn auth_config_status() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn ely_refresh(account: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn ely_validate(account: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn mods_list() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn mod_toggle(file: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn mods_add(path: &str, force: bool) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn addons_list(addon_type: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     pub fn spawn_install(version: String) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 899 |     pub fn spawn_launch(version: String, account: Option<String>, max_memory_mb: u32) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 912 |     pub fn java_candidates() -> Vec<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `on_game_clicked` is never read
[INFO] [stdout]   --> src/ui/sidebar.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Sidebar {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub on_game_clicked: GameCallback,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Sidebar` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_callbacks`, `get_filter`, `get_search_query`, and `select_game` are never used
[INFO] [stdout]    --> src/ui/sidebar.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl Sidebar {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  32 |     pub fn new(cfg: &ConfigManager, theme: &ThemeManager) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn set_callbacks(&self, on_game_clicked: GameCallback, on_filter_changed: FilterCallback) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_filter(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_search_query(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn select_game(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `play_button` is never read
[INFO] [stdout]   --> src/ui/details_panel.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct DetailsPanel {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     play_button: gtk::Button,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DetailsPanel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `show`, `set_title`, `set_banner`, `set_time_played`, and `set_favorited` are never used
[INFO] [stdout]    --> src/ui/details_panel.rs:407:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl DetailsPanel {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn show(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn set_title(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 420 |     pub fn set_banner(&self, path: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_time_played(&self, seconds: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn set_favorited(&self, fav: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `game_name` and `parent` are never read
[INFO] [stdout]   --> src/ui/log_modal.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct LogModal {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     game_name: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 15 |     search_mark: gtk::TextMark,
[INFO] [stdout] 16 |     parent: gtk::Widget,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ModalMsg` is never used
[INFO] [stdout]  --> src/ui/proton_modal.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | enum ModalMsg {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProtonModal` is never constructed
[INFO] [stdout]   --> src/ui/proton_modal.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ProtonModal {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `present` are never used
[INFO] [stdout]    --> src/ui/proton_modal.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ProtonModal {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(proton: &ProtonManager) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn present(&self, parent: &impl IsA<gtk::Widget>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pages` and `loader` are never read
[INFO] [stdout]     --> src/ui/stores_view.rs:1225:5
[INFO] [stdout]      |
[INFO] [stdout] 1221 | struct DealsState {
[INFO] [stdout]      |        ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1225 |     pages: Rc<std::cell::Cell<usize>>,
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout] 1226 |     loader: Rc<RefCell<Option<Rc<dyn Fn(u64)>>>>,
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `DealsState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `win`
[INFO] [stdout]    --> src/main.rs:650:13
[INFO] [stdout]     |
[INFO] [stdout] 650 |         let win = window.clone();
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_win`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/ui/settings.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let tag_poll = tag_dir.clone();
[INFO] [stdout]     |                           ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/ui/settings.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             let tag_a = tag_poll.clone();
[INFO] [stdout]     |                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dlg_c`
[INFO] [stdout]     --> src/main.rs:1528:9
[INFO] [stdout]      |
[INFO] [stdout] 1528 |     let dlg_c = dlg.clone();
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_dlg_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_KEY` is never used
[INFO] [stdout]   --> src/backend/isolation.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const GAME_KEY: &str = "Isolated";
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_PATHS_KEY` is never used
[INFO] [stdout]   --> src/backend/isolation.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const GAME_PATHS_KEY: &str = "IsolatePaths";
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `query_folder_size_recursive` is never used
[INFO] [stdout]    --> src/backend/integration.rs:885:8
[INFO] [stdout]     |
[INFO] [stdout] 149 | impl IntegrationManager {
[INFO] [stdout]     | ----------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 885 |     fn query_folder_size_recursive(&self, path: &Path) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ProtocolMode` is never used
[INFO] [stdout]   --> src/backend/plugin_process.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub enum ProtocolMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `exit_code` is never read
[INFO] [stdout]   --> src/backend/plugin_process.rs:54:30
[INFO] [stdout]    |
[INFO] [stdout] 54 |     Error { message: String, exit_code: Option<i32>, code: Option<i32> },
[INFO] [stdout]    |     -----                    ^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PluginEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `available`, `status`, `integrate`, `run_detached`, and `spawn_run` are never used
[INFO] [stdout]   --> src/backend/external.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl AppImageManager {
[INFO] [stdout]    | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn available() -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn status() -> Result<serde_json::Value, String> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn integrate(path: &str, move_to_apps: bool) -> Result<serde_json::Value, String> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn run_detached(path: &str, args: &[String]) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn spawn_run(path: String, args: Vec<String>) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `install_check`, `run`, `config_show`, `run_with_runtime`, and `engine_of` are never used
[INFO] [stdout]    --> src/backend/external.rs:89:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl RpgMakerManager {
[INFO] [stdout]     | -------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn install_check() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn run(path: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn config_show() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn run_with_runtime(path: &str, runtime: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn engine_of(scan_doc: &serde_json::Value) -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `available`, `auth`, `uninstall`, and `launch_info` are never used
[INFO] [stdout]    --> src/backend/external.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl StoreManager {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn auth(store: &str, code: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn uninstall(store: &str, app_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     pub fn launch_info(store: &str, app_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_mb` is never read
[INFO] [stdout]    --> src/backend/external.rs:371:9
[INFO] [stdout]     |
[INFO] [stdout] 370 | pub struct LaunchOpts {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 371 |     pub max_mb: u32,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/backend/external.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 381 | impl MinecraftManager {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn available() -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn auth_config(client_id: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 439 |     pub fn auth_config_status() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 447 |     pub fn ely_refresh(account: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn ely_validate(account: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn mods_list() -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn mod_toggle(file: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     pub fn mods_add(path: &str, force: bool) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 652 |     pub fn addons_list(addon_type: &str) -> Result<serde_json::Value, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 895 |     pub fn spawn_install(version: String) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 899 |     pub fn spawn_launch(version: String, account: Option<String>, max_memory_mb: u32) -> mpsc::Receiver<PluginEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 912 |     pub fn java_candidates() -> Vec<PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `on_game_clicked` is never read
[INFO] [stdout]   --> src/ui/sidebar.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct Sidebar {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub on_game_clicked: GameCallback,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Sidebar` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_callbacks`, `get_filter`, `get_search_query`, and `select_game` are never used
[INFO] [stdout]    --> src/ui/sidebar.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl Sidebar {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  32 |     pub fn new(cfg: &ConfigManager, theme: &ThemeManager) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn set_callbacks(&self, on_game_clicked: GameCallback, on_filter_changed: FilterCallback) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 322 |     pub fn get_filter(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn get_search_query(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn select_game(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `play_button` is never read
[INFO] [stdout]   --> src/ui/details_panel.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct DetailsPanel {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     play_button: gtk::Button,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DetailsPanel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `show`, `set_title`, `set_banner`, `set_time_played`, and `set_favorited` are never used
[INFO] [stdout]    --> src/ui/details_panel.rs:407:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl DetailsPanel {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 407 |     pub fn show(&self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 416 |     pub fn set_title(&self, name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 420 |     pub fn set_banner(&self, path: Option<&str>) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 461 |     pub fn set_time_played(&self, seconds: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     pub fn set_favorited(&self, fav: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `game_name` and `parent` are never read
[INFO] [stdout]   --> src/ui/log_modal.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct LogModal {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     game_name: String,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 15 |     search_mark: gtk::TextMark,
[INFO] [stdout] 16 |     parent: gtk::Widget,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ModalMsg` is never used
[INFO] [stdout]  --> src/ui/proton_modal.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | enum ModalMsg {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ProtonModal` is never constructed
[INFO] [stdout]   --> src/ui/proton_modal.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct ProtonModal {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `present` are never used
[INFO] [stdout]    --> src/ui/proton_modal.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl ProtonModal {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new(proton: &ProtonManager) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn present(&self, parent: &impl IsA<gtk::Widget>) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pages` and `loader` are never read
[INFO] [stdout]     --> src/ui/stores_view.rs:1225:5
[INFO] [stdout]      |
[INFO] [stdout] 1221 | struct DealsState {
[INFO] [stdout]      |        ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1225 |     pages: Rc<std::cell::Cell<usize>>,
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout] 1226 |     loader: Rc<RefCell<Option<Rc<dyn Fn(u64)>>>>,
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `DealsState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/ui/settings.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let tag_poll = tag_dir.clone();
[INFO] [stdout]     |                           ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/ui/settings.rs:160:33
[INFO] [stdout]     |
[INFO] [stdout] 160 |             let tag_a = tag_poll.clone();
[INFO] [stdout]     |                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `str` does not implement `Clone`, so calling `clone` on `&str` copies the reference, which does not do anything and can be removed
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 22s
[INFO] running `Command { std: "docker" "inspect" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d", kill_on_drop: false }`
[INFO] [stdout] 127a3b6eef09f02d2f3ae98be4b95fc1d32af9b56696754f27c3990e7607e72d
