[INFO] cloning repository https://github.com/jaunkst/spotui
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jaunkst/spotui" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaunkst%2Fspotui", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaunkst%2Fspotui'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 630d19292c038b5c6fe46d334cfd5b2fdfe1ab60
[INFO] checking jaunkst/spotui against try#ed606620234c6b50f2414162c4bbabd5f4a925f3 for pr-147995
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjaunkst%2Fspotui" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jaunkst/spotui
[INFO] finished tweaking git repo https://github.com/jaunkst/spotui
[INFO] tweaked toml for git repo https://github.com/jaunkst/spotui written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jaunkst/spotui on toolchain ed606620234c6b50f2414162c4bbabd5f4a925f3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ed606620234c6b50f2414162c4bbabd5f4a925f3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jaunkst/spotui 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" "+ed606620234c6b50f2414162c4bbabd5f4a925f3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ed606620234c6b50f2414162c4bbabd5f4a925f3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 91e3e3051dbafca83df8d66bb5103c4646bb63f907e421e4a5ccc58bd02ed009
[INFO] running `Command { std: "docker" "start" "-a" "91e3e3051dbafca83df8d66bb5103c4646bb63f907e421e4a5ccc58bd02ed009", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "91e3e3051dbafca83df8d66bb5103c4646bb63f907e421e4a5ccc58bd02ed009", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "91e3e3051dbafca83df8d66bb5103c4646bb63f907e421e4a5ccc58bd02ed009", kill_on_drop: false }`
[INFO] [stdout] 91e3e3051dbafca83df8d66bb5103c4646bb63f907e421e4a5ccc58bd02ed009
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ed606620234c6b50f2414162c4bbabd5f4a925f3" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 99cbab765ae26d8e01e3b6c6dc2bf48c123b7fe2fa555e31779e2f6c6529115e
[INFO] running `Command { std: "docker" "start" "-a" "99cbab765ae26d8e01e3b6c6dc2bf48c123b7fe2fa555e31779e2f6c6529115e", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]    Compiling cc v1.2.30
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rustversion v1.0.21
[INFO] [stderr]    Compiling serde_json v1.0.141
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling built v0.7.7
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking socket2 v0.6.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking signal-hook v0.3.18
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking half v2.6.0
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking byteorder-lite v0.1.0
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking zune-jpeg v0.4.19
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking castaway v0.2.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking addr2line v0.24.2
[INFO] [stderr]     Checking object v0.36.7
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking rustc-demangle v0.1.25
[INFO] [stderr]     Checking rspotify-macros v0.15.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling clap_derive v3.2.25
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking tokio v1.46.1
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]    Compiling maybe-async v0.2.10
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling enum_dispatch v0.3.13
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]     Checking clap v3.2.25
[INFO] [stderr]     Checking backtrace v0.3.75
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling instability v0.3.9
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking strum v0.27.2
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking h2 v0.4.11
[INFO] [stderr]     Checking rspotify-model v0.15.0
[INFO] [stderr]     Checking webbrowser v1.0.5
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking arboard v3.6.0
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking reqwest v0.12.22
[INFO] [stderr]     Checking rspotify-http v0.15.0
[INFO] [stderr]     Checking rspotify v0.15.0
[INFO] [stderr]     Checking spotify-tui v0.25.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `PlaylistTracksRef` and `Show`
[INFO] [stdout]   --> src/app.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 |     playlist::{PlaylistTracksRef, SimplifiedPlaylist},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     show::{FullShow, Show, SimplifiedEpisode, SimplifiedShow},
[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::str::FromStr`
[INFO] [stdout]   --> src/app.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RgbaImage`
[INFO] [stdout]  --> src/album_art.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::{DynamicImage, GenericImageView, Rgba, RgbaImage};
[INFO] [stdout]   |                                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `common_key_events`
[INFO] [stdout]  --> src/handlers/playbar.rs:3:3
[INFO] [stdout]   |
[INFO] [stdout] 3 |   common_key_events,
[INFO] [stdout]   |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IoEvent` and `PlayingItem`
[INFO] [stdout]  --> src/handlers/playbar.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::network::{IoEvent, PlayingItem};
[INFO] [stdout]   |                      ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PlayableItem` and `context::CurrentPlaybackContext`
[INFO] [stdout]  --> src/handlers/playbar.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rspotify::model::{context::CurrentPlaybackContext, PlayableItem};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ActiveBlock`
[INFO] [stdout]  --> src/handlers/select_device.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |   super::app::{ActiveBlock, App},
[INFO] [stdout]   |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::network::PlayingItem`
[INFO] [stdout]   --> src/handlers/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::network::PlayingItem;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActiveBlock`, `AlbumTableContext`, `EpisodeTableContext`, `RouteId`, `SelectedAlbum`, `SelectedFullShow`, and `SelectedShow`
[INFO] [stdout]  --> src/network.rs:2:3
[INFO] [stdout]   |
[INFO] [stdout] 2 |   ActiveBlock, AlbumTableContext, App, Artist, ArtistBlock, EpisodeTableContext, RouteId,
[INFO] [stdout]   |   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 3 |   ScrollableResultPages, SelectedAlbum, SelectedFullAlbum, SelectedFullShow, SelectedShow,
[INFO] [stdout]   |                          ^^^^^^^^^^^^^                     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdditionalType`, `Country`, `CurrentPlaybackContext`, `FullAlbum`, `SavedTrack`, `SearchType`, `artist::FullArtist`, and `playlist::SimplifiedPlaylist`
[INFO] [stdout]   --> src/network.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 |     album::{SimplifiedAlbum, FullAlbum},
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 13 |     artist::FullArtist,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     page::Page,
[INFO] [stdout] 15 |     playlist::SimplifiedPlaylist,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     show::SimplifiedShow,
[INFO] [stdout] 17 |     track::{FullTrack, SavedTrack},
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     CurrentPlaybackContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     enums::{Country, RepeatState as SpotifyRepeatState, SearchType, AdditionalType},
[INFO] [stdout]    |             ^^^^^^^                                     ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, and `SystemTime`
[INFO] [stdout]   --> src/network.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 |   time::{Duration, Instant, SystemTime},
[INFO] [stdout]    |          ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `backend::Backend`
[INFO] [stdout]  --> src/ui/audio_analysis.rs:4:3
[INFO] [stdout]   |
[INFO] [stdout] 4 |   backend::Backend,
[INFO] [stdout]   |   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PlayingItem` and `RepeatState`
[INFO] [stdout]   --> src/ui/mod.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::network::{PlayingItem, RepeatState};
[INFO] [stdout]    |                      ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `symbols::border`
[INFO] [stdout]   --> src/ui/mod.rs:18:3
[INFO] [stdout]    |
[INFO] [stdout] 18 |   symbols::border,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]   --> src/main.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |   time::{Duration, Instant, SystemTime},
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/main.rs:42:17
[INFO] [stdout]    |
[INFO] [stdout] 42 |   panic::{self, PanicInfo},
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/main.rs:262:22
[INFO] [stdout]     |
[INFO] [stdout] 262 | fn panic_hook(info: &PanicInfo<'_>) {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PlaylistTracksRef` and `Show`
[INFO] [stdout]   --> src/app.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 |     playlist::{PlaylistTracksRef, SimplifiedPlaylist},
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     show::{FullShow, Show, SimplifiedEpisode, SimplifiedShow},
[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::str::FromStr`
[INFO] [stdout]   --> src/app.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use std::str::FromStr;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RgbaImage`
[INFO] [stdout]  --> src/album_art.rs:2:51
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::{DynamicImage, GenericImageView, Rgba, RgbaImage};
[INFO] [stdout]   |                                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `common_key_events`
[INFO] [stdout]  --> src/handlers/playbar.rs:3:3
[INFO] [stdout]   |
[INFO] [stdout] 3 |   common_key_events,
[INFO] [stdout]   |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IoEvent` and `PlayingItem`
[INFO] [stdout]  --> src/handlers/playbar.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::network::{IoEvent, PlayingItem};
[INFO] [stdout]   |                      ^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PlayableItem` and `context::CurrentPlaybackContext`
[INFO] [stdout]  --> src/handlers/playbar.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rspotify::model::{context::CurrentPlaybackContext, PlayableItem};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ActiveBlock`
[INFO] [stdout]  --> src/handlers/select_device.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |   super::app::{ActiveBlock, App},
[INFO] [stdout]   |                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::network::PlayingItem`
[INFO] [stdout]   --> src/handlers/mod.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::network::PlayingItem;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ActiveBlock`, `AlbumTableContext`, `EpisodeTableContext`, `RouteId`, `SelectedAlbum`, `SelectedFullShow`, and `SelectedShow`
[INFO] [stdout]  --> src/network.rs:2:3
[INFO] [stdout]   |
[INFO] [stdout] 2 |   ActiveBlock, AlbumTableContext, App, Artist, ArtistBlock, EpisodeTableContext, RouteId,
[INFO] [stdout]   |   ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 3 |   ScrollableResultPages, SelectedAlbum, SelectedFullAlbum, SelectedFullShow, SelectedShow,
[INFO] [stdout]   |                          ^^^^^^^^^^^^^                     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AdditionalType`, `Country`, `CurrentPlaybackContext`, `FullAlbum`, `SavedTrack`, `SearchType`, `artist::FullArtist`, and `playlist::SimplifiedPlaylist`
[INFO] [stdout]   --> src/network.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 |     album::{SimplifiedAlbum, FullAlbum},
[INFO] [stdout]    |                              ^^^^^^^^^
[INFO] [stdout] 13 |     artist::FullArtist,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     page::Page,
[INFO] [stdout] 15 |     playlist::SimplifiedPlaylist,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     show::SimplifiedShow,
[INFO] [stdout] 17 |     track::{FullTrack, SavedTrack},
[INFO] [stdout]    |                        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     CurrentPlaybackContext,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     enums::{Country, RepeatState as SpotifyRepeatState, SearchType, AdditionalType},
[INFO] [stdout]    |             ^^^^^^^                                     ^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, and `SystemTime`
[INFO] [stdout]   --> src/network.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 27 |   time::{Duration, Instant, SystemTime},
[INFO] [stdout]    |          ^^^^^^^^  ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `backend::Backend`
[INFO] [stdout]  --> src/ui/audio_analysis.rs:4:3
[INFO] [stdout]   |
[INFO] [stdout] 4 |   backend::Backend,
[INFO] [stdout]   |   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PlayingItem` and `RepeatState`
[INFO] [stdout]   --> src/ui/mod.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::network::{PlayingItem, RepeatState};
[INFO] [stdout]    |                      ^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `symbols::border`
[INFO] [stdout]   --> src/ui/mod.rs:18:3
[INFO] [stdout]    |
[INFO] [stdout] 18 |   symbols::border,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]   --> src/main.rs:45:10
[INFO] [stdout]    |
[INFO] [stdout] 45 |   time::{Duration, Instant, SystemTime},
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]   --> src/main.rs:42:17
[INFO] [stdout]    |
[INFO] [stdout] 42 |   panic::{self, PanicInfo},
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated type alias `std::panic::PanicInfo`: use `PanicHookInfo` instead
[INFO] [stdout]    --> src/main.rs:262:22
[INFO] [stdout]     |
[INFO] [stdout] 262 | fn panic_hook(info: &PanicInfo<'_>) {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/network.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let mut app = self.app.lock().await;
[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/network.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let mut app = self.app.lock().await;
[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: use of deprecated method `rspotify::clients::BaseClient::artist_related_artists`: Spotify has deprecated this endpoint, check documentation for more information
[INFO] [stdout]     --> src/network.rs:1419:50
[INFO] [stdout]      |
[INFO] [stdout] 1419 |         let related_artists = match self.spotify.artist_related_artists(artist_id).await {
[INFO] [stdout]      |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:91:7
[INFO] [stdout]    |
[INFO] [stdout] 91 |   let mut spotify = AuthCodeSpotify::new(creds, oauth);
[INFO] [stdout]    |       ----^^^^^^^
[INFO] [stdout]    |       |
[INFO] [stdout]    |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rspotify::clients::BaseClient::artist_related_artists`: Spotify has deprecated this endpoint, check documentation for more information
[INFO] [stdout]     --> src/network.rs:1419:50
[INFO] [stdout]      |
[INFO] [stdout] 1419 |         let related_artists = match self.spotify.artist_related_artists(artist_id).await {
[INFO] [stdout]      |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:91:7
[INFO] [stdout]    |
[INFO] [stdout] 91 |   let mut spotify = AuthCodeSpotify::new(creds, oauth);
[INFO] [stdout]    |       ----^^^^^^^
[INFO] [stdout]    |       |
[INFO] [stdout]    |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `rspotify::rspotify_model::SimplifiedEpisode::language`: This `language` field is deprecated and might be removed in the future by Spotify. Please use the languages field instead
[INFO] [stdout]    --> src/network.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 |           language: episode.language,
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `rspotify::rspotify_model::FullEpisode::language`: This `language` field is deprecated and might be removed in the future by Spotify. Please use the languages field instead
[INFO] [stdout]    --> src/network.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |           language: episode.language,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `rspotify::rspotify_model::SimplifiedEpisode::language`: This `language` field is deprecated and might be removed in the future by Spotify. Please use the languages field instead
[INFO] [stdout]    --> src/network.rs:103:11
[INFO] [stdout]     |
[INFO] [stdout] 103 |           language: episode.language,
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated field `rspotify::rspotify_model::FullEpisode::language`: This `language` field is deprecated and might be removed in the future by Spotify. Please use the languages field instead
[INFO] [stdout]    --> src/network.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |           language: episode.language,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/ui/mod.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |   backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seed_artists`
[INFO] [stdout]    --> src/app.rs:582:5
[INFO] [stdout]     |
[INFO] [stdout] 582 |     seed_artists: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seed_artists`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seed_tracks`
[INFO] [stdout]    --> src/app.rs:583:5
[INFO] [stdout]     |
[INFO] [stdout] 583 |     seed_tracks: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seed_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_track`
[INFO] [stdout]    --> src/app.rs:584:5
[INFO] [stdout]     |
[INFO] [stdout] 584 |     first_track: Option<FullTrack>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]    --> src/app.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |     let user_country = self.get_user_country();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/app.rs:595:54
[INFO] [stdout]     |
[INFO] [stdout] 595 |   pub fn get_recommendations_for_track_id(&mut self, id: String) {
[INFO] [stdout]     |                                                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]    --> src/app.rs:596:9
[INFO] [stdout]     |
[INFO] [stdout] 596 |     let user_country = self.get_user_country();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/app.rs:818:9
[INFO] [stdout]     |
[INFO] [stdout] 818 |     let mut current_route = self.get_current_route_mut();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `saved_track_page`
[INFO] [stdout]    --> src/app.rs:889:47
[INFO] [stdout]     |
[INFO] [stdout] 889 |   pub fn set_saved_tracks_to_table(&mut self, saved_track_page: &Page<SavedTrack>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_track_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `saved_artists_page`
[INFO] [stdout]    --> src/app.rs:900:48
[INFO] [stdout]     |
[INFO] [stdout] 900 |   pub fn set_saved_artists_to_table(&mut self, saved_artists_page: &CursorBasedPage<FullArtist>) {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_artists_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_artist`
[INFO] [stdout]    --> src/app.rs:923:23
[INFO] [stdout]     |
[INFO] [stdout] 923 |           if let Some(last_artist) = saved_artists.items.last() {
[INFO] [stdout]     |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_artist`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/app.rs:955:15
[INFO] [stdout]     |
[INFO] [stdout] 955 |           let offset = Some(saved_tracks.offset + saved_tracks.limit);
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/app.rs:988:15
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let offset = Some(saved_albums.offset + saved_albums.limit);
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1007:25
[INFO] [stdout]      |
[INFO] [stdout] 1007 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1016:17
[INFO] [stdout]      |
[INFO] [stdout] 1016 |             let album_id = selected_album.album.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1024:25
[INFO] [stdout]      |
[INFO] [stdout] 1024 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1040:25
[INFO] [stdout]      |
[INFO] [stdout] 1040 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1049:25
[INFO] [stdout]      |
[INFO] [stdout] 1049 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/app.rs:1069:15
[INFO] [stdout]      |
[INFO] [stdout] 1069 |           let offset = Some(saved_shows.offset + saved_shows.limit);
[INFO] [stdout]      |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1082:44
[INFO] [stdout]      |
[INFO] [stdout] 1082 |   pub fn get_episode_table_next(&mut self, show_id: String) {
[INFO] [stdout]      |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/app.rs:1092:15
[INFO] [stdout]      |
[INFO] [stdout] 1092 |           let offset = Some(show_episodes.offset + show_episodes.limit);
[INFO] [stdout]      |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1111:17
[INFO] [stdout]      |
[INFO] [stdout] 1111 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1119:17
[INFO] [stdout]      |
[INFO] [stdout] 1119 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1127:15
[INFO] [stdout]      |
[INFO] [stdout] 1127 |           let artist_id = selected_artis.id.to_string();
[INFO] [stdout]      |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1141:17
[INFO] [stdout]      |
[INFO] [stdout] 1141 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1149:15
[INFO] [stdout]      |
[INFO] [stdout] 1149 |           let artist_id = selected_artis.id.to_string();
[INFO] [stdout]      |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1165:11
[INFO] [stdout]      |
[INFO] [stdout] 1165 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_public`
[INFO] [stdout]     --> src/app.rs:1166:11
[INFO] [stdout]      |
[INFO] [stdout] 1166 |       let selected_public = selected_playlist.public;
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_public`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_owner_id`
[INFO] [stdout]     --> src/app.rs:1167:11
[INFO] [stdout]      |
[INFO] [stdout] 1167 |       let selected_owner_id = selected_playlist.owner.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_owner_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1181:11
[INFO] [stdout]      |
[INFO] [stdout] 1181 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]     --> src/app.rs:1182:11
[INFO] [stdout]      |
[INFO] [stdout] 1182 |       let user_id = user.id.clone();
[INFO] [stdout]      |           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1194:11
[INFO] [stdout]      |
[INFO] [stdout] 1194 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]     --> src/app.rs:1195:11
[INFO] [stdout]      |
[INFO] [stdout] 1195 |       let user_id = user.id.clone();
[INFO] [stdout]      |           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1205:25
[INFO] [stdout]      |
[INFO] [stdout] 1205 |             if let Some(show_id) = shows.items.get(selected_index).map(|item| item.id.clone()) {
[INFO] [stdout]      |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1214:17
[INFO] [stdout]      |
[INFO] [stdout] 1214 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1220:17
[INFO] [stdout]      |
[INFO] [stdout] 1220 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1234:17
[INFO] [stdout]      |
[INFO] [stdout] 1234 |             let show_id = selected_show.id.clone();
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1242:17
[INFO] [stdout]      |
[INFO] [stdout] 1242 |             let show_id = shows.items[selected_index].id.to_owned();
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1250:17
[INFO] [stdout]      |
[INFO] [stdout] 1250 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1256:17
[INFO] [stdout]      |
[INFO] [stdout] 1256 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_artist_name`
[INFO] [stdout]     --> src/app.rs:1293:51
[INFO] [stdout]      |
[INFO] [stdout] 1293 |   pub fn get_artist(&mut self, artist_id: String, input_artist_name: String) {
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_artist_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]     --> src/app.rs:1294:9
[INFO] [stdout]      |
[INFO] [stdout] 1294 |     let user_country = self.get_user_country();
[INFO] [stdout]      |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Backend`
[INFO] [stdout]   --> src/ui/mod.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 |   backend::{Backend, CrosstermBackend},
[INFO] [stdout]    |             ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seed_artists`
[INFO] [stdout]    --> src/app.rs:582:5
[INFO] [stdout]     |
[INFO] [stdout] 582 |     seed_artists: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seed_artists`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `seed_tracks`
[INFO] [stdout]    --> src/app.rs:583:5
[INFO] [stdout]     |
[INFO] [stdout] 583 |     seed_tracks: Option<Vec<String>>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seed_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_track`
[INFO] [stdout]    --> src/app.rs:584:5
[INFO] [stdout]     |
[INFO] [stdout] 584 |     first_track: Option<FullTrack>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_track`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]    --> src/app.rs:586:9
[INFO] [stdout]     |
[INFO] [stdout] 586 |     let user_country = self.get_user_country();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `id`
[INFO] [stdout]    --> src/app.rs:595:54
[INFO] [stdout]     |
[INFO] [stdout] 595 |   pub fn get_recommendations_for_track_id(&mut self, id: String) {
[INFO] [stdout]     |                                                      ^^ help: if this is intentional, prefix it with an underscore: `_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]    --> src/app.rs:596:9
[INFO] [stdout]     |
[INFO] [stdout] 596 |     let user_country = self.get_user_country();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/app.rs:818:9
[INFO] [stdout]     |
[INFO] [stdout] 818 |     let mut current_route = self.get_current_route_mut();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `saved_track_page`
[INFO] [stdout]    --> src/app.rs:889:47
[INFO] [stdout]     |
[INFO] [stdout] 889 |   pub fn set_saved_tracks_to_table(&mut self, saved_track_page: &Page<SavedTrack>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_track_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `saved_artists_page`
[INFO] [stdout]    --> src/app.rs:900:48
[INFO] [stdout]     |
[INFO] [stdout] 900 |   pub fn set_saved_artists_to_table(&mut self, saved_artists_page: &CursorBasedPage<FullArtist>) {
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_saved_artists_page`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `last_artist`
[INFO] [stdout]    --> src/app.rs:923:23
[INFO] [stdout]     |
[INFO] [stdout] 923 |           if let Some(last_artist) = saved_artists.items.last() {
[INFO] [stdout]     |                       ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_last_artist`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/app.rs:955:15
[INFO] [stdout]     |
[INFO] [stdout] 955 |           let offset = Some(saved_tracks.offset + saved_tracks.limit);
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/app.rs:988:15
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let offset = Some(saved_albums.offset + saved_albums.limit);
[INFO] [stdout]     |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1007:25
[INFO] [stdout]      |
[INFO] [stdout] 1007 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1016:17
[INFO] [stdout]      |
[INFO] [stdout] 1016 |             let album_id = selected_album.album.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1024:25
[INFO] [stdout]      |
[INFO] [stdout] 1024 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1040:25
[INFO] [stdout]      |
[INFO] [stdout] 1040 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]     --> src/app.rs:1049:25
[INFO] [stdout]      |
[INFO] [stdout] 1049 |             if let Some(album_id) = selected_album.id.as_ref().map(|id| id.to_string()) {
[INFO] [stdout]      |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/app.rs:1069:15
[INFO] [stdout]      |
[INFO] [stdout] 1069 |           let offset = Some(saved_shows.offset + saved_shows.limit);
[INFO] [stdout]      |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1082:44
[INFO] [stdout]      |
[INFO] [stdout] 1082 |   pub fn get_episode_table_next(&mut self, show_id: String) {
[INFO] [stdout]      |                                            ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]     --> src/app.rs:1092:15
[INFO] [stdout]      |
[INFO] [stdout] 1092 |           let offset = Some(show_episodes.offset + show_episodes.limit);
[INFO] [stdout]      |               ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1111:17
[INFO] [stdout]      |
[INFO] [stdout] 1111 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1119:17
[INFO] [stdout]      |
[INFO] [stdout] 1119 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1127:15
[INFO] [stdout]      |
[INFO] [stdout] 1127 |           let artist_id = selected_artis.id.to_string();
[INFO] [stdout]      |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1141:17
[INFO] [stdout]      |
[INFO] [stdout] 1141 |             let artist_id = selected_artist.id.to_string();
[INFO] [stdout]      |                 ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `artist_id`
[INFO] [stdout]     --> src/app.rs:1149:15
[INFO] [stdout]      |
[INFO] [stdout] 1149 |           let artist_id = selected_artis.id.to_string();
[INFO] [stdout]      |               ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_artist_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1165:11
[INFO] [stdout]      |
[INFO] [stdout] 1165 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_public`
[INFO] [stdout]     --> src/app.rs:1166:11
[INFO] [stdout]      |
[INFO] [stdout] 1166 |       let selected_public = selected_playlist.public;
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_public`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_owner_id`
[INFO] [stdout]     --> src/app.rs:1167:11
[INFO] [stdout]      |
[INFO] [stdout] 1167 |       let selected_owner_id = selected_playlist.owner.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_owner_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1181:11
[INFO] [stdout]      |
[INFO] [stdout] 1181 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]     --> src/app.rs:1182:11
[INFO] [stdout]      |
[INFO] [stdout] 1182 |       let user_id = user.id.clone();
[INFO] [stdout]      |           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `selected_id`
[INFO] [stdout]     --> src/app.rs:1194:11
[INFO] [stdout]      |
[INFO] [stdout] 1194 |       let selected_id = selected_playlist.id.to_string();
[INFO] [stdout]      |           ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_selected_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_id`
[INFO] [stdout]     --> src/app.rs:1195:11
[INFO] [stdout]      |
[INFO] [stdout] 1195 |       let user_id = user.id.clone();
[INFO] [stdout]      |           ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1205:25
[INFO] [stdout]      |
[INFO] [stdout] 1205 |             if let Some(show_id) = shows.items.get(selected_index).map(|item| item.id.clone()) {
[INFO] [stdout]      |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1214:17
[INFO] [stdout]      |
[INFO] [stdout] 1214 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1220:17
[INFO] [stdout]      |
[INFO] [stdout] 1220 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1234:17
[INFO] [stdout]      |
[INFO] [stdout] 1234 |             let show_id = selected_show.id.clone();
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1242:17
[INFO] [stdout]      |
[INFO] [stdout] 1242 |             let show_id = shows.items[selected_index].id.to_owned();
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1250:17
[INFO] [stdout]      |
[INFO] [stdout] 1250 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `episode_uris`
[INFO] [stdout]   --> src/handlers/episode_table.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let episode_uris = episodes
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_episode_uris`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show_id`
[INFO] [stdout]     --> src/app.rs:1256:17
[INFO] [stdout]      |
[INFO] [stdout] 1256 |             let show_id = selected_episode.show.id;
[INFO] [stdout]      |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_show_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input_artist_name`
[INFO] [stdout]     --> src/app.rs:1293:51
[INFO] [stdout]      |
[INFO] [stdout] 1293 |   pub fn get_artist(&mut self, artist_id: String, input_artist_name: String) {
[INFO] [stdout]      |                                                   ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_input_artist_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_country`
[INFO] [stdout]     --> src/app.rs:1294:9
[INFO] [stdout]      |
[INFO] [stdout] 1294 |     let user_country = self.get_user_country();
[INFO] [stdout]      |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_country`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/handlers/search_results.rs:300:11
[INFO] [stdout]     |
[INFO] [stdout] 300 |       let index = app.search_results.selected_tracks_index;
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_uris`
[INFO] [stdout]    --> src/handlers/search_results.rs:302:11
[INFO] [stdout]     |
[INFO] [stdout] 302 |       let track_uris = tracks.map(|tracks| {
[INFO] [stdout]     |           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_uris`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_tracks`
[INFO] [stdout]    --> src/handlers/track_table.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |           let num_tracks: usize = from_value(val.clone()).unwrap();
[INFO] [stdout]     |               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_tracks`
[INFO] [stdout]    --> src/handlers/track_table.rs:182:15
[INFO] [stdout]     |
[INFO] [stdout] 182 |           let num_tracks: usize = from_value(val.clone()).unwrap();
[INFO] [stdout]     |               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_playback_context`
[INFO] [stdout]    --> src/handlers/mod.rs:277:15
[INFO] [stdout]     |
[INFO] [stdout] 277 |   if let Some(current_playback_context) = &app.current_playback_context {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_playback_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]    --> src/network.rs:234:41
[INFO] [stdout]     |
[INFO] [stdout] 234 |       IoEvent::CurrentUserSavedAlbumAdd(album_id) => {
[INFO] [stdout]     |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show`
[INFO] [stdout]    --> src/network.rs:238:32
[INFO] [stdout]     |
[INFO] [stdout] 238 |       IoEvent::GetShowEpisodes(show) => {
[INFO] [stdout]     |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_show`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]    --> src/network.rs:248:25
[INFO] [stdout]     |
[INFO] [stdout] 248 |       IoEvent::GetAlbum(album_id) => {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_id`
[INFO] [stdout]    --> src/network.rs:252:33
[INFO] [stdout]     |
[INFO] [stdout] 252 |       IoEvent::GetAlbumForTrack(track_id) => {
[INFO] [stdout]     |                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/network.rs:337:10
[INFO] [stdout]     |
[INFO] [stdout] 337 |       Ok(user) => {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/network.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let mut app = self.app.lock().await;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network.rs:377:11
[INFO] [stdout]     |
[INFO] [stdout] 377 |       Err(e) => {
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/network.rs:1092:15
[INFO] [stdout]      |
[INFO] [stdout] 1092 |           Err(e) => {
[INFO] [stdout]      |               ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/network.rs:388:62
[INFO] [stdout]     |
[INFO] [stdout] 388 |   async fn get_playlist_tracks(&mut self, playlist_id: &str, offset: u32) {
[INFO] [stdout]     |                                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `episode_uris`
[INFO] [stdout]   --> src/handlers/episode_table.rs:69:9
[INFO] [stdout]    |
[INFO] [stdout] 69 |     let episode_uris = episodes
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_episode_uris`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/handlers/search_results.rs:300:11
[INFO] [stdout]     |
[INFO] [stdout] 300 |       let index = app.search_results.selected_tracks_index;
[INFO] [stdout]     |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_uris`
[INFO] [stdout]    --> src/handlers/search_results.rs:302:11
[INFO] [stdout]     |
[INFO] [stdout] 302 |       let track_uris = tracks.map(|tracks| {
[INFO] [stdout]     |           ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_uris`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_tracks`
[INFO] [stdout]    --> src/handlers/track_table.rs:134:15
[INFO] [stdout]     |
[INFO] [stdout] 134 |           let num_tracks: usize = from_value(val.clone()).unwrap();
[INFO] [stdout]     |               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_tracks`
[INFO] [stdout]    --> src/handlers/track_table.rs:182:15
[INFO] [stdout]     |
[INFO] [stdout] 182 |           let num_tracks: usize = from_value(val.clone()).unwrap();
[INFO] [stdout]     |               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_tracks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_playback_context`
[INFO] [stdout]    --> src/handlers/mod.rs:277:15
[INFO] [stdout]     |
[INFO] [stdout] 277 |   if let Some(current_playback_context) = &app.current_playback_context {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_playback_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]    --> src/network.rs:234:41
[INFO] [stdout]     |
[INFO] [stdout] 234 |       IoEvent::CurrentUserSavedAlbumAdd(album_id) => {
[INFO] [stdout]     |                                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `show`
[INFO] [stdout]    --> src/network.rs:238:32
[INFO] [stdout]     |
[INFO] [stdout] 238 |       IoEvent::GetShowEpisodes(show) => {
[INFO] [stdout]     |                                ^^^^ help: if this is intentional, prefix it with an underscore: `_show`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `album_id`
[INFO] [stdout]    --> src/network.rs:248:25
[INFO] [stdout]     |
[INFO] [stdout] 248 |       IoEvent::GetAlbum(album_id) => {
[INFO] [stdout]     |                         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_album_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track_id`
[INFO] [stdout]    --> src/network.rs:252:33
[INFO] [stdout]     |
[INFO] [stdout] 252 |       IoEvent::GetAlbumForTrack(track_id) => {
[INFO] [stdout]     |                                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_track_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/network.rs:337:10
[INFO] [stdout]     |
[INFO] [stdout] 337 |       Ok(user) => {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app`
[INFO] [stdout]    --> src/network.rs:338:13
[INFO] [stdout]     |
[INFO] [stdout] 338 |         let mut app = self.app.lock().await;
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/network.rs:377:11
[INFO] [stdout]     |
[INFO] [stdout] 377 |       Err(e) => {
[INFO] [stdout]     |           ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]     --> src/network.rs:1092:15
[INFO] [stdout]      |
[INFO] [stdout] 1092 |           Err(e) => {
[INFO] [stdout]      |               ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> src/network.rs:388:62
[INFO] [stdout]     |
[INFO] [stdout] 388 |   async fn get_playlist_tracks(&mut self, playlist_id: &str, offset: u32) {
[INFO] [stdout]     |                                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:296:7
[INFO] [stdout]     |
[INFO] [stdout] 296 |   let mut clap_app = Command::new(env!("CARGO_PKG_NAME"))
[INFO] [stdout]     |       ----^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_paths`
[INFO] [stdout]    --> src/main.rs:379:7
[INFO] [stdout]     |
[INFO] [stdout] 379 |   let config_paths = client_config.get_or_build_paths()?;
[INFO] [stdout]     |       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_paths`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Error` is never constructed
[INFO] [stdout]    --> src/app.rs:129:3
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub enum ActiveBlock {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 129 |   Error,
[INFO] [stdout]     |   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActiveBlock` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error`, `PodcastEpisodes`, and `Recommendations` are never constructed
[INFO] [stdout]    --> src/app.rs:153:3
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub enum RouteId {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 153 |   Error,
[INFO] [stdout]     |   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |   PodcastEpisodes,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |   Recommendations,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RouteId` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RecommendedTracks` is never constructed
[INFO] [stdout]    --> src/app.rs:182:3
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub enum TrackTableContext {
[INFO] [stdout]     |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 182 |   RecommendedTracks,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TrackTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simplified` is never constructed
[INFO] [stdout]    --> src/app.rs:188:3
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub enum AlbumTableContext {
[INFO] [stdout]     |          ----------------- variant in this enum
[INFO] [stdout] 188 |   Simplified,
[INFO] [stdout]     |   ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AlbumTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simplified` is never constructed
[INFO] [stdout]    --> src/app.rs:194:3
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub enum EpisodeTableContext {
[INFO] [stdout]     |          ------------------- variant in this enum
[INFO] [stdout] 194 |   Simplified,
[INFO] [stdout]     |   ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EpisodeTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `selected_index` is never read
[INFO] [stdout]    --> src/app.rs:246:7
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct SelectedFullAlbum {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 245 |   pub album: FullAlbum,
[INFO] [stdout] 246 |   pub selected_index: usize,
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SelectedFullAlbum` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `small_search_limit` is never read
[INFO] [stdout]    --> src/app.rs:314:7
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 314 |   pub small_search_limit: u32,
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:1308:10
[INFO] [stdout]      |
[INFO] [stdout]  439 | impl App {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1308 |   pub fn focus_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1313 |   pub fn hover_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1318 |   pub fn navigate_to_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1333 |   pub fn clear_hover(&mut self) {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1343 |   pub fn get_component_focus_state(&self, component: &ComponentId) -> FocusState {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1348 |   pub fn is_component_focused(&self, component: &ComponentId) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1353 |   pub fn is_component_hovered(&self, component: &ComponentId) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1358 |   pub fn get_focused_component(&self) -> Option<&ComponentId> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1363 |   pub fn get_hovered_component(&self) -> Option<&ComponentId> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pixelated_art` is never used
[INFO] [stdout]    --> src/album_art.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn render_pixelated_art(art: &PixelatedAlbumArt) -> Vec<Vec<(String, Color)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `exit_key` is never read
[INFO] [stdout]   --> src/event/events.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct EventConfig {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 16 |   /// The key that is used to exit the application.
[INFO] [stdout] 17 |   pub exit_key: Key,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EventConfig` 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: method `try_next` is never used
[INFO] [stdout]    --> src/event/events.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl Events {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |   pub fn try_next(&self) -> Result<Event<Key>, TryRecvError> {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/focus_manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ComponentId {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Artist(ArtistBlock),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     TrackTable,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 22 |     EpisodeTable,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     AlbumList,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     AlbumTracks,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     RecentlyPlayed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     Artists,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 27 |     Podcasts,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     Home,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 29 |     SelectDevice,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 30 |     PlayBar,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 31 |     BasicView,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 32 |     LogStream,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 33 |     Analysis,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 34 |     Dialog,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 35 |     Empty,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComponentId` 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 items `get_focused`, `get_hovered`, `navigate_to`, `from_active_block`, and `to_active_block` are never used
[INFO] [stdout]    --> src/focus_manager.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl FocusManager {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_focused(&self) -> Option<&ComponentId> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_hovered(&self) -> Option<&ComponentId> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn navigate_to(&mut self, component: ComponentId) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn from_active_block(block: ActiveBlock) -> ComponentId {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn to_active_block(&self, component: &ComponentId) -> ActiveBlock {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 |   GetShow(String),
[INFO] [stdout]    |   ------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 46 -   GetShow(String),
[INFO] [stdout] 46 +   GetShow(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 49 |   GetSearchResults(String),
[INFO] [stdout]    |   ---------------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 49 -   GetSearchResults(String),
[INFO] [stdout] 49 +   GetSearchResults(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |   GetAudioAnalysis(String),
[INFO] [stdout]    |   ---------------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 63 -   GetAudioAnalysis(String),
[INFO] [stdout] 63 +   GetAudioAnalysis(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `GetArtistAlbums`, `GetEpisodes`, `GetRecommendations`, `VolumeUp`, and `VolumeDown` are never constructed
[INFO] [stdout]   --> src/network.rs:45:3
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum IoEvent {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |   GetArtistAlbums(String),
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |   GetShow(String),
[INFO] [stdout] 47 |   GetEpisodes(String),
[INFO] [stdout]    |   ^^^^^^^^^^^
[INFO] [stdout] 48 |   GetRecommendations(String, String, String, String, String),
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |   VolumeUp,
[INFO] [stdout]    |   ^^^^^^^^
[INFO] [stdout] 58 |   VolumeDown,
[INFO] [stdout]    |   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlayingItem` is never used
[INFO] [stdout]   --> src/network.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum PlayingItem {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_styled_block` is never used
[INFO] [stdout]   --> src/ui/mod.rs:76:4
[INFO] [stdout]    |
[INFO] [stdout] 76 | fn create_styled_block<'a>(title: &'a str, highlight_color: Color) -> Block<'a> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_album_art` is never used
[INFO] [stdout]     --> src/ui/mod.rs:2359:4
[INFO] [stdout]      |
[INFO] [stdout] 2359 | fn draw_album_art(f: &mut Frame, app: &App, layout_chunk: Rect) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/main.rs:501:48
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let current_route = app.get_current_route().clone();
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Route` does not implement `Clone`, so calling `clone` on `&Route` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 501 -     let current_route = app.get_current_route().clone();
[INFO] [stdout] 501 +     let current_route = app.get_current_route();
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Route`, implement `Clone` for it
[INFO] [stdout]    --> src/app.rs:168:1
[INFO] [stdout]     |
[INFO] [stdout] 168 + #[derive(Clone)]
[INFO] [stdout] 169 | pub struct Route {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:296:7
[INFO] [stdout]     |
[INFO] [stdout] 296 |   let mut clap_app = Command::new(env!("CARGO_PKG_NAME"))
[INFO] [stdout]     |       ----^^^^^^^^
[INFO] [stdout]     |       |
[INFO] [stdout]     |       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config_paths`
[INFO] [stdout]    --> src/main.rs:379:7
[INFO] [stdout]     |
[INFO] [stdout] 379 |   let config_paths = client_config.get_or_build_paths()?;
[INFO] [stdout]     |       ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_config_paths`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PlayBar` and `Error` are never constructed
[INFO] [stdout]    --> src/app.rs:124:3
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub enum ActiveBlock {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 123 |   Analysis,
[INFO] [stdout] 124 |   PlayBar,
[INFO] [stdout]     |   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |   Error,
[INFO] [stdout]     |   ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ActiveBlock` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error`, `PodcastEpisodes`, and `Recommendations` are never constructed
[INFO] [stdout]    --> src/app.rs:153:3
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub enum RouteId {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 153 |   Error,
[INFO] [stdout]     |   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |   PodcastEpisodes,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |   Recommendations,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RouteId` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RecommendedTracks` is never constructed
[INFO] [stdout]    --> src/app.rs:182:3
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub enum TrackTableContext {
[INFO] [stdout]     |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 182 |   RecommendedTracks,
[INFO] [stdout]     |   ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TrackTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simplified` is never constructed
[INFO] [stdout]    --> src/app.rs:188:3
[INFO] [stdout]     |
[INFO] [stdout] 187 | pub enum AlbumTableContext {
[INFO] [stdout]     |          ----------------- variant in this enum
[INFO] [stdout] 188 |   Simplified,
[INFO] [stdout]     |   ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AlbumTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simplified` is never constructed
[INFO] [stdout]    --> src/app.rs:194:3
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub enum EpisodeTableContext {
[INFO] [stdout]     |          ------------------- variant in this enum
[INFO] [stdout] 194 |   Simplified,
[INFO] [stdout]     |   ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EpisodeTableContext` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `selected_index` is never read
[INFO] [stdout]    --> src/app.rs:246:7
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct SelectedFullAlbum {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 245 |   pub album: FullAlbum,
[INFO] [stdout] 246 |   pub selected_index: usize,
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SelectedFullAlbum` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `small_search_limit` is never read
[INFO] [stdout]    --> src/app.rs:314:7
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct App {
[INFO] [stdout]     |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 314 |   pub small_search_limit: u32,
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/app.rs:1308:10
[INFO] [stdout]      |
[INFO] [stdout]  439 | impl App {
[INFO] [stdout]      | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1308 |   pub fn focus_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1313 |   pub fn hover_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1318 |   pub fn navigate_to_component(&mut self, component: ComponentId) {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1333 |   pub fn clear_hover(&mut self) {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1343 |   pub fn get_component_focus_state(&self, component: &ComponentId) -> FocusState {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1348 |   pub fn is_component_focused(&self, component: &ComponentId) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1353 |   pub fn is_component_hovered(&self, component: &ComponentId) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1358 |   pub fn get_focused_component(&self) -> Option<&ComponentId> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1363 |   pub fn get_hovered_component(&self) -> Option<&ComponentId> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_pixelated_art` is never used
[INFO] [stdout]    --> src/album_art.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn render_pixelated_art(art: &PixelatedAlbumArt) -> Vec<Vec<(String, Color)>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `exit_key` is never read
[INFO] [stdout]   --> src/event/events.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct EventConfig {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 16 |   /// The key that is used to exit the application.
[INFO] [stdout] 17 |   pub exit_key: Key,
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EventConfig` 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: method `try_next` is never used
[INFO] [stdout]    --> src/event/events.rs:148:10
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl Events {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 148 |   pub fn try_next(&self) -> Result<Event<Key>, TryRecvError> {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FocusState` is never used
[INFO] [stdout]  --> src/focus_manager.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum FocusState {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/focus_manager.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum ComponentId {
[INFO] [stdout]    |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 20 |     Artist(ArtistBlock),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 21 |     TrackTable,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 22 |     EpisodeTable,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 23 |     AlbumList,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 24 |     AlbumTracks,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 25 |     RecentlyPlayed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     Artists,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 27 |     Podcasts,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 28 |     Home,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 29 |     SelectDevice,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 30 |     PlayBar,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 31 |     BasicView,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 32 |     LogStream,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 33 |     Analysis,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 34 |     Dialog,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 35 |     Empty,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ComponentId` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/focus_manager.rs:68:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl FocusManager {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn set_hover(&mut self, component: ComponentId) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn clear_hover(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn get_focus_state(&self, component: &ComponentId) -> FocusState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_focused(&self, component: &ComponentId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn is_hovered(&self, component: &ComponentId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_focused(&self) -> Option<&ComponentId> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn get_hovered(&self) -> Option<&ComponentId> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn navigate_to(&mut self, component: ComponentId) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn from_active_block(block: ActiveBlock) -> ComponentId {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn to_active_block(&self, component: &ComponentId) -> ActiveBlock {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 |   GetShow(String),
[INFO] [stdout]    |   ------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 46 -   GetShow(String),
[INFO] [stdout] 46 +   GetShow(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:49:20
[INFO] [stdout]    |
[INFO] [stdout] 49 |   GetSearchResults(String),
[INFO] [stdout]    |   ---------------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 49 -   GetSearchResults(String),
[INFO] [stdout] 49 +   GetSearchResults(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/network.rs:63:20
[INFO] [stdout]    |
[INFO] [stdout] 63 |   GetAudioAnalysis(String),
[INFO] [stdout]    |   ---------------- ^^^^^^
[INFO] [stdout]    |   |
[INFO] [stdout]    |   field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 63 -   GetAudioAnalysis(String),
[INFO] [stdout] 63 +   GetAudioAnalysis(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `GetArtistAlbums`, `GetEpisodes`, `GetRecommendations`, `VolumeUp`, and `VolumeDown` are never constructed
[INFO] [stdout]   --> src/network.rs:45:3
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum IoEvent {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 45 |   GetArtistAlbums(String),
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 46 |   GetShow(String),
[INFO] [stdout] 47 |   GetEpisodes(String),
[INFO] [stdout]    |   ^^^^^^^^^^^
[INFO] [stdout] 48 |   GetRecommendations(String, String, String, String, String),
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |   VolumeUp,
[INFO] [stdout]    |   ^^^^^^^^
[INFO] [stdout] 58 |   VolumeDown,
[INFO] [stdout]    |   ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IoEvent` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlayingItem` is never used
[INFO] [stdout]   --> src/network.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub enum PlayingItem {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_styled_block` is never used
[INFO] [stdout]   --> src/ui/mod.rs:76:4
[INFO] [stdout]    |
[INFO] [stdout] 76 | fn create_styled_block<'a>(title: &'a str, highlight_color: Color) -> Block<'a> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_album_art` is never used
[INFO] [stdout]     --> src/ui/mod.rs:2359:4
[INFO] [stdout]      |
[INFO] [stdout] 2359 | fn draw_album_art(f: &mut Frame, app: &App, layout_chunk: Rect) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_track_progress` is never used
[INFO] [stdout]   --> src/ui/util.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn display_track_progress(progress: u128, track_duration: u32) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]    --> src/main.rs:501:48
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let current_route = app.get_current_route().clone();
[INFO] [stdout]     |                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: the type `Route` does not implement `Clone`, so calling `clone` on `&Route` copies the reference, which does not do anything and can be removed
[INFO] [stdout]     = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] help: remove this redundant call
[INFO] [stdout]     |
[INFO] [stdout] 501 -     let current_route = app.get_current_route().clone();
[INFO] [stdout] 501 +     let current_route = app.get_current_route();
[INFO] [stdout]     |
[INFO] [stdout] help: if you meant to clone `Route`, implement `Clone` for it
[INFO] [stdout]    --> src/app.rs:168:1
[INFO] [stdout]     |
[INFO] [stdout] 168 + #[derive(Clone)]
[INFO] [stdout] 169 | pub struct Route {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 53.80s
[INFO] running `Command { std: "docker" "inspect" "99cbab765ae26d8e01e3b6c6dc2bf48c123b7fe2fa555e31779e2f6c6529115e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "99cbab765ae26d8e01e3b6c6dc2bf48c123b7fe2fa555e31779e2f6c6529115e", kill_on_drop: false }`
[INFO] [stdout] 99cbab765ae26d8e01e3b6c6dc2bf48c123b7fe2fa555e31779e2f6c6529115e
