[INFO] cloning repository https://github.com/51N74/HD-Music-Player-Rust-CLI
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/51N74/HD-Music-Player-Rust-CLI" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F51N74%2FHD-Music-Player-Rust-CLI", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F51N74%2FHD-Music-Player-Rust-CLI'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 91f51652629eb6ac667e49cbc0fef7a98dcb1ce9
[INFO] checking 51N74/HD-Music-Player-Rust-CLI against try#0bdee9e879c87b7211d316e9152109cfd46c576b for pr-150097
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F51N74%2FHD-Music-Player-Rust-CLI" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/51N74/HD-Music-Player-Rust-CLI
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/51N74/HD-Music-Player-Rust-CLI
[INFO] tweaked toml for git repo https://github.com/51N74/HD-Music-Player-Rust-CLI written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/51N74/HD-Music-Player-Rust-CLI on toolchain 0bdee9e879c87b7211d316e9152109cfd46c576b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/51N74/HD-Music-Player-Rust-CLI 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" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c0f14921609a245c4122b25c57c883022e11ce25219e56f58933673239ee8d45
[INFO] running `Command { std: "docker" "start" "-a" "c0f14921609a245c4122b25c57c883022e11ce25219e56f58933673239ee8d45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0f14921609a245c4122b25c57c883022e11ce25219e56f58933673239ee8d45", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c0f14921609a245c4122b25c57c883022e11ce25219e56f58933673239ee8d45", kill_on_drop: false }`
[INFO] [stdout] c0f14921609a245c4122b25c57c883022e11ce25219e56f58933673239ee8d45
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e291f4d95ffadcbb302d0940d7de3de420c30b256ada69a04817684f0de548e5
[INFO] running `Command { std: "docker" "start" "-a" "e291f4d95ffadcbb302d0940d7de3de420c30b256ada69a04817684f0de548e5", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling unicode-ident v1.0.19
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking bitflags v2.9.4
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking symphonia-core v0.5.5
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling nix v0.30.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.1
[INFO] [stderr]     Checking symphonia-metadata v0.5.5
[INFO] [stderr]     Checking anstyle-query v1.1.4
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking symphonia-utils-xiph v0.5.5
[INFO] [stderr]     Checking extended v0.1.0
[INFO] [stderr]     Checking winnow v0.7.13
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]     Checking toml_write v0.1.2
[INFO] [stderr]     Checking clap_builder v4.5.49
[INFO] [stderr]     Checking symphonia-format-riff v0.5.5
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]     Checking symphonia-codec-vorbis v0.5.5
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]     Checking symphonia-format-mkv v0.5.5
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking mio v1.1.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.6
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking symphonia-format-isomp4 v0.5.5
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]     Checking symphonia-format-ogg v0.5.5
[INFO] [stderr]     Checking symphonia-bundle-flac v0.5.5
[INFO] [stderr]     Checking symphonia-bundle-mp3 v0.5.5
[INFO] [stderr]     Checking symphonia-format-caf v0.5.5
[INFO] [stderr]     Checking symphonia-codec-pcm v0.5.5
[INFO] [stderr]     Checking symphonia-codec-aac v0.5.5
[INFO] [stderr]     Checking symphonia-codec-alac v0.5.5
[INFO] [stderr]     Checking symphonia-codec-adpcm v0.5.5
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]     Checking iana-time-zone v0.1.64
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking symphonia v0.5.5
[INFO] [stderr]     Checking ctrlc v3.5.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking linux-raw-sys v0.11.0
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking sysinfo v0.29.11
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking tempfile v3.23.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking clap v4.5.49
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking toml_datetime v0.6.11
[INFO] [stderr]     Checking serde_spanned v0.6.9
[INFO] [stderr]     Checking chrono v0.4.42
[INFO] [stderr]     Checking toml_edit v0.22.27
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking toml v0.8.23
[INFO] [stderr]     Checking hires-audio-player v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/cli/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[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: `crate::models::AudioBuffer`
[INFO] [stdout]  --> src/audio/engine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::AudioBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> src/audio/engine.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::{mpsc as tokio_mpsc, oneshot};
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/audio/gapless.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/gapless.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::{TrackInfo, PlaybackState};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::min`
[INFO] [stdout]   --> src/audio/resampler.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use std::cmp::min;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/error_recovery.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, warn, error};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/cli/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[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: `crate::models::AudioBuffer`
[INFO] [stdout]  --> src/audio/engine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::AudioBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> src/audio/engine.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::{mpsc as tokio_mpsc, oneshot};
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/wav.rs:399:9
[INFO] [stdout]     |
[INFO] [stdout] 399 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/alac.rs:399:9
[INFO] [stdout]     |
[INFO] [stdout] 399 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/mp3.rs:400:9
[INFO] [stdout]     |
[INFO] [stdout] 400 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/ogg.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/metadata.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/gapless.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::{TrackInfo, PlaybackState};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]    --> src/audio/gapless.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 246 |     use std::collections::VecDeque;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::audio::engine::AudioEngineImpl`
[INFO] [stdout]    --> src/audio/gapless.rs:249:9
[INFO] [stdout]     |
[INFO] [stdout] 249 |     use crate::audio::engine::AudioEngineImpl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioEngine` and `GaplessManager`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::audio::{AudioEngine, GaplessManager};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::audio::engine::AudioEngineImpl`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::audio::engine::AudioEngineImpl;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:9:47
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::{TrackInfo, AudioMetadata, PlaybackState};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::AudioError`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::error::AudioError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RingBuffer`
[INFO] [stdout]    --> src/audio/tests/gapless_integration.rs:120:36
[INFO] [stdout]     |
[INFO] [stdout] 120 |         use crate::audio::buffer::{RingBuffer, BufferManager};
[INFO] [stdout]     |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/error_recovery.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, warn, error};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `channels`
[INFO] [stdout]     --> src/audio/engine.rs:1384:5
[INFO] [stdout]      |
[INFO] [stdout] 1384 |     impl AudioDecoder for MockDecoder {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `channels` in implementation
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/audio/mod.rs:67:5
[INFO] [stdout]      |
[INFO] [stdout]   67 |     fn channels(&self) -> u16;
[INFO] [stdout]      |     -------------------------- `channels` from trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `channels`
[INFO] [stdout]   --> src/audio/tests/performance_tests.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl AudioDecoder for MockHighResDecoder {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `channels` in implementation
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/audio/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn channels(&self) -> u16;
[INFO] [stdout]    |     -------------------------- `channels` from trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProcessExt`
[INFO] [stdout]  --> src/audio/performance.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sysinfo::{System, SystemExt, ProcessExt, CpuExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `is_transitioning` is assigned to, but never used
[INFO] [stdout]    --> src/audio/engine.rs:483:17
[INFO] [stdout]     |
[INFO] [stdout] 483 |             let mut is_transitioning = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_is_transitioning` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:551:37
[INFO] [stdout]     |
[INFO] [stdout] 551 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:575:33
[INFO] [stdout]     |
[INFO] [stdout] 575 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:680:49
[INFO] [stdout]     |
[INFO] [stdout] 680 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:703:57
[INFO] [stdout]     |
[INFO] [stdout] 703 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:892:29
[INFO] [stdout]     |
[INFO] [stdout] 892 | ...                   sample_clock = (position.as_secs_f32() * sample_rate) % sample_rate;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_clock`
[INFO] [stdout]    --> src/audio/engine.rs:867:13
[INFO] [stdout]     |
[INFO] [stdout] 867 |         let mut sample_clock = 0f32;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_clock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `truncate` is never used
[INFO] [stdout]    --> src/cli/mod.rs:383:8
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl CliApp {
[INFO] [stdout]     | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 383 |     fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `stream` is never read
[INFO] [stdout]   --> src/audio/engine.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct AudioEngineImpl {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 84 |     device_manager: DeviceManager,
[INFO] [stdout] 85 |     stream: Option<Stream>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `initialize_stream`, `create_stream`, `start_stream`, and `stop_stream` are never used
[INFO] [stdout]     --> src/audio/engine.rs:811:8
[INFO] [stdout]      |
[INFO] [stdout]  119 | impl AudioEngineImpl {
[INFO] [stdout]      | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  811 |     fn initialize_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  851 |     fn create_stream<T>(
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  995 |     fn start_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1010 |     fn stop_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `buffer_allocator` is never read
[INFO] [stdout]   --> src/audio/decoders/flac.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct FlacDecoder {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     buffer_allocator: Option<std::sync::Arc<HighResBufferAllocator>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_metadata_from_probed` and `extract_from_revision` are never used
[INFO] [stdout]    --> src/audio/decoders/flac.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout]  41 | impl FlacDecoder {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn extract_metadata_from_probed(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn extract_from_revision(revision: &MetadataRevision, metadata: &mut AudioMetadata) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_metadata_from_probed` and `extract_from_revision` are never used
[INFO] [stdout]    --> src/audio/decoders/wav.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl WavDecoder {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn extract_metadata_from_probed(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn extract_from_revision(revision: &MetadataRevision, metadata: &mut AudioMetadata) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `codec_from_extension` is never used
[INFO] [stdout]    --> src/queue/mod.rs:111:8
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl QueueManagerImpl {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn codec_from_extension(extension: &str) -> Option<AudioCodec> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/audio/performance.rs:98:33
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn start_decode_profile(&self) -> DecodeProfiler {
[INFO] [stdout]    |                                 ^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn start_decode_profile(&self) -> DecodeProfiler<'_> {
[INFO] [stdout]    |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/cli/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[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: `ProcessExt`
[INFO] [stdout]  --> src/audio/performance.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sysinfo::{System, SystemExt, ProcessExt, CpuExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::AudioBuffer`
[INFO] [stdout]  --> src/audio/engine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::AudioBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> src/audio/engine.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::{mpsc as tokio_mpsc, oneshot};
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/audio/gapless.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/gapless.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::{TrackInfo, PlaybackState};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::min`
[INFO] [stdout]   --> src/audio/resampler.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use std::cmp::min;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeviceCapabilities` and `DeviceManager`
[INFO] [stdout]   --> src/audio/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use device::{DeviceManager, DeviceCapabilities};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlacDecoder`, `FlacDecoder`, `M4aDecoder`, `Mp3Decoder`, `OggDecoder`, and `WavDecoder`
[INFO] [stdout]   --> src/audio/mod.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use decoders::{FlacDecoder, WavDecoder, AlacDecoder, Mp3Decoder, OggDecoder, M4aDecoder};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufferStatus`
[INFO] [stdout]   --> src/audio/mod.rs:25:45
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use buffer::{RingBuffer, BufferManager, BufferStatus};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioCodec` and `AudioFormat`
[INFO] [stdout]   --> src/audio/mod.rs:28:53
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use crate::models::{AudioBuffer, AudioMetadata, AudioFormat, AudioCodec};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PositionTracker` and `PositionUpdate`
[INFO] [stdout]   --> src/audio/mod.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use position::{PositionTracker, PositionUpdate};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gapless::GaplessManager`
[INFO] [stdout]   --> src/audio/mod.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use gapless::GaplessManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioPerformanceProfiler`, `PerformanceReport`, and `PerformanceStats`
[INFO] [stdout]   --> src/audio/mod.rs:40:23
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub use performance::{AudioPerformanceProfiler, PerformanceReport, PerformanceStats};
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioMemoryManager`, `HighResBufferAllocator`, `ManagedAudioBuffer`, and `MemoryStats`
[INFO] [stdout]   --> src/audio/mod.rs:43:18
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use memory::{AudioMemoryManager, HighResBufferAllocator, ManagedAudioBuffer, MemoryStats};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/error_recovery.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, warn, error};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/main.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::status::StatusDisplay`
[INFO] [stdout]    --> src/main.rs:191:21
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 use crate::cli::status::StatusDisplay;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::status::StatusDisplay`
[INFO] [stdout]    --> src/main.rs:197:21
[INFO] [stdout]     |
[INFO] [stdout] 197 |                 use crate::cli::status::StatusDisplay;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlayerConfig`
[INFO] [stdout]  --> examples/config_demo.rs:1:49
[INFO] [stdout]   |
[INFO] [stdout] 1 | use hires_audio_player::config::{ConfigManager, PlayerConfig};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> examples/config_demo.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/cli/mod.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::path::{Path, PathBuf};
[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: `crate::models::AudioBuffer`
[INFO] [stdout]  --> src/audio/engine.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::AudioBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `oneshot`
[INFO] [stdout]   --> src/audio/engine.rs:19:39
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tokio::sync::{mpsc as tokio_mpsc, oneshot};
[INFO] [stdout]    |                                       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/wav.rs:399:9
[INFO] [stdout]     |
[INFO] [stdout] 399 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/alac.rs:399:9
[INFO] [stdout]     |
[INFO] [stdout] 399 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/mp3.rs:400:9
[INFO] [stdout]     |
[INFO] [stdout] 400 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/decoders/ogg.rs:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tempfile::NamedTempFile`
[INFO] [stdout]    --> src/audio/metadata.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |     use tempfile::NamedTempFile;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/gapless.rs:6:32
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::models::{TrackInfo, PlaybackState};
[INFO] [stdout]   |                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::VecDeque`
[INFO] [stdout]    --> src/audio/gapless.rs:246:9
[INFO] [stdout]     |
[INFO] [stdout] 246 |     use std::collections::VecDeque;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::audio::engine::AudioEngineImpl`
[INFO] [stdout]    --> src/audio/gapless.rs:249:9
[INFO] [stdout]     |
[INFO] [stdout] 249 |     use crate::audio::engine::AudioEngineImpl;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioEngine` and `GaplessManager`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::audio::{AudioEngine, GaplessManager};
[INFO] [stdout]   |                    ^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::audio::engine::AudioEngineImpl`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::audio::engine::AudioEngineImpl;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PlaybackState`
[INFO] [stdout]  --> src/audio/tests/gapless_integration.rs:9:47
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::{TrackInfo, AudioMetadata, PlaybackState};
[INFO] [stdout]   |                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::error::AudioError`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::error::AudioError;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RingBuffer`
[INFO] [stdout]    --> src/audio/tests/gapless_integration.rs:120:36
[INFO] [stdout]     |
[INFO] [stdout] 120 |         use crate::audio::buffer::{RingBuffer, BufferManager};
[INFO] [stdout]     |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DeviceCapabilities` and `DeviceManager`
[INFO] [stdout]   --> src/audio/mod.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use device::{DeviceManager, DeviceCapabilities};
[INFO] [stdout]    |                  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlacDecoder`, `FlacDecoder`, `M4aDecoder`, `Mp3Decoder`, `OggDecoder`, and `WavDecoder`
[INFO] [stdout]   --> src/audio/mod.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use decoders::{FlacDecoder, WavDecoder, AlacDecoder, Mp3Decoder, OggDecoder, M4aDecoder};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufferStatus`
[INFO] [stdout]   --> src/audio/mod.rs:25:45
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use buffer::{RingBuffer, BufferManager, BufferStatus};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioCodec` and `AudioFormat`
[INFO] [stdout]   --> src/audio/mod.rs:28:53
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use crate::models::{AudioBuffer, AudioMetadata, AudioFormat, AudioCodec};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PositionTracker` and `PositionUpdate`
[INFO] [stdout]   --> src/audio/mod.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use position::{PositionTracker, PositionUpdate};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PerformanceReport` and `PerformanceStats`
[INFO] [stdout]   --> src/audio/mod.rs:40:49
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub use performance::{AudioPerformanceProfiler, PerformanceReport, PerformanceStats};
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ManagedAudioBuffer` and `MemoryStats`
[INFO] [stdout]   --> src/audio/mod.rs:43:62
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use memory::{AudioMemoryManager, HighResBufferAllocator, ManagedAudioBuffer, MemoryStats};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/error_recovery.rs:3:23
[INFO] [stdout]   |
[INFO] [stdout] 3 | use log::{info, warn, error};
[INFO] [stdout]   |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]  --> src/integration_tests.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use super::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `is_transitioning` is assigned to, but never used
[INFO] [stdout]    --> src/audio/engine.rs:483:17
[INFO] [stdout]     |
[INFO] [stdout] 483 |             let mut is_transitioning = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_is_transitioning` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:551:37
[INFO] [stdout]     |
[INFO] [stdout] 551 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:575:33
[INFO] [stdout]     |
[INFO] [stdout] 575 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:680:49
[INFO] [stdout]     |
[INFO] [stdout] 680 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:703:57
[INFO] [stdout]     |
[INFO] [stdout] 703 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:892:29
[INFO] [stdout]     |
[INFO] [stdout] 892 | ...                   sample_clock = (position.as_secs_f32() * sample_rate) % sample_rate;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_clock`
[INFO] [stdout]    --> src/audio/engine.rs:867:13
[INFO] [stdout]     |
[INFO] [stdout] 867 |         let mut sample_clock = 0f32;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_clock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/main.rs:20:15
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::{self, Write};
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::status::StatusDisplay`
[INFO] [stdout]    --> src/main.rs:191:21
[INFO] [stdout]     |
[INFO] [stdout] 191 |                 use crate::cli::status::StatusDisplay;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::cli::status::StatusDisplay`
[INFO] [stdout]    --> src/main.rs:197:21
[INFO] [stdout]     |
[INFO] [stdout] 197 |                 use crate::cli::status::StatusDisplay;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/audio/engine.rs:1725:13
[INFO] [stdout]      |
[INFO] [stdout] 1725 |         let mut engine = AudioEngineImpl::new().expect("Failed to create AudioEngine");
[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/audio/engine.rs:1768:13
[INFO] [stdout]      |
[INFO] [stdout] 1768 |         let mut engine = AudioEngineImpl::new().expect("Failed to create AudioEngine");
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `channels`
[INFO] [stdout]     --> src/audio/engine.rs:1384:5
[INFO] [stdout]      |
[INFO] [stdout] 1384 |     impl AudioDecoder for MockDecoder {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `channels` in implementation
[INFO] [stdout]      |
[INFO] [stdout]     ::: src/audio/mod.rs:67:5
[INFO] [stdout]      |
[INFO] [stdout]   67 |     fn channels(&self) -> u16;
[INFO] [stdout]      |     -------------------------- `channels` from trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0046]: not all trait items implemented, missing: `channels`
[INFO] [stdout]   --> src/audio/tests/performance_tests.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl AudioDecoder for MockHighResDecoder {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `channels` in implementation
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/audio/mod.rs:67:5
[INFO] [stdout]    |
[INFO] [stdout] 67 |     fn channels(&self) -> u16;
[INFO] [stdout]    |     -------------------------- `channels` from trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProcessExt`
[INFO] [stdout]  --> src/audio/performance.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sysinfo::{System, SystemExt, ProcessExt, CpuExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue_manager`
[INFO] [stdout]    --> src/audio/gapless.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |         let queue_manager = Box::new(QueueManagerImpl::with_playlist_directory(temp_dir.path().to_path_buf()).unwrap());
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_queue_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track1`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let track1 = create_test_track("track1", "flac");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track2`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let track2 = create_test_track("track2", "wav");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track3`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         let track3 = create_test_track("track3", "mp3");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]    --> src/queue/playlist.rs:386:13
[INFO] [stdout]     |
[INFO] [stdout] 386 |         let manager = PlaylistManager::new(playlist_dir.clone()).unwrap();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]    --> src/queue/playlist.rs:401:13
[INFO] [stdout]     |
[INFO] [stdout] 401 |         let manager = PlaylistManager::new(playlist_dir.clone()).unwrap();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `is_transitioning` is assigned to, but never used
[INFO] [stdout]    --> src/audio/engine.rs:483:17
[INFO] [stdout]     |
[INFO] [stdout] 483 |             let mut is_transitioning = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_is_transitioning` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:551:37
[INFO] [stdout]     |
[INFO] [stdout] 551 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:575:33
[INFO] [stdout]     |
[INFO] [stdout] 575 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:680:49
[INFO] [stdout]     |
[INFO] [stdout] 680 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:703:57
[INFO] [stdout]     |
[INFO] [stdout] 703 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:892:29
[INFO] [stdout]     |
[INFO] [stdout] 892 | ...                   sample_clock = (position.as_secs_f32() * sample_rate) % sample_rate;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_clock`
[INFO] [stdout]    --> src/audio/engine.rs:867:13
[INFO] [stdout]     |
[INFO] [stdout] 867 |         let mut sample_clock = 0f32;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_clock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0046`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hires-audio-player` (lib test) due to 2 previous errors; 36 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: field `logger` is never read
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct AppController {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 29 |     logger: AudioLogger,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `display_error`, `truncate`, `validate_seek_time`, and `run` are never used
[INFO] [stdout]    --> src/cli/mod.rs:340:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl CliApp {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn display_error(&self, error: &PlayerError) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 383 |     fn truncate(s: &str, max_len: usize) -> String {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 446 |     pub fn validate_seek_time(position: Duration, duration: Option<Duration>) -> Result<Duration, ParseError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 466 |     pub async fn run(&mut self) -> Result<(), PlayerError> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/cli/status.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl StatusDisplay {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn display_compact_status(status: &PlayerStatus) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn display_track_metadata(track: &TrackInfo) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn display_position_update(status: &PlayerStatus) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn display_status_help() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn format_file_size(size: u64) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 424 |     pub fn create_progress_bar(progress: f32, width: usize) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 434 |     pub fn format_playback_state(state: PlaybackState) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `metadata` is never used
[INFO] [stdout]   --> src/audio/mod.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub trait AudioDecoder: Send {
[INFO] [stdout]    |           ------------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn metadata(&self) -> &AudioMetadata;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/audio/engine.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 |     SetVolume(f32),
[INFO] [stdout]    |     --------- ^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioCommand` 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] 36 -     SetVolume(f32),
[INFO] [stdout] 36 +     SetVolume(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PreloadNext` and `NextTrack` are never constructed
[INFO] [stdout]   --> src/audio/engine.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub enum DecoderCommand {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 44 |     LoadFile(std::path::PathBuf),
[INFO] [stdout] 45 |     PreloadNext(std::path::PathBuf),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     NextTrack,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecoderCommand` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `playback_state`, `position`, `buffer_fill`, and `current_file` are never read
[INFO] [stdout]   --> src/audio/engine.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct ThreadStatus {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 55 |     pub playback_state: PlaybackState,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 56 |     pub position: Duration,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 57 |     pub buffer_fill: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 58 |     pub current_file: Option<std::path::PathBuf>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ThreadStatus` 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: field `duration` is never read
[INFO] [stdout]   --> src/audio/engine.rs:65:9
[INFO] [stdout]    |
[INFO] [stdout] 64 |     FileLoaded {
[INFO] [stdout]    |     ---------- field in this variant
[INFO] [stdout] 65 |         duration: Duration,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecoderResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `duration`, `sample_rate`, `bit_depth`, and `channels` are never read
[INFO] [stdout]   --> src/audio/engine.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 70 |     NextTrackPreloaded {
[INFO] [stdout]    |     ------------------ fields in this variant
[INFO] [stdout] 71 |         duration: Duration,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 72 |         sample_rate: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 73 |         bit_depth: u16,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 74 |         channels: u16,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecoderResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/audio/engine.rs:76:11
[INFO] [stdout]    |
[INFO] [stdout] 76 |     Error(AudioError),
[INFO] [stdout]    |     ----- ^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecoderResponse` 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] 76 -     Error(AudioError),
[INFO] [stdout] 76 +     Error(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/audio/engine.rs:77:18
[INFO] [stdout]    |
[INFO] [stdout] 77 |     BufferFilled(usize), // frames filled
[INFO] [stdout]    |     ------------ ^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DecoderResponse` 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] 77 -     BufferFilled(usize), // frames filled
[INFO] [stdout] 77 +     BufferFilled(()), // frames filled
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stream`, `performance_profiler`, and `buffer_allocator` are never read
[INFO] [stdout]    --> src/audio/engine.rs:85:5
[INFO] [stdout]     |
[INFO] [stdout]  83 | pub struct AudioEngineImpl {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout]  84 |     device_manager: DeviceManager,
[INFO] [stdout]  85 |     stream: Option<Stream>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     performance_profiler: Arc<AudioPerformanceProfiler>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 115 |     buffer_allocator: Arc<HighResBufferAllocator>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/audio/engine.rs:811:8
[INFO] [stdout]      |
[INFO] [stdout]  119 | impl AudioEngineImpl {
[INFO] [stdout]      | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  811 |     fn initialize_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  851 |     fn create_stream<T>(
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  995 |     fn start_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1010 |     fn stop_stream(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn preload_next_track(&mut self, path: std::path::PathBuf) -> Result<(), AudioError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1061 |     pub fn transition_to_next_track(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1133 |     pub fn get_status(&mut self) -> Option<ThreadStatus> {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1152 |     pub fn device_manager_mut(&mut self) -> &mut DeviceManager {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1201 |     pub fn performance_profiler(&self) -> Arc<AudioPerformanceProfiler> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1206 |     pub fn buffer_allocator(&self) -> Arc<HighResBufferAllocator> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1211 |     pub fn update_performance_monitoring(&self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1227 |     pub fn get_performance_report(&self) -> crate::audio::performance::PerformanceReport {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1232 |     pub fn is_performance_healthy(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `metadata` and `buffer_allocator` are never read
[INFO] [stdout]   --> src/audio/decoders/flac.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct FlacDecoder {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 24 |     metadata: AudioMetadata,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     buffer_allocator: Option<std::sync::Arc<HighResBufferAllocator>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_metadata_from_probed` and `extract_from_revision` are never used
[INFO] [stdout]    --> src/audio/decoders/flac.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout]  41 | impl FlacDecoder {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     fn extract_metadata_from_probed(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     fn extract_from_revision(revision: &MetadataRevision, metadata: &mut AudioMetadata) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/flac.rs:544:12
[INFO] [stdout]     |
[INFO] [stdout] 542 | impl FlacDecoder {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 543 |     /// Get the number of channels
[INFO] [stdout] 544 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `metadata` is never read
[INFO] [stdout]   --> src/audio/decoders/wav.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct WavDecoder {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     metadata: AudioMetadata,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_metadata_from_probed` and `extract_from_revision` are never used
[INFO] [stdout]    --> src/audio/decoders/wav.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl WavDecoder {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn extract_metadata_from_probed(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn extract_from_revision(revision: &MetadataRevision, metadata: &mut AudioMetadata) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/wav.rs:391:12
[INFO] [stdout]     |
[INFO] [stdout] 389 | impl WavDecoder {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 390 |     /// Get the number of channels
[INFO] [stdout] 391 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AlacDecoder` is never constructed
[INFO] [stdout]   --> src/audio/decoders/alac.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct AlacDecoder {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `extract_metadata_from_probed`, `extract_from_revision`, and `convert_audio_buffer` are never used
[INFO] [stdout]    --> src/audio/decoders/alac.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl AlacDecoder {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout]  31 |     /// Create a new ALAC decoder for the given file path
[INFO] [stdout]  32 |     pub fn new<P: AsRef<Path>>(path: P) -> Result<Self, DecodeError> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     fn extract_metadata_from_probed(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     fn extract_from_revision(revision: &MetadataRevision, metadata: &mut AudioMetadata) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     fn convert_audio_buffer(audio_buf: AudioBufferRef) -> Result<AudioBuffer, DecodeError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/alac.rs:391:12
[INFO] [stdout]     |
[INFO] [stdout] 389 | impl AlacDecoder {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 390 |     /// Get the number of channels
[INFO] [stdout] 391 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `metadata` is never read
[INFO] [stdout]   --> src/audio/decoders/mp3.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Mp3Decoder {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     metadata: AudioMetadata,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/mp3.rs:392:12
[INFO] [stdout]     |
[INFO] [stdout] 390 | impl Mp3Decoder {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 391 |     /// Get the number of channels
[INFO] [stdout] 392 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `metadata` is never read
[INFO] [stdout]   --> src/audio/decoders/ogg.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct OggDecoder {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     metadata: AudioMetadata,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/ogg.rs:390:12
[INFO] [stdout]     |
[INFO] [stdout] 388 | impl OggDecoder {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 389 |     /// Get the number of channels
[INFO] [stdout] 390 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `metadata` is never read
[INFO] [stdout]   --> src/audio/decoders/m4a.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct M4aDecoder {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     metadata: AudioMetadata,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `channels` is never used
[INFO] [stdout]    --> src/audio/decoders/m4a.rs:396:12
[INFO] [stdout]     |
[INFO] [stdout] 394 | impl M4aDecoder {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] 395 |     /// Get the number of channels
[INFO] [stdout] 396 |     pub fn channels(&self) -> u16 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `supported_sample_rates`, `supported_bit_depths`, `max_channels`, and `default_config` are never read
[INFO] [stdout]   --> src/audio/device.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct DeviceCapabilities {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout]  9 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 10 |     pub supported_sample_rates: Vec<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub supported_bit_depths: Vec<u16>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub max_channels: u16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub default_config: SupportedStreamConfig,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `DeviceCapabilities` 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: methods `get_capabilities`, `select_device_with_fallback`, `supports_format`, and `get_best_config` are never used
[INFO] [stdout]    --> src/audio/device.rs:68:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl DeviceManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn get_capabilities(&self, device_name: &str) -> Option<&DeviceCapabilities> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn select_device_with_fallback(&mut self, device_name: Option<&str>) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn supports_format(&self, device_name: &str, sample_rate: u32, bit_depth: u16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn get_best_config(&self, device_name: &str, preferred_sample_rate: Option<u32>, _preferred_bit_depth: Option<u16>) -> Opti...
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/buffer.rs:33:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl RingBuffer {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn capacity(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn capacity_frames(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn available_write_frames(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn is_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn read_audio_buffer(&self, frames: usize) -> AudioBuffer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `min_buffer_duration`, `underrun_count`, and `last_underrun` are never read
[INFO] [stdout]    --> src/audio/buffer.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub struct BufferManager {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 255 |     min_buffer_duration: Duration,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 256 |     underrun_count: AtomicUsize,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 257 |     last_underrun: std::sync::Mutex<Option<Instant>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BufferManager` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/buffer.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 260 | impl BufferManager {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn check_underrun(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 302 |     fn record_underrun(&self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 310 |     pub fn underrun_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn last_underrun(&self) -> Option<Instant> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 320 |     pub fn reset_underrun_stats(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     pub fn buffer_status(&self) -> BufferStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn recover_from_underrun(&self) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BufferStatus` is never constructed
[INFO] [stdout]    --> src/audio/buffer.rs:354:12
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub struct BufferStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_healthy` and `status_description` are never used
[INFO] [stdout]    --> src/audio/buffer.rs:366:12
[INFO] [stdout]     |
[INFO] [stdout] 364 | impl BufferStatus {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] 365 |     /// Check if the buffer is healthy (not underrunning and has sufficient data)
[INFO] [stdout] 366 |     pub fn is_healthy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub fn status_description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `extract_from_file` and `determine_codec` are never used
[INFO] [stdout]    --> src/audio/metadata.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl MetadataExtractor {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout]  16 |     /// Extract metadata from an audio file
[INFO] [stdout]  17 |     pub fn extract_from_file<P: AsRef<Path>>(path: P) -> Result<(AudioMetadata, AudioFormat, Duration), DecodeError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn determine_codec<P: AsRef<Path>>(path: P, codec_type: symphonia::core::codecs::CodecType) -> Result<AudioCodec, DecodeError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionTracker` is never constructed
[INFO] [stdout]  --> src/audio/position.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct PositionTracker {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionTrackerInner` is never constructed
[INFO] [stdout]   --> src/audio/position.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct PositionTrackerInner {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/position.rs:28:12
[INFO] [stdout]     |
[INFO] [stdout]  26 | impl PositionTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  27 |     /// Create a new position tracker
[INFO] [stdout]  28 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn start_tracking(&self, initial_position: Duration, duration: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn stop_tracking(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn pause(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn resume(&self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn seek(&self, position: Duration) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn seek_validated(&self, position: Duration) -> Result<Duration, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn current_position(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn current_state(&self) -> PlaybackState {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn duration(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn is_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn update_status(&self, status: &mut PlayerStatus) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn progress(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn remaining_time(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn is_finished(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn start_update_task(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PositionUpdate` is never constructed
[INFO] [stdout]    --> src/audio/position.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub struct PositionUpdate {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/audio/position.rs:265:12
[INFO] [stdout]     |
[INFO] [stdout] 264 | impl PositionUpdate {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] 265 |     pub fn new(position: Duration, state: PlaybackState, duration: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GaplessManager` is never constructed
[INFO] [stdout]   --> src/audio/gapless.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct GaplessManager {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/gapless.rs:20:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl GaplessManager {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  19 |     /// Create a new gapless manager
[INFO] [stdout]  20 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn set_gapless_enabled(&mut self, enabled: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn is_gapless_enabled(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub fn start_playback(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn next_track(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn previous_track(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn handle_end_of_file(&mut self) -> Result<bool, AudioError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     fn preload_next_track_if_needed(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     fn create_decoder_for_track(&self, track: &TrackInfo) -> Result<Box<dyn AudioDecoder>, AudioError> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn current_track(&self) -> Option<&TrackInfo> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn is_next_track_preloaded(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn cleanup(&mut self) -> Result<(), AudioError> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/audio/performance.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct AudioPerformanceProfiler {
[INFO] [stdout]    |            ------------------------ fields in this struct
[INFO] [stdout] 10 |     // CPU monitoring
[INFO] [stdout] 11 |     system: Arc<Mutex<System>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 12 |     cpu_samples: Arc<Mutex<VecDeque<f32>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 13 |     max_cpu_samples: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     memory_usage: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 17 |     peak_memory_usage: AtomicU64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     buffer_underruns: AtomicUsize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     buffer_fill_times: Arc<Mutex<VecDeque<Duration>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioPerformanceProfiler` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/audio/performance.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout]  70 | impl AudioPerformanceProfiler {
[INFO] [stdout]     | ----------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn update_cpu_usage(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn update_memory_usage(&self, current_usage: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn record_buffer_underrun(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn record_buffer_fill_time(&self, fill_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn current_cpu_usage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn average_cpu_usage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn current_memory_usage(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn peak_memory_usage(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn average_decode_time(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 232 |     pub fn recent_decode_times(&self) -> Vec<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn high_res_decode_performance(&self) -> Vec<Duration> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn buffer_underrun_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn sample_rate_stats(&self, sample_rate: u32) -> Option<PerformanceStats> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn bit_depth_stats(&self, bit_depth: u16) -> Option<PerformanceStats> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn performance_report(&self) -> PerformanceReport {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn is_performance_healthy(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn reset_stats(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PerformanceReport` is never constructed
[INFO] [stdout]    --> src/audio/performance.rs:358:12
[INFO] [stdout]     |
[INFO] [stdout] 358 | pub struct PerformanceReport {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `format_report` is never used
[INFO] [stdout]    --> src/audio/performance.rs:372:12
[INFO] [stdout]     |
[INFO] [stdout] 370 | impl PerformanceReport {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] 371 |     /// Format the report as a human-readable string
[INFO] [stdout] 372 |     pub fn format_report(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `buffer_size` and `allocated_count` are never read
[INFO] [stdout]   --> src/audio/memory.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct MemoryPool {
[INFO] [stdout]    |        ---------- fields in this struct
[INFO] [stdout] 26 |     buffers: Vec<NonNull<u8>>,
[INFO] [stdout] 27 |     buffer_size: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 28 |     max_buffers: usize,
[INFO] [stdout] 29 |     allocated_count: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MemoryPool` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/audio/memory.rs:63:12
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl AudioMemoryManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn with_config(max_pool_size: usize, alignment: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn current_usage(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn peak_usage(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn allocation_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn pool_stats(&self) -> Vec<PoolStats> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn clear_pools(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn optimize_pools(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_mut_slice`, `as_slice`, `as_f32_slice`, `size`, and `zero` are never used
[INFO] [stdout]    --> src/audio/memory.rs:271:12
[INFO] [stdout]     |
[INFO] [stdout] 269 | impl ManagedAudioBuffer {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] 270 |     /// Get a mutable slice to the buffer data
[INFO] [stdout] 271 |     pub fn as_mut_slice(&mut self) -> &mut [u8] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub fn as_slice(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn as_f32_slice(&self) -> &[f32] {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn size(&self) -> usize {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn zero(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PoolStats` is never constructed
[INFO] [stdout]    --> src/audio/memory.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 331 | pub struct PoolStats {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PoolExhausted` is never constructed
[INFO] [stdout]    --> src/audio/memory.rs:343:5
[INFO] [stdout]     |
[INFO] [stdout] 340 | pub enum AudioMemoryError {
[INFO] [stdout]     |          ---------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 343 |     PoolExhausted,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AudioMemoryError` 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: methods `memory_stats`, `optimize`, and `clear_cache` are never used
[INFO] [stdout]    --> src/audio/memory.rs:425:12
[INFO] [stdout]     |
[INFO] [stdout] 364 | impl HighResBufferAllocator {
[INFO] [stdout]     | --------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 425 |     pub fn memory_stats(&self) -> MemoryStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 435 |     pub fn optimize(&self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 440 |     pub fn clear_cache(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MemoryStats` is never constructed
[INFO] [stdout]    --> src/audio/memory.rs:448:12
[INFO] [stdout]     |
[INFO] [stdout] 448 | pub struct MemoryStats {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `format_stats` is never used
[INFO] [stdout]    --> src/audio/memory.rs:457:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl MemoryStats {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] 456 |     /// Format memory statistics as a human-readable string
[INFO] [stdout] 457 |     pub fn format_stats(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_channels` and `config` are never used
[INFO] [stdout]   --> src/audio/resampler.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl LinearResampler {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn set_channels(&mut self, channels: usize, reset_state: bool) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn config(&self) -> (u32, u32, usize) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_empty` and `remove` are never used
[INFO] [stdout]   --> src/queue/mod.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait QueueManager: Send {
[INFO] [stdout]    |           ------------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn is_empty(&self) -> bool;
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn remove(&mut self, index: usize) -> Result<TrackInfo, QueueError>;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `with_playlist_directory` and `codec_from_extension` are never used
[INFO] [stdout]    --> src/queue/mod.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  73 | impl QueueManagerImpl {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn with_playlist_directory(playlist_dir: PathBuf) -> Result<Self, PlaylistError> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn codec_from_extension(extension: &str) -> Option<AudioCodec> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mime_type` is never used
[INFO] [stdout]   --> src/queue/playlist.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl PlaylistFormat {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn mime_type(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_buffer_size`, `set_gapless_enabled`, `set_playlist_directory`, and `reset_to_defaults` are never used
[INFO] [stdout]   --> src/config/mod.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ConfigManager {
[INFO] [stdout]    | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn set_buffer_size(&mut self, buffer_size: usize) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn set_gapless_enabled(&mut self, enabled: bool) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn set_playlist_directory(&mut self, directory: PathBuf) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn reset_to_defaults(&mut self) -> Result<(), ConfigError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_empty` and `with_title_artist` are never used
[INFO] [stdout]   --> src/models.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl AudioMetadata {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn with_title_artist(title: String, artist: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `format_description` is never used
[INFO] [stdout]    --> src/models.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl AudioFormat {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn format_description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `extensions` is never used
[INFO] [stdout]    --> src/models.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | impl AudioCodec {
[INFO] [stdout]     | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 166 |     pub fn extensions(&self) -> &'static [&'static str] {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/models.rs:201:12
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl PlayerStatus {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn stopped() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     pub fn playing(track: TrackInfo, position: Duration, volume: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn paused(track: TrackInfo, position: Duration, volume: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn is_playing(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn is_paused(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn is_stopped(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn position_formatted(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn duration_formatted(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `empty`, `frames`, `total_samples`, `is_empty`, and `duration` are never used
[INFO] [stdout]    --> src/models.rs:647:12
[INFO] [stdout]     |
[INFO] [stdout] 646 | impl AudioBuffer {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 647 |     pub fn new(channels: u16, sample_rate: u32, frames: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 658 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 668 |     pub fn frames(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 673 |     pub fn total_samples(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 678 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 683 |     pub fn duration(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `decode_time`, `buffer_fill_time`, `seek_time`, `device_switch_time`, and `file_load_time` are never read
[INFO] [stdout]   --> src/logging.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct PerformanceMetrics {
[INFO] [stdout]    |            ------------------ fields in this struct
[INFO] [stdout] 10 |     pub decode_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 11 |     pub buffer_fill_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub seek_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 13 |     pub device_switch_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub file_load_time: Duration,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PerformanceMetrics` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timestamp`, `event_type`, `duration`, and `details` are never read
[INFO] [stdout]   --> src/logging.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct AudioEvent {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 32 |     pub timestamp: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 33 |     pub event_type: AudioEventType,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 34 |     pub duration: Option<Duration>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 35 |     pub details: String,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioEvent` 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 variants are never constructed
[INFO] [stdout]   --> src/logging.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum AudioEventType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 40 |     PlaybackStarted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 41 |     PlaybackPaused,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 42 |     PlaybackStopped,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 43 |     TrackChanged,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 44 |     DeviceChanged,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 45 |     BufferUnderrun,
[INFO] [stdout] 46 |     SeekOperation,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     PerformanceWarning,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioEventType` 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: field `performance_metrics` is never read
[INFO] [stdout]   --> src/logging.rs:74:5
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct AudioLogger {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 74 |     performance_metrics: Arc<Mutex<PerformanceMetrics>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioLogger` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/logging.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout]  77 | impl AudioLogger {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn log_playback_started(&self, track_path: &str, format_info: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn log_playback_paused(&self, position: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn log_playback_stopped(&self, reason: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn log_track_changed(&self, from_track: Option<&str>, to_track: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn log_device_changed(&self, from_device: Option<&str>, to_device: &str, switch_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn log_seek_operation(&self, from_position: Duration, to_position: Duration, seek_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub fn log_performance_warning(&self, operation: &str, duration: Duration, threshold: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn update_decode_metrics(&self, decode_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn update_buffer_fill_metrics(&self, fill_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn update_file_load_metrics(&self, load_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 316 |     pub fn get_recent_events(&self, count: usize) -> Vec<AudioEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn get_performance_metrics(&self) -> PerformanceMetrics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 334 |     pub fn clear_events(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 340 |     pub fn get_event_statistics(&self) -> EventStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventStatistics` is never constructed
[INFO] [stdout]    --> src/logging.rs:362:12
[INFO] [stdout]     |
[INFO] [stdout] 362 | pub struct EventStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/logging.rs:372:12
[INFO] [stdout]     |
[INFO] [stdout] 371 | impl EventStatistics {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] 372 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OperationTimer` is never constructed
[INFO] [stdout]    --> src/logging.rs:385:12
[INFO] [stdout]     |
[INFO] [stdout] 385 | pub struct OperationTimer {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `elapsed`, `finish`, and `finish_with_threshold` are never used
[INFO] [stdout]    --> src/logging.rs:391:12
[INFO] [stdout]     |
[INFO] [stdout] 390 | impl OperationTimer {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout] 391 |     pub fn new(operation_name: String) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 399 |     pub fn elapsed(&self) -> Duration {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn finish(self) -> Duration {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 409 |     pub fn finish_with_threshold(self, threshold: Duration) -> Duration {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset_recovery_attempts`, `clear_recovery_attempts`, and `get_recovery_statistics` are never used
[INFO] [stdout]    --> src/error_recovery.rs:294:12
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl ErrorRecoveryManager {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn reset_recovery_attempts(&mut self, error: &PlayerError) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn clear_recovery_attempts(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 305 |     pub fn get_recovery_statistics(&self) -> RecoveryStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_success`, `is_retry`, `is_failed`, and `message` are never used
[INFO] [stdout]    --> src/error_recovery.rs:331:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | impl RecoveryResult {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] 331 |     pub fn is_success(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn is_retry(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn is_failed(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn message(&self) -> &str {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecoveryStatistics` is never constructed
[INFO] [stdout]    --> src/error_recovery.rs:354:12
[INFO] [stdout]     |
[INFO] [stdout] 354 | pub struct RecoveryStatistics {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RecoveryUtils` is never constructed
[INFO] [stdout]    --> src/error_recovery.rs:361:12
[INFO] [stdout]     |
[INFO] [stdout] 361 | pub struct RecoveryUtils;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/error_recovery.rs:365:12
[INFO] [stdout]     |
[INFO] [stdout] 363 | impl RecoveryUtils {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 364 |     /// Check if a file exists and is accessible
[INFO] [stdout] 365 |     pub fn is_file_accessible(path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 371 |     pub fn is_directory_accessible(path: &Path) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn suggest_alternative_paths(original_path: &Path) -> Vec<std::path::PathBuf> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 408 |     pub fn is_valid_device_name(device_name: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 415 |     pub fn sanitize_device_name(device_name: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn is_common_sample_rate(sample_rate: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 428 |     pub fn nearest_supported_sample_rate(sample_rate: u32) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/audio/performance.rs:98:33
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn start_decode_profile(&self) -> DecodeProfiler {
[INFO] [stdout]    |                                 ^^^^^     ^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                 |
[INFO] [stdout]    |                                 the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn start_decode_profile(&self) -> DecodeProfiler<'_> {
[INFO] [stdout]    |                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]   --> src/integration_tests.rs:95:38
[INFO] [stdout]    |
[INFO] [stdout] 95 |         assert_eq!(app.queue_manager.len(), 1);
[INFO] [stdout]    |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]   --> src/queue/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait QueueManager: Send {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_empty` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]   --> src/integration_tests.rs:96:36
[INFO] [stdout]    |
[INFO] [stdout] 96 |         assert!(!app.queue_manager.is_empty());
[INFO] [stdout]    |                                    ^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]    |
[INFO] [stdout]    = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `is_empty`, perhaps you need to implement it
[INFO] [stdout]   --> src/queue/mod.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait QueueManager: Send {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:113:38
[INFO] [stdout]     |
[INFO] [stdout] 113 |         assert_eq!(app.queue_manager.len(), 0);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_empty` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:114:35
[INFO] [stdout]     |
[INFO] [stdout] 114 |         assert!(app.queue_manager.is_empty());
[INFO] [stdout]     |                                   ^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `is_empty`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:132:38
[INFO] [stdout]     |
[INFO] [stdout] 132 |         assert_eq!(app.queue_manager.len(), 5);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `clear` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:177:27
[INFO] [stdout]     |
[INFO] [stdout] 177 |         app.queue_manager.clear();
[INFO] [stdout]     |                           ^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `clear`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_empty` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:178:35
[INFO] [stdout]     |
[INFO] [stdout] 178 |         assert!(app.queue_manager.is_empty());
[INFO] [stdout]     |                                   ^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `is_empty`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:187:38
[INFO] [stdout]     |
[INFO] [stdout] 187 |         assert_eq!(app.queue_manager.len(), 2);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `current_index` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:288:38
[INFO] [stdout]     |
[INFO] [stdout] 288 |         assert_eq!(app.queue_manager.current_index(), 1);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `current_index`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `current_index` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:296:38
[INFO] [stdout]     |
[INFO] [stdout] 296 |         assert_eq!(app.queue_manager.current_index(), 0);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `current_index`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:352:38
[INFO] [stdout]     |
[INFO] [stdout] 352 |         assert_eq!(app.queue_manager.len(), 1);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:368:38
[INFO] [stdout]     |
[INFO] [stdout] 368 |         assert_eq!(app.queue_manager.len(), 5);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `len` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:501:38
[INFO] [stdout]     |
[INFO] [stdout] 501 |         assert_eq!(app.queue_manager.len(), 5);
[INFO] [stdout]     |                                      ^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `len`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `current_index` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:563:47
[INFO] [stdout]     |
[INFO] [stdout] 563 |         let initial_index = app.queue_manager.current_index();
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `current_index`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `current_index` found for struct `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>` in the current scope
[INFO] [stdout]    --> src/integration_tests.rs:572:38
[INFO] [stdout]     |
[INFO] [stdout] 572 |         assert_eq!(app.queue_manager.current_index(), initial_index);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^ method not found in `std::sync::Arc<std::sync::Mutex<queue::QueueManagerImpl>>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is implemented and in scope
[INFO] [stdout] note: `queue::QueueManager` defines an item `current_index`, perhaps you need to implement it
[INFO] [stdout]    --> src/queue/mod.rs:14:1
[INFO] [stdout]     |
[INFO] [stdout]  14 | pub trait QueueManager: Send {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ProcessExt`
[INFO] [stdout]  --> src/audio/performance.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sysinfo::{System, SystemExt, ProcessExt, CpuExt};
[INFO] [stdout]   |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `is_transitioning` is assigned to, but never used
[INFO] [stdout]    --> src/audio/engine.rs:483:17
[INFO] [stdout]     |
[INFO] [stdout] 483 |             let mut is_transitioning = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_is_transitioning` instead
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:504:41
[INFO] [stdout]     |
[INFO] [stdout] 504 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:551:37
[INFO] [stdout]     |
[INFO] [stdout] 551 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:575:33
[INFO] [stdout]     |
[INFO] [stdout] 575 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:680:49
[INFO] [stdout]     |
[INFO] [stdout] 680 | ...                   is_transitioning = true;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `is_transitioning` is never read
[INFO] [stdout]    --> src/audio/engine.rs:703:57
[INFO] [stdout]     |
[INFO] [stdout] 703 | ...                   is_transitioning = false;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:885:29
[INFO] [stdout]     |
[INFO] [stdout] 885 | ...                   sample_clock = 0.0;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sample_clock` is never read
[INFO] [stdout]    --> src/audio/engine.rs:892:29
[INFO] [stdout]     |
[INFO] [stdout] 892 | ...                   sample_clock = (position.as_secs_f32() * sample_rate) % sample_rate;
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sample_clock`
[INFO] [stdout]    --> src/audio/engine.rs:867:13
[INFO] [stdout]     |
[INFO] [stdout] 867 |         let mut sample_clock = 0f32;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_clock`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/audio/engine.rs:1725:13
[INFO] [stdout]      |
[INFO] [stdout] 1725 |         let mut engine = AudioEngineImpl::new().expect("Failed to create AudioEngine");
[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/audio/engine.rs:1768:13
[INFO] [stdout]      |
[INFO] [stdout] 1768 |         let mut engine = AudioEngineImpl::new().expect("Failed to create AudioEngine");
[INFO] [stdout]      |             ----^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `queue_manager`
[INFO] [stdout]    --> src/audio/gapless.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |         let queue_manager = Box::new(QueueManagerImpl::with_playlist_directory(temp_dir.path().to_path_buf()).unwrap());
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_queue_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track1`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let track1 = create_test_track("track1", "flac");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track2`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:97:13
[INFO] [stdout]    |
[INFO] [stdout] 97 |         let track2 = create_test_track("track2", "wav");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `track3`
[INFO] [stdout]   --> src/audio/tests/gapless_integration.rs:98:13
[INFO] [stdout]    |
[INFO] [stdout] 98 |         let track3 = create_test_track("track3", "mp3");
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_track3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]    --> src/queue/playlist.rs:386:13
[INFO] [stdout]     |
[INFO] [stdout] 386 |         let manager = PlaylistManager::new(playlist_dir.clone()).unwrap();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `manager`
[INFO] [stdout]    --> src/queue/playlist.rs:401:13
[INFO] [stdout]     |
[INFO] [stdout] 401 |         let manager = PlaylistManager::new(playlist_dir.clone()).unwrap();
[INFO] [stdout]     |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_manager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0046, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0046`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `hires-audio-player` (bin "rmusic" test) due to 17 previous errors; 47 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "e291f4d95ffadcbb302d0940d7de3de420c30b256ada69a04817684f0de548e5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e291f4d95ffadcbb302d0940d7de3de420c30b256ada69a04817684f0de548e5", kill_on_drop: false }`
[INFO] [stdout] e291f4d95ffadcbb302d0940d7de3de420c30b256ada69a04817684f0de548e5
