[INFO] cloning repository https://github.com/IKchen/ratatui_musicplayer [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/IKchen/ratatui_musicplayer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIKchen%2Fratatui_musicplayer", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIKchen%2Fratatui_musicplayer'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 9512e1a09353c64c9d7a51eaace41d1233a46a6f [INFO] checking IKchen/ratatui_musicplayer/9512e1a09353c64c9d7a51eaace41d1233a46a6f against try#4d98531622e1718ae0bc3c7a1ab9cd8938428452+rustflags=-Dtail_expr_drop_order for pr-129604 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIKchen%2Fratatui_musicplayer" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/IKchen/ratatui_musicplayer on toolchain 4d98531622e1718ae0bc3c7a1ab9cd8938428452 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/IKchen/ratatui_musicplayer [INFO] finished tweaking git repo https://github.com/IKchen/ratatui_musicplayer [INFO] tweaked toml for git repo https://github.com/IKchen/ratatui_musicplayer written to /workspace/builds/worker-7-tc2/source/Cargo.toml [INFO] crate git repo https://github.com/IKchen/ratatui_musicplayer 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" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 55a861a78e010b4fa8e3cfe9144a5fe211c1234837c849ca0d2fdef445e92801 [INFO] running `Command { std: "docker" "start" "-a" "55a861a78e010b4fa8e3cfe9144a5fe211c1234837c849ca0d2fdef445e92801", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "55a861a78e010b4fa8e3cfe9144a5fe211c1234837c849ca0d2fdef445e92801", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "55a861a78e010b4fa8e3cfe9144a5fe211c1234837c849ca0d2fdef445e92801", kill_on_drop: false }` [INFO] [stdout] 55a861a78e010b4fa8e3cfe9144a5fe211c1234837c849ca0d2fdef445e92801 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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 -Dtail_expr_drop_order" "-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:923055f121b5182466d55868a8b05e67af8ba4a3a3f6bad814e953ca3cd3ac2a" "/opt/rustwide/cargo-home/bin/cargo" "+4d98531622e1718ae0bc3c7a1ab9cd8938428452" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c62b63e9f6b08f1b037ce37f0b20b484288ec4182ca9d15666b053f1e7bebe7d [INFO] running `Command { std: "docker" "start" "-a" "c62b63e9f6b08f1b037ce37f0b20b484288ec4182ca9d15666b053f1e7bebe7d", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.79 [INFO] [stderr] Compiling autocfg v1.2.0 [INFO] [stderr] Compiling libc v0.2.153 [INFO] [stderr] Checking log v0.4.21 [INFO] [stderr] Checking futures-core v0.3.30 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Compiling parking_lot_core v0.9.9 [INFO] [stderr] Compiling serde v1.0.197 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Checking futures-sink v0.3.30 [INFO] [stderr] Compiling rustversion v1.0.15 [INFO] [stderr] Checking bytemuck v1.15.0 [INFO] [stderr] Checking encoding_rs v0.8.33 [INFO] [stderr] Compiling syn v1.0.109 [INFO] [stderr] Checking zerocopy v0.7.32 [INFO] [stderr] Compiling lock_api v0.4.11 [INFO] [stderr] Compiling num-traits v0.2.18 [INFO] [stderr] Compiling slab v0.4.9 [INFO] [stderr] Checking symphonia-core v0.5.4 [INFO] [stderr] Checking ahash v0.8.11 [INFO] [stderr] Checking futures-channel v0.3.30 [INFO] [stderr] Checking tracing-core v0.1.32 [INFO] [stderr] Compiling quote v1.0.35 [INFO] [stderr] Checking bytes v1.6.0 [INFO] [stderr] Compiling syn v2.0.58 [INFO] [stderr] Checking signal-hook-registry v1.4.1 [INFO] [stderr] Checking mio v0.8.11 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking socket2 v0.5.6 [INFO] [stderr] Compiling paste v1.0.14 [INFO] [stderr] Checking allocator-api2 v0.2.16 [INFO] [stderr] Checking symphonia-metadata v0.5.4 [INFO] [stderr] Compiling cpal v0.15.3 [INFO] [stderr] Compiling heck v0.4.1 [INFO] [stderr] Checking tinyvec_macros v0.1.1 [INFO] [stderr] Compiling thiserror v1.0.58 [INFO] [stderr] Checking tinyvec v1.6.0 [INFO] [stderr] Checking hashbrown v0.14.3 [INFO] [stderr] Checking ogg v0.8.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.4 [INFO] [stderr] Checking signal-hook-mio v0.2.3 [INFO] [stderr] Compiling rustfft v6.2.0 [INFO] [stderr] Checking dasp_sample v0.11.0 [INFO] [stderr] Checking either v1.10.0 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Checking overload v0.1.1 [INFO] [stderr] Checking itertools v0.12.1 [INFO] [stderr] Checking nu-ansi-term v0.46.0 [INFO] [stderr] Checking transpose v0.2.3 [INFO] [stderr] Checking primal-check v0.3.3 [INFO] [stderr] Checking lru v0.12.3 [INFO] [stderr] Checking num-complex v0.4.5 [INFO] [stderr] Checking symphonia v0.5.4 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking lewton v0.10.2 [INFO] [stderr] Checking thread_local v1.1.8 [INFO] [stderr] Checking claxon v0.4.3 [INFO] [stderr] Checking hound v3.5.1 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking unicode-width v0.1.11 [INFO] [stderr] Compiling indoc v2.0.5 [INFO] [stderr] Checking tracing-subscriber v0.3.18 [INFO] [stderr] Compiling stability v0.1.1 [INFO] [stderr] Compiling serde_derive v1.0.197 [INFO] [stderr] Compiling tokio-macros v2.2.0 [INFO] [stderr] Compiling futures-macro v0.3.30 [INFO] [stderr] Compiling strum_macros v0.25.3 [INFO] [stderr] Compiling thiserror-impl v1.0.58 [INFO] [stderr] Compiling tracing-attributes v0.1.27 [INFO] [stderr] Checking tokio v1.37.0 [INFO] [stderr] Checking futures-util v0.3.30 [INFO] [stderr] Checking mp3-duration v0.1.10 [INFO] [stderr] Checking tracing v0.1.40 [INFO] [stderr] Checking strum v0.25.0 [INFO] [stderr] Checking futures-executor v0.3.30 [INFO] [stderr] Checking futures v0.3.30 [INFO] [stderr] Checking tokio-stream v0.1.15 [INFO] [stderr] Checking tokio-util v0.7.10 [INFO] [stderr] Checking bitflags v2.5.0 [INFO] [stderr] Checking alsa v0.9.0 [INFO] [stderr] Checking crossterm v0.27.0 [INFO] [stderr] Checking ratatui v0.25.0 [INFO] [stderr] Checking rodio v0.17.3 [INFO] [stderr] Checking ratatui_music v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/error.rs:3:6 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/event.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | time::{interval,Duration}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::channel::oneshot::Cancellation` [INFO] [stdout] --> src/event.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use futures::channel::oneshot::Cancellation; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ok` and `select` [INFO] [stdout] --> src/event.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | use futures::future::{ok, select}; [INFO] [stdout] | ^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CrosstermBackend` [INFO] [stdout] --> src/tui.rs:1:53 [INFO] [stdout] | [INFO] [stdout] 1 | use ratatui::backend::{CrosstermBackend as Backend, CrosstermBackend}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `event` [INFO] [stdout] --> src/tui.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::{error::MyError,event}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `thread` [INFO] [stdout] --> src/tui.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | use std::{thread,io}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/home.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/home.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/home.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/components/home.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/home.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::tracinglog::TracingLogComponent` [INFO] [stdout] --> src/components/home.rs:11:6 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::components::tracinglog::TracingLogComponent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components/home.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/quit.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::ok` [INFO] [stdout] --> src/components/quit.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::future::ok; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::prelude::Direction::Vertical` [INFO] [stdout] --> src/components/quit.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use ratatui::prelude::Direction::Vertical; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/quit.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/quit.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ptr::addr_of_mut` [INFO] [stdout] --> src/components/tracinglog.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::ptr::addr_of_mut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/tracinglog.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::runtime::Runtime` [INFO] [stdout] --> src/components/tracinglog.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::runtime::Runtime; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/tracinglog.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/tracinglog.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Event`, `Level`, `Subscriber`, `event`, `info`, and `warn` [INFO] [stdout] --> src/components/tracinglog.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | use tracing::{Subscriber, Event, event, Level, info, warn}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/tracinglog.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components/tracinglog.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/components/filelist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/filelist.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::fs` [INFO] [stdout] --> src/components/filelist.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::fs; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/filelist.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::field::display::Messages` [INFO] [stdout] --> src/components/playzone.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing_subscriber::field::display::Messages; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/analysis.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Receiver` [INFO] [stdout] --> src/components/analysis.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/components/analysis.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `log::info` [INFO] [stdout] --> src/components/analysis.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use log::info; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/musicprogress.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/components/musicprogress.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/lyric.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::text::Line` [INFO] [stdout] --> src/components/apptitle.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use ratatui::text::Line; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::DerefMut` [INFO] [stdout] --> src/app.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::DerefMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/app.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::mpsc::{channel, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/app.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::channel::mpsc::unbounded` [INFO] [stdout] --> src/app.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use futures::channel::mpsc::unbounded; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::try_join` [INFO] [stdout] --> src/app.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use futures::future::try_join; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Instant` [INFO] [stdout] --> src/app.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::time::Instant; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `runtime` and `try_join` [INFO] [stdout] --> src/app.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::{runtime, try_join}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/app.rs:14:25 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> src/app.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_util::sync::CancellationToken` [INFO] [stdout] --> src/app.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio_util::sync::CancellationToken; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/app.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::EitherWriter::A` [INFO] [stdout] --> src/app.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use tracing_subscriber::fmt::writer::EitherWriter::A; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Identity` and `SubscriberExt` [INFO] [stdout] --> src/app.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use tracing_subscriber::layer::{Identity, SubscriberExt}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/app.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `action`, `app`, and `render` [INFO] [stdout] --> src/app.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | use crate::{action, app, event, render}; [INFO] [stdout] | ^^^^^^ ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::LyricController` [INFO] [stdout] --> src/app.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | use crate::lyric::LyricController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/app.rs:210:69 [INFO] [stdout] | [INFO] [stdout] 210 | let (sample_sender,sample_receiver)= std::sync::mpsc::channel();;//播放时,发送样本数据给fft [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `fmt` and `string::ToString` [INFO] [stdout] --> src/action.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{fmt, string::ToString}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `KeyEvent` [INFO] [stdout] --> src/action.rs:4:33 [INFO] [stdout] | [INFO] [stdout] 4 | use crossterm::event::{KeyCode, KeyEvent}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MutexGuard` and `mpsc` [INFO] [stdout] --> src/action.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::{mpsc, MutexGuard,Mutex}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/action.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> src/action.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_util::sync::CancellationToken` [INFO] [stdout] --> src/action.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio_util::sync::CancellationToken; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserializer`, `Visitor`, and `self` [INFO] [stdout] --> src/action.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | de::{self, Deserializer, Visitor}, [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/action.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::apptitle::AppTitle` [INFO] [stdout] --> src/action.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::components::apptitle::AppTitle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::filelist::FileListComponent` [INFO] [stdout] --> src/action.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use crate::components::filelist::FileListComponent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::event` [INFO] [stdout] --> src/action.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::event; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc::Receiver` [INFO] [stdout] --> src/render.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::mpsc::Receiver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/render.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/render.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::Frame` [INFO] [stdout] --> src/render.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use ratatui::Frame; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Margin` [INFO] [stdout] --> src/render.rs:7:54 [INFO] [stdout] | [INFO] [stdout] 7 | use ratatui::layout::{Constraint, Direction, Layout, Margin}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/render.rs:8:25 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `spawn` [INFO] [stdout] --> src/render.rs:10:31 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::task::{JoinHandle, spawn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/render.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::action::Action` [INFO] [stdout] --> src/render.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::action::Action; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::analysis::Analysis` [INFO] [stdout] --> src/render.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::components::analysis::Analysis; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/render.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::quit::Quit` [INFO] [stdout] --> src/render.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::components::quit::Quit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::Lyric` [INFO] [stdout] --> src/render.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::lyric::Lyric; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::musicplayer::MusicPlayer` [INFO] [stdout] --> src/render.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | use crate::musicplayer::MusicPlayer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/tracing.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::text::Text` [INFO] [stdout] --> src/tracing.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use ratatui::text::Text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::timeout` [INFO] [stdout] --> src/tracing.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::time::timeout; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/tracing.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::Registry` [INFO] [stdout] --> src/tracing.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use tracing_subscriber::Registry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/tracing.rs:71:86 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->(JoinHandle<()>) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 71 - pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->(JoinHandle<()>) { [INFO] [stdout] 71 + pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->JoinHandle<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_addcarryx_u64` [INFO] [stdout] --> src/fft.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::arch::x86_64::_addcarryx_u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::File` [INFO] [stdout] --> src/fft.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fs::File; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/fft.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sender` [INFO] [stdout] --> src/fft.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/fft.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TryFutureExt` [INFO] [stdout] --> src/fft.rs:9:24 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::{SinkExt, TryFutureExt}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Decoder` [INFO] [stdout] --> src/fft.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use rodio::{Decoder, Source}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::action::Action` [INFO] [stdout] --> src/fft.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::action::Action; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/fft.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/fft.rs:140:100 [INFO] [stdout] | [INFO] [stdout] 140 | pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->(JoinHandle<()>){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 140 - pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->(JoinHandle<()>){ [INFO] [stdout] 140 + pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->JoinHandle<()>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/musicplayer.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/musicplayer.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sample` [INFO] [stdout] --> src/musicplayer.rs:81:14 [INFO] [stdout] | [INFO] [stdout] 81 | use rodio::{ Sample}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `channel` [INFO] [stdout] --> src/musicplayer.rs:82:23 [INFO] [stdout] | [INFO] [stdout] 82 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread::spawn` [INFO] [stdout] --> src/musicplayer.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | use std::thread::spawn; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Instant` [INFO] [stdout] --> src/musicplayer.rs:84:27 [INFO] [stdout] | [INFO] [stdout] 84 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/musicplayer.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/musicplayer.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsStr` [INFO] [stdout] --> src/lyric.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs` [INFO] [stdout] --> src/lyric.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fs; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/lyric.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::ok` [INFO] [stdout] --> src/sounds.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use futures::future::ok; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::f32::consts::PI` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::f32::consts::PI; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::Component` [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::components::Component; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/main.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `app::App` [INFO] [stdout] --> src/main.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use app::App; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `OutputStream`, `Sink`, and `Source` [INFO] [stdout] --> src/main.rs:23:13 [INFO] [stdout] | [INFO] [stdout] 23 | use rodio::{Decoder, OutputStream, Sink, Source}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_complex::Complex` [INFO] [stdout] --> src/main.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | use rustfft::num_complex::Complex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::FftPlanner` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use rustfft::FftPlanner; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::File` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use std::fs::File; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/main.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/main.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/main.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc::channel` [INFO] [stdout] --> src/main.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | use std::sync::mpsc::channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/main.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_traits::ToPrimitive` [INFO] [stdout] --> src/main.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use rustfft::num_traits::ToPrimitive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/main.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::fft::FFTController` [INFO] [stdout] --> src/main.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | use crate::fft::FFTController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::LyricController` [INFO] [stdout] --> src/main.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | use crate::lyric::LyricController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::musicplayer::MusicPlayer` [INFO] [stdout] --> src/main.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | use crate::musicplayer::MusicPlayer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::sounds::SoundsList` [INFO] [stdout] --> src/main.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | use crate::sounds::SoundsList; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Error` [INFO] [stdout] --> src/error.rs:3:6 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `interval` [INFO] [stdout] --> src/event.rs:8:12 [INFO] [stdout] | [INFO] [stdout] 8 | time::{interval,Duration}, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::channel::oneshot::Cancellation` [INFO] [stdout] --> src/event.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use futures::channel::oneshot::Cancellation; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `ok` and `select` [INFO] [stdout] --> src/event.rs:12:23 [INFO] [stdout] | [INFO] [stdout] 12 | use futures::future::{ok, select}; [INFO] [stdout] | ^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::test` [INFO] [stdout] --> src/event.rs:164:9 [INFO] [stdout] | [INFO] [stdout] 164 | use tokio::test; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::event` [INFO] [stdout] --> src/event.rs:166:9 [INFO] [stdout] | [INFO] [stdout] 166 | use crate::event; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `CrosstermBackend` [INFO] [stdout] --> src/tui.rs:1:53 [INFO] [stdout] | [INFO] [stdout] 1 | use ratatui::backend::{CrosstermBackend as Backend, CrosstermBackend}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `event` [INFO] [stdout] --> src/tui.rs:3:28 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::{error::MyError,event}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `thread` [INFO] [stdout] --> src/tui.rs:4:11 [INFO] [stdout] | [INFO] [stdout] 4 | use std::{thread,io}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/home.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/home.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/home.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/components/home.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/home.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::tracinglog::TracingLogComponent` [INFO] [stdout] --> src/components/home.rs:11:6 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::components::tracinglog::TracingLogComponent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components/home.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/quit.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::ok` [INFO] [stdout] --> src/components/quit.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use futures::future::ok; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::prelude::Direction::Vertical` [INFO] [stdout] --> src/components/quit.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use ratatui::prelude::Direction::Vertical; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/quit.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/quit.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ptr::addr_of_mut` [INFO] [stdout] --> src/components/tracinglog.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::ptr::addr_of_mut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/components/tracinglog.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::runtime::Runtime` [INFO] [stdout] --> src/components/tracinglog.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::runtime::Runtime; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/tracinglog.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::Mutex` [INFO] [stdout] --> src/components/tracinglog.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::sync::Mutex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Event`, `Level`, `Subscriber`, `event`, `info`, and `warn` [INFO] [stdout] --> src/components/tracinglog.rs:11:15 [INFO] [stdout] | [INFO] [stdout] 11 | use tracing::{Subscriber, Event, event, Level, info, warn}; [INFO] [stdout] | ^^^^^^^^^^ ^^^^^ ^^^^^ ^^^^^ ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/tracinglog.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::tracing::TracingLog` [INFO] [stdout] --> src/components/tracinglog.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::tracing::TracingLog; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/components/filelist.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/filelist.rs:2:17 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::fs` [INFO] [stdout] --> src/components/filelist.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::fs; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/components/filelist.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::field::display::Messages` [INFO] [stdout] --> src/components/playzone.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use tracing_subscriber::field::display::Messages; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/analysis.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Receiver` [INFO] [stdout] --> src/components/analysis.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/components/analysis.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `log::info` [INFO] [stdout] --> src/components/analysis.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use log::info; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/components/musicprogress.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/components/musicprogress.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc::UnboundedSender` [INFO] [stdout] --> src/components/lyric.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::sync::mpsc::UnboundedSender; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::text::Line` [INFO] [stdout] --> src/components/apptitle.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use ratatui::text::Line; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::DerefMut` [INFO] [stdout] --> src/app.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::DerefMut; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `channel` [INFO] [stdout] --> src/app.rs:4:23 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::mpsc::{channel, Sender}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/app.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::channel::mpsc::unbounded` [INFO] [stdout] --> src/app.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use futures::channel::mpsc::unbounded; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::try_join` [INFO] [stdout] --> src/app.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use futures::future::try_join; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::Instant` [INFO] [stdout] --> src/app.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tokio::time::Instant; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `runtime` and `try_join` [INFO] [stdout] --> src/app.rs:13:13 [INFO] [stdout] | [INFO] [stdout] 13 | use tokio::{runtime, try_join}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/app.rs:14:25 [INFO] [stdout] | [INFO] [stdout] 14 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> src/app.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_util::sync::CancellationToken` [INFO] [stdout] --> src/app.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use tokio_util::sync::CancellationToken; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/app.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::fmt::writer::EitherWriter::A` [INFO] [stdout] --> src/app.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use tracing_subscriber::fmt::writer::EitherWriter::A; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Identity` and `SubscriberExt` [INFO] [stdout] --> src/app.rs:19:33 [INFO] [stdout] | [INFO] [stdout] 19 | use tracing_subscriber::layer::{Identity, SubscriberExt}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/app.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `action`, `app`, and `render` [INFO] [stdout] --> src/app.rs:24:13 [INFO] [stdout] | [INFO] [stdout] 24 | use crate::{action, app, event, render}; [INFO] [stdout] | ^^^^^^ ^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::LyricController` [INFO] [stdout] --> src/app.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | use crate::lyric::LyricController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/app.rs:210:69 [INFO] [stdout] | [INFO] [stdout] 210 | let (sample_sender,sample_receiver)= std::sync::mpsc::channel();;//播放时,发送样本数据给fft [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `fmt` and `string::ToString` [INFO] [stdout] --> src/action.rs:1:11 [INFO] [stdout] | [INFO] [stdout] 1 | use std::{fmt, string::ToString}; [INFO] [stdout] | ^^^ ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `KeyEvent` [INFO] [stdout] --> src/action.rs:4:33 [INFO] [stdout] | [INFO] [stdout] 4 | use crossterm::event::{KeyCode, KeyEvent}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `MutexGuard` and `mpsc` [INFO] [stdout] --> src/action.rs:5:19 [INFO] [stdout] | [INFO] [stdout] 5 | use tokio::sync::{mpsc, MutexGuard,Mutex}; [INFO] [stdout] | ^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/action.rs:6:25 [INFO] [stdout] | [INFO] [stdout] 6 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::task::JoinHandle` [INFO] [stdout] --> src/action.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use tokio::task::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio_util::sync::CancellationToken` [INFO] [stdout] --> src/action.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio_util::sync::CancellationToken; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Deserializer`, `Visitor`, and `self` [INFO] [stdout] --> src/action.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | de::{self, Deserializer, Visitor}, [INFO] [stdout] | ^^^^ ^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/action.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::apptitle::AppTitle` [INFO] [stdout] --> src/action.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::components::apptitle::AppTitle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::filelist::FileListComponent` [INFO] [stdout] --> src/action.rs:21:5 [INFO] [stdout] | [INFO] [stdout] 21 | use crate::components::filelist::FileListComponent; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::event` [INFO] [stdout] --> src/action.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::event; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc::Receiver` [INFO] [stdout] --> src/render.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::sync::mpsc::Receiver; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/render.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/render.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::Frame` [INFO] [stdout] --> src/render.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use ratatui::Frame; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Margin` [INFO] [stdout] --> src/render.rs:7:54 [INFO] [stdout] | [INFO] [stdout] 7 | use ratatui::layout::{Constraint, Direction, Layout, Margin}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `UnboundedReceiver` and `UnboundedSender` [INFO] [stdout] --> src/render.rs:8:25 [INFO] [stdout] | [INFO] [stdout] 8 | use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `spawn` [INFO] [stdout] --> src/render.rs:10:31 [INFO] [stdout] | [INFO] [stdout] 10 | use tokio::task::{JoinHandle, spawn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/render.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 12 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::action::Action` [INFO] [stdout] --> src/render.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::action::Action; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::analysis::Analysis` [INFO] [stdout] --> src/render.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | use crate::components::analysis::Analysis; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::home::Home` [INFO] [stdout] --> src/render.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::components::home::Home; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::quit::Quit` [INFO] [stdout] --> src/render.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::components::quit::Quit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::Lyric` [INFO] [stdout] --> src/render.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use crate::lyric::Lyric; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::musicplayer::MusicPlayer` [INFO] [stdout] --> src/render.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | use crate::musicplayer::MusicPlayer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/tracing.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ratatui::text::Text` [INFO] [stdout] --> src/tracing.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use ratatui::text::Text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::time::timeout` [INFO] [stdout] --> src/tracing.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use tokio::time::timeout; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::info` [INFO] [stdout] --> src/tracing.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use tracing::info; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing_subscriber::Registry` [INFO] [stdout] --> src/tracing.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use tracing_subscriber::Registry; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/tracing.rs:71:86 [INFO] [stdout] | [INFO] [stdout] 71 | pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->(JoinHandle<()>) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 71 - pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->(JoinHandle<()>) { [INFO] [stdout] 71 + pub fn recv_log(log_receiver: UnboundedReceiver, app: Arc> ) ->JoinHandle<()> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_addcarryx_u64` [INFO] [stdout] --> src/fft.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::arch::x86_64::_addcarryx_u64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::File` [INFO] [stdout] --> src/fft.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fs::File; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/fft.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sender` [INFO] [stdout] --> src/fft.rs:7:33 [INFO] [stdout] | [INFO] [stdout] 7 | use std::sync::mpsc::{Receiver, Sender}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/fft.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `TryFutureExt` [INFO] [stdout] --> src/fft.rs:9:24 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::{SinkExt, TryFutureExt}; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Decoder` [INFO] [stdout] --> src/fft.rs:12:13 [INFO] [stdout] | [INFO] [stdout] 12 | use rodio::{Decoder, Source}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::action::Action` [INFO] [stdout] --> src/fft.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::action::Action; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/fft.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/fft.rs:140:100 [INFO] [stdout] | [INFO] [stdout] 140 | pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->(JoinHandle<()>){ [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 140 - pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->(JoinHandle<()>){ [INFO] [stdout] 140 + pub async fn get_fft_result(mut music_reciver:UnboundedReceiver>, app:Arc>) ->JoinHandle<()>{ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/musicplayer.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/musicplayer.rs:4:17 [INFO] [stdout] | [INFO] [stdout] 4 | use std::sync::{Arc}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sample` [INFO] [stdout] --> src/musicplayer.rs:81:14 [INFO] [stdout] | [INFO] [stdout] 81 | use rodio::{ Sample}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Receiver` and `channel` [INFO] [stdout] --> src/musicplayer.rs:82:23 [INFO] [stdout] | [INFO] [stdout] 82 | use std::sync::mpsc::{channel, Receiver, Sender}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread::spawn` [INFO] [stdout] --> src/musicplayer.rs:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | use std::thread::spawn; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Instant` [INFO] [stdout] --> src/musicplayer.rs:84:27 [INFO] [stdout] | [INFO] [stdout] 84 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::app::App` [INFO] [stdout] --> src/musicplayer.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | use crate::app::App; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/musicplayer.rs:89:5 [INFO] [stdout] | [INFO] [stdout] 89 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/musicplayer.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/musicplayer.rs:148:9 [INFO] [stdout] | [INFO] [stdout] 148 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/musicplayer.rs:173:73 [INFO] [stdout] | [INFO] [stdout] 173 | let (sample_sender,sample_receiver)= std::sync::mpsc::channel();;//播放时,发送样本数据给fft [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ffi::OsStr` [INFO] [stdout] --> src/lyric.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ffi::OsStr; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs` [INFO] [stdout] --> src/lyric.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::fs; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::error::MyError` [INFO] [stdout] --> src/lyric.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::error::MyError; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `futures::future::ok` [INFO] [stdout] --> src/sounds.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use futures::future::ok; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::File` [INFO] [stdout] --> src/sounds.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | use std::fs::File; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/sounds.rs:195:9 [INFO] [stdout] | [INFO] [stdout] 195 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::event::Event` [INFO] [stdout] --> src/sounds.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | use crate::event::Event; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::f32::consts::PI` [INFO] [stdout] --> src/main.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | use std::f32::consts::PI; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::components::Component` [INFO] [stdout] --> src/main.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | use crate::components::Component; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> src/main.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `app::App` [INFO] [stdout] --> src/main.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | use app::App; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Decoder`, `OutputStream`, `Sink`, and `Source` [INFO] [stdout] --> src/main.rs:23:13 [INFO] [stdout] | [INFO] [stdout] 23 | use rodio::{Decoder, OutputStream, Sink, Source}; [INFO] [stdout] | ^^^^^^^ ^^^^^^^^^^^^ ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_complex::Complex` [INFO] [stdout] --> src/main.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | use rustfft::num_complex::Complex; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::FftPlanner` [INFO] [stdout] --> src/main.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | use rustfft::FftPlanner; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fs::File` [INFO] [stdout] --> src/main.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use std::fs::File; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::BufReader` [INFO] [stdout] --> src/main.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | use std::io::BufReader; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::path::Path` [INFO] [stdout] --> src/main.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | use std::path::Path; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Arc` and `Mutex` [INFO] [stdout] --> src/main.rs:29:17 [INFO] [stdout] | [INFO] [stdout] 29 | use std::sync::{Arc, Mutex}; [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::sync::mpsc::channel` [INFO] [stdout] --> src/main.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | use std::sync::mpsc::channel; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread` [INFO] [stdout] --> src/main.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | use std::thread; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::time::Duration` [INFO] [stdout] --> src/main.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | use std::time::Duration; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_traits::ToPrimitive` [INFO] [stdout] --> src/main.rs:33:5 [INFO] [stdout] | [INFO] [stdout] 33 | use rustfft::num_traits::ToPrimitive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tokio::sync::mpsc` [INFO] [stdout] --> src/main.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | use tokio::sync::mpsc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::fft::FFTController` [INFO] [stdout] --> src/main.rs:35:5 [INFO] [stdout] | [INFO] [stdout] 35 | use crate::fft::FFTController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::lyric::LyricController` [INFO] [stdout] --> src/main.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | use crate::lyric::LyricController; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::musicplayer::MusicPlayer` [INFO] [stdout] --> src/main.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | use crate::musicplayer::MusicPlayer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::sounds::SoundsList` [INFO] [stdout] --> src/main.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | use crate::sounds::SoundsList; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/event.rs:77:38 [INFO] [stdout] | [INFO] [stdout] 77 | ... Some(Err(err)) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `err` [INFO] [stdout] --> src/event.rs:77:38 [INFO] [stdout] | [INFO] [stdout] 77 | ... Some(Err(err)) => { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_err` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/event.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | let mut cancelation_token = CancellationToken::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/event.rs:128:9 [INFO] [stdout] | [INFO] [stdout] 128 | let mut cancelation_token = CancellationToken::new(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:129:53 [INFO] [stdout] | [INFO] [stdout] 129 | ... let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:133:53 [INFO] [stdout] | [INFO] [stdout] 133 | ... let mut fft_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:137:53 [INFO] [stdout] | [INFO] [stdout] 137 | ... let mut playzone_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `if let` pattern [INFO] [stdout] --> src/app.rs:228:16 [INFO] [stdout] | [INFO] [stdout] 228 | if let (action,path) = action_receiver.recv().unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the `if let` is useless [INFO] [stdout] = help: consider replacing the `if let` with a `let` [INFO] [stdout] = note: `#[warn(irrefutable_let_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | let mut app=App::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:167:11 [INFO] [stdout] | [INFO] [stdout] 167 | let (mut log,log_receiver) =TracingLog::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:174:25 [INFO] [stdout] | [INFO] [stdout] 174 | let (action_sender, mut action_receiver) = std::sync::mpsc::channel(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `while let` pattern [INFO] [stdout] --> src/fft.rs:144:16 [INFO] [stdout] | [INFO] [stdout] 144 | while let mut fft_result=music_reciver.recv().await.unwrap(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the loop will never exit [INFO] [stdout] = help: consider instead using a `loop { ... }` with a `let` inside it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/fft.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | for ((name, value), new_value) in fft_buffer_clone.lock().await.iter_mut().zip(fft_result.iter()) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/fft.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | let mut fft_buffer_clone=Arc::clone(&app.lock().await.fft_result); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/fft.rs:144:20 [INFO] [stdout] | [INFO] [stdout] 144 | while let mut fft_result=music_reciver.recv().await.unwrap(){ [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:129:53 [INFO] [stdout] | [INFO] [stdout] 129 | ... let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:133:53 [INFO] [stdout] | [INFO] [stdout] 133 | ... let mut fft_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/render.rs:137:53 [INFO] [stdout] | [INFO] [stdout] 137 | ... let mut playzone_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `if let` pattern [INFO] [stdout] --> src/app.rs:228:16 [INFO] [stdout] | [INFO] [stdout] 228 | if let (action,path) = action_receiver.recv().unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the `if let` is useless [INFO] [stdout] = help: consider replacing the `if let` with a `let` [INFO] [stdout] = note: `#[warn(irrefutable_let_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | let mut app=App::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:167:11 [INFO] [stdout] | [INFO] [stdout] 167 | let (mut log,log_receiver) =TracingLog::new(); [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:174:25 [INFO] [stdout] | [INFO] [stdout] 174 | let (action_sender, mut action_receiver) = std::sync::mpsc::channel(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `while let` pattern [INFO] [stdout] --> src/fft.rs:144:16 [INFO] [stdout] | [INFO] [stdout] 144 | while let mut fft_result=music_reciver.recv().await.unwrap(){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the loop will never exit [INFO] [stdout] = help: consider instead using a `loop { ... }` with a `let` inside it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `name` [INFO] [stdout] --> src/fft.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | for ((name, value), new_value) in fft_buffer_clone.lock().await.iter_mut().zip(fft_result.iter()) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/fft.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | let mut fft_buffer_clone=Arc::clone(&app.lock().await.fft_result); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/fft.rs:144:20 [INFO] [stdout] | [INFO] [stdout] 144 | while let mut fft_result=music_reciver.recv().await.unwrap(){ [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FutureExt` [INFO] [stdout] --> src/action.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use futures::{FutureExt, StreamExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `StreamExt` [INFO] [stdout] --> src/action.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | use futures::{FutureExt, StreamExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_complex::ComplexFloat` [INFO] [stdout] --> src/tracing.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rustfft::num_complex::ComplexFloat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Source` [INFO] [stdout] --> src/fft.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use rodio::{Decoder, Source}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SinkExt` [INFO] [stdout] --> src/fft.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::{SinkExt, TryFutureExt}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/event.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/event.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 98 | CrosstermEvent::Key(key) => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 105 | CrosstermEvent::Mouse(mouse) => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 108 | CrosstermEvent::Resize(x, y) => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 111 | CrosstermEvent::FocusLost => { [INFO] [stdout] | ------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 120 | _ => {} [INFO] [stdout] | ^ ...and 2 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/home.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/home.rs:58:26 [INFO] [stdout] | [INFO] [stdout] 58 | fn update(& mut self,action:Option)->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rect` [INFO] [stdout] --> src/components/quit.rs:24:43 [INFO] [stdout] | [INFO] [stdout] 24 | fn draw(&mut self, f: &mut Frame<'_>, rect: Rect) -> Result<(), MyError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rect` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/quit.rs:39:25 [INFO] [stdout] | [INFO] [stdout] 39 | fn update(&mut self,action:Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/tracinglog.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut liststate=ListState::default(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/tracinglog.rs:48:14 [INFO] [stdout] | [INFO] [stdout] 48 | let mut list_item:Vec=lines.iter().rev().map(//rev()是倒序 [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/tracinglog.rs:75:27 [INFO] [stdout] | [INFO] [stdout] 75 | fn update(& mut self, action: Option) ->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | let mut vertical_scroll=0; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | let mut vertical_scroll_state=ratatui::widgets::ScrollbarState::new(20); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut action_tx=None; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let mut itemlist=self.sound_list.sounds.clone(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:77:21 [INFO] [stdout] | [INFO] [stdout] 77 | let mut listitem=ListItem::new(fileitem.name).bg(Color::Black); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/playzone.rs:34:26 [INFO] [stdout] | [INFO] [stdout] 34 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/analysis.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut newdata: Vec<_>=self.data.iter().map(|(barname,value)|{ [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/analysis.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut group=BarGroup::default().bars(&newdata); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/lyric.rs:126:26 [INFO] [stdout] | [INFO] [stdout] 126 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `block` [INFO] [stdout] --> src/components/apptitle.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | let block=Block::new().borders(Borders::ALL).light_red().padding(Padding::new(0,0,0,0)).title("out"); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/apptitle.rs:41:26 [INFO] [stdout] | [INFO] [stdout] 41 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tx` [INFO] [stdout] --> src/components.rs:40:43 [INFO] [stdout] | [INFO] [stdout] 40 | fn register_action_handler(&mut self, tx: Sender) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_tx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | let mut log=vec![String::new()]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | let mut sounds_list=SoundsList::set_path("music".to_string()); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | let mut fft_result=Arc::new(Mutex::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action_sender` [INFO] [stdout] --> src/app.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn init_component(&mut self, action_sender: Sender<(Action,Option)>){ [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_sender` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:100:13 [INFO] [stdout] | [INFO] [stdout] 100 | let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | let mut fft_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `FutureExt` [INFO] [stdout] --> src/action.rs:16:15 [INFO] [stdout] | [INFO] [stdout] 16 | use futures::{FutureExt, StreamExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | let mut playzone_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `StreamExt` [INFO] [stdout] --> src/action.rs:16:26 [INFO] [stdout] | [INFO] [stdout] 16 | use futures::{FutureExt, StreamExt}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `rustfft::num_complex::ComplexFloat` [INFO] [stdout] --> src/tracing.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use rustfft::num_complex::ComplexFloat; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Source` [INFO] [stdout] --> src/fft.rs:12:22 [INFO] [stdout] | [INFO] [stdout] 12 | use rodio::{Decoder, Source}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SinkExt` [INFO] [stdout] --> src/fft.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | use futures::{SinkExt, TryFutureExt}; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable pattern [INFO] [stdout] --> src/event.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 120 | _ => {} [INFO] [stdout] | ^ no value can reach this [INFO] [stdout] | [INFO] [stdout] note: multiple earlier patterns match some of the same values [INFO] [stdout] --> src/event.rs:120:9 [INFO] [stdout] | [INFO] [stdout] 98 | CrosstermEvent::Key(key) => { [INFO] [stdout] | ------------------------ matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 105 | CrosstermEvent::Mouse(mouse) => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 108 | CrosstermEvent::Resize(x, y) => { [INFO] [stdout] | ---------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 111 | CrosstermEvent::FocusLost => { [INFO] [stdout] | ------------------------- matches some of the same values [INFO] [stdout] ... [INFO] [stdout] 120 | _ => {} [INFO] [stdout] | ^ ...and 2 other patterns collectively make this unreachable [INFO] [stdout] = note: `#[warn(unreachable_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/home.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/home.rs:58:26 [INFO] [stdout] | [INFO] [stdout] 58 | fn update(& mut self,action:Option)->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rect` [INFO] [stdout] --> src/components/quit.rs:24:43 [INFO] [stdout] | [INFO] [stdout] 24 | fn draw(&mut self, f: &mut Frame<'_>, rect: Rect) -> Result<(), MyError> { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_rect` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/quit.rs:39:25 [INFO] [stdout] | [INFO] [stdout] 39 | fn update(&mut self,action:Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/tracinglog.rs:36:13 [INFO] [stdout] | [INFO] [stdout] 36 | let mut liststate=ListState::default(); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/tracinglog.rs:48:14 [INFO] [stdout] | [INFO] [stdout] 48 | let mut list_item:Vec=lines.iter().rev().map(//rev()是倒序 [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/tracinglog.rs:75:27 [INFO] [stdout] | [INFO] [stdout] 75 | fn update(& mut self, action: Option) ->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:26:13 [INFO] [stdout] | [INFO] [stdout] 26 | let mut vertical_scroll=0; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | let mut vertical_scroll_state=ratatui::widgets::ScrollbarState::new(20); [INFO] [stdout] | ----^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut action_tx=None; [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sample_rate` [INFO] [stdout] --> src/fft.rs:37:16 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sample_rate: f32, fft_size: usize,sample_receiver: Receiver,music_tx: UnboundedSender>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:74:13 [INFO] [stdout] | [INFO] [stdout] 74 | let mut itemlist=self.sound_list.sounds.clone(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fft_size` [INFO] [stdout] --> src/fft.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sample_rate: f32, fft_size: usize,sample_receiver: Receiver,music_tx: UnboundedSender>) -> Self { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fft_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/filelist.rs:77:21 [INFO] [stdout] | [INFO] [stdout] 77 | let mut listitem=ListItem::new(fileitem.name).bg(Color::Black); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `while let` pattern [INFO] [stdout] --> src/fft.rs:83:19 [INFO] [stdout] | [INFO] [stdout] 83 | while let sample=self.sample_receive.recv().unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the loop will never exit [INFO] [stdout] = help: consider instead using a `loop { ... }` with a `let` inside it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/playzone.rs:34:26 [INFO] [stdout] | [INFO] [stdout] 34 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `energy` [INFO] [stdout] --> src/fft.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 129 | for (i, &energy) in note_energies.iter().enumerate() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_energy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/analysis.rs:66:13 [INFO] [stdout] | [INFO] [stdout] 66 | let mut newdata: Vec<_>=self.data.iter().map(|(barname,value)|{ [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/components/analysis.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | let mut group=BarGroup::default().bars(&newdata); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `note_name` [INFO] [stdout] --> src/fft.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | let note_name = self.midi_number_to_note_name(i as i32 + 60); // C4开始 [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_note_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/musicplayer.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | let mut source1 = Decoder::new(buf_reader1).unwrap().convert_samples::(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/musicplayer.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | let mut my_source = MyCustomSource::new(source1, sample_sender); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/lyric.rs:126:26 [INFO] [stdout] | [INFO] [stdout] 126 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut path=path; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut lyric=vec![Lyric::new()]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let mut time=String::new(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let mut filestring=String::new();//歌词string [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `seconds_with_decimals` [INFO] [stdout] --> src/components/lyric.rs:177:17 [INFO] [stdout] | [INFO] [stdout] 177 | let seconds_with_decimals = time.1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_seconds_with_decimals` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now_duration` [INFO] [stdout] --> src/components/lyric.rs:192:17 [INFO] [stdout] | [INFO] [stdout] 192 | let now_duration = Duration::new(minutes * 60 + seconds, 0) + Duration::from_millis(decimals * 10); [INFO] [stdout] | ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_now_duration` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `block` [INFO] [stdout] --> src/components/apptitle.rs:27:13 [INFO] [stdout] | [INFO] [stdout] 27 | let block=Block::new().borders(Borders::ALL).light_red().padding(Padding::new(0,0,0,0)).title("out"); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_block` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action` [INFO] [stdout] --> src/components/apptitle.rs:41:26 [INFO] [stdout] | [INFO] [stdout] 41 | fn update(&mut self, action: Option) -> Result<(), MyError> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `tx` [INFO] [stdout] --> src/components.rs:40:43 [INFO] [stdout] | [INFO] [stdout] 40 | fn register_action_handler(&mut self, tx: Sender) { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_tx` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:60:13 [INFO] [stdout] | [INFO] [stdout] 60 | let mut log=vec![String::new()]; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | let mut sounds_list=SoundsList::set_path("music".to_string()); [INFO] [stdout] | ----^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | let mut fft_result=Arc::new(Mutex::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `action_sender` [INFO] [stdout] --> src/app.rs:81:38 [INFO] [stdout] | [INFO] [stdout] 81 | pub fn init_component(&mut self, action_sender: Sender<(Action,Option)>){ [INFO] [stdout] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_action_sender` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:100:13 [INFO] [stdout] | [INFO] [stdout] 100 | let mut sub_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:104:13 [INFO] [stdout] | [INFO] [stdout] 104 | let mut fft_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/app.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | let mut playzone_layout=Layout::new( [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | IoError(std::io::Error),//打印失败 [INFO] [stdout] | ------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [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] 9 | IoError(()),//打印失败 [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:10:15 [INFO] [stdout] | [INFO] [stdout] 10 | JoinError(tokio::task::JoinError), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` 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] 10 | JoinError(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | TokioSendError(tokio::sync::mpsc::error::SendError),//线程发送失败 [INFO] [stdout] | -------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` 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] 12 | TokioSendError(()),//线程发送失败 [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Init`, `Quit`, `Closed`, `Tick`, and `Render` are never constructed [INFO] [stdout] --> src/event.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum Event{ [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 18 | Init, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] 20 | Error, [INFO] [stdout] 21 | Closed, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 22 | Tick,//无事件时,渲染间隔控制 [INFO] [stdout] | ^^^^ [INFO] [stdout] 23 | Render, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Event` 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 `event` is never read [INFO] [stdout] --> src/event.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct EventHandler{ [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 33 | pub event:Event, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `close` is never used [INFO] [stdout] --> src/event.rs:47:12 [INFO] [stdout] | [INFO] [stdout] 38 | impl EventHandler { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn close(&mut self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tick_test` is never used [INFO] [stdout] --> src/event.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | pub async fn tick_test()->Result<(), MyError>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next` and `cancel` are never used [INFO] [stdout] --> src/tui.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Tui{ [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn next(&mut self)->Result<(),MyError>{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn cancel(&mut self)->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `init` and `register_action_handler` are never used [INFO] [stdout] --> src/components.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub trait Component{ [INFO] [stdout] | --------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 36 | fn init(&mut self) -> Result<(),MyError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | fn register_action_handler(&mut self, tx: Sender) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `component_name`, `log`, and `action_tx` are never read [INFO] [stdout] --> src/components/home.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Home { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 15 | component_name:String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 16 | pub log:String, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/components/home.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl Home{ [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 20 | pub fn new(log:String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `component_name` is never read [INFO] [stdout] --> src/components/quit.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Quit { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 13 | component_name:String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Quit` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vertical_scroll_state`, `horizontal_scroll_state`, `vertical_scroll`, `horizontal_scroll`, `action_tx`, and `liststate` are never read [INFO] [stdout] --> src/components/tracinglog.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct TracingLogComponent{ [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 19 | pub logs: String, [INFO] [stdout] 20 | pub vertical_scroll_state: ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 21 | pub horizontal_scroll_state: ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 22 | pub vertical_scroll: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | pub horizontal_scroll: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 25 | pub liststate:ListState, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracingLogComponent` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vertical_scroll`, `vertical_scroll_state`, and `action_tx` are never read [INFO] [stdout] --> src/components/filelist.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct FileListComponent { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 17 | pub sound_list:SoundsList, [INFO] [stdout] 18 | pub vertical_scroll:usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | pub vertical_scroll_state:ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileListComponent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action_sender` is never read [INFO] [stdout] --> src/components/analysis.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Analysis{ [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub action_sender:Option>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Analysis` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action_tx` is never read [INFO] [stdout] --> src/components/lyric.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct LyricZone{ [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyricZone` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/components/apptitle.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct AppTitle{ [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 14 | pub title: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppTitle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Play`, `Pause`, and `Quit` are never constructed [INFO] [stdout] --> src/app.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum AppState{ [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 36 | Home, [INFO] [stdout] 37 | Play, [INFO] [stdout] | ^^^^ [INFO] [stdout] 38 | Pause, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 39 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `appstate`, `tick_rate`, and `frame_rate` are never read [INFO] [stdout] --> src/app.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct App{ [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 43 | pub should_quit:bool,//判断是否推出程序 [INFO] [stdout] 44 | pub appstate:AppState,//这个action没用它,用的is——quiting [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 45 | pub tick_rate: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 46 | pub frame_rate: f64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `draw_component` and `get_soundlist` are never used [INFO] [stdout] --> src/app.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl App{ [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn draw_component(&mut self, frame: &mut Frame){ [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn get_soundlist(&self)->Vec<(usize,String)>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action` is never read [INFO] [stdout] --> src/action.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct ActionReactor { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 63 | pub action: Action, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `task` is never read [INFO] [stdout] --> src/render.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct Render { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | pub task: JoinHandle>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `logs` is never read [INFO] [stdout] --> src/tracing.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct TracingLog{ [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 20 | //用通信来共享内存,而不是通过共享内存来通信 [INFO] [stdout] 21 | pub logs: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracingLog` 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 `pause` and `stop` are never read [INFO] [stdout] --> src/fft.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct FFTController [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 22 | { [INFO] [stdout] 23 | pub pause: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | pub stop: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_pause` and `set_stop` are never used [INFO] [stdout] --> src/fft.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl FFTController [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn set_pause(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn set_stop(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream` and `stream_handle` are never read [INFO] [stdout] --> src/musicplayer.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct MusicPlayer [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub stream:rodio::OutputStream,// steam 不能drop 了,不然 handle 就没用了 [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 11 | pub stream_handle:OutputStreamHandle, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `lyric` and `time` are never read [INFO] [stdout] --> src/lyric.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct LyricController{ [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 15 | pub filestring:String, [INFO] [stdout] 16 | pub lyric:Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 17 | pub time:String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyricController` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `next_selected` is never read [INFO] [stdout] --> src/sounds.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct SoundsList{ [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | pub next_selected: Option,//是否有最新选中,用下次预备播放 [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SoundsList` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_sound_name_list` is never used [INFO] [stdout] --> src/sounds.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl SoundsList{ [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn get_sound_name_list(&self)->Vec<(usize,String)>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `total_duration`, and `lyric` are never read [INFO] [stdout] --> src/sounds.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct Sound{ [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 135 | pub id:usize, [INFO] [stdout] | ^^ [INFO] [stdout] 136 | pub name:String, [INFO] [stdout] 137 | pub total_duration:Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 138 | pub lyric:Lyric, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Sound` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_sound_path` is never used [INFO] [stdout] --> src/sounds.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 142 | impl Sound{ [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 174 | fn get_sound_path(&self)->String{ [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/event.rs:54:22 [INFO] [stdout] | [INFO] [stdout] 52 | let cancelation_token = self.cancelation_token.clone(); [INFO] [stdout] | ----------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 53 | let event_tx = self.sender.clone(); [INFO] [stdout] | -------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 54 | tokio::spawn(select_task(cancelation_token,event_tx)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: requested on the command line with `-D tail-expr-drop-order` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/tui.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 20 | let terminal=ratatui::Terminal::new(Backend::new(std::io::stdout()))?; [INFO] [stdout] | -------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 21 | [INFO] [stdout] 22 | Ok(Self{terminal}) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/app.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | tui.start(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 178 | let _ = tui.start(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 0 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 1 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 2 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/tracing.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 29 | let (log_sender, log_receiver) = mpsc::unbounded_channel(); [INFO] [stdout] | ---------- ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 30 | [INFO] [stdout] 31 | ( Self{ [INFO] [stdout] | ___________^ [INFO] [stdout] 32 | | logs,log_sender [INFO] [stdout] 33 | | },log_receiver) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sample_rate` [INFO] [stdout] --> src/fft.rs:37:16 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sample_rate: f32, fft_size: usize,sample_receiver: Receiver,music_tx: UnboundedSender>) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_rate` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `fft_size` [INFO] [stdout] --> src/fft.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | pub fn new(sample_rate: f32, fft_size: usize,sample_receiver: Receiver,music_tx: UnboundedSender>) -> Self { [INFO] [stdout] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fft_size` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `while let` pattern [INFO] [stdout] --> src/fft.rs:83:19 [INFO] [stdout] | [INFO] [stdout] 83 | while let sample=self.sample_receive.recv().unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the loop will never exit [INFO] [stdout] = help: consider instead using a `loop { ... }` with a `let` inside it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `energy` [INFO] [stdout] --> src/fft.rs:129:18 [INFO] [stdout] | [INFO] [stdout] 129 | for (i, &energy) in note_energies.iter().enumerate() { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_energy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `note_name` [INFO] [stdout] --> src/fft.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | let note_name = self.midi_number_to_note_name(i as i32 + 60); // C4开始 [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_note_name` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/musicplayer.rs:57:11 [INFO] [stdout] | [INFO] [stdout] 57 | let mut source1 = Decoder::new(buf_reader1).unwrap().convert_samples::(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/musicplayer.rs:58:11 [INFO] [stdout] | [INFO] [stdout] 58 | let mut my_source = MyCustomSource::new(source1, sample_sender); [INFO] [stdout] | ----^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `sample_receiver` [INFO] [stdout] --> src/musicplayer.rs:173:28 [INFO] [stdout] | [INFO] [stdout] 173 | let (sample_sender,sample_receiver)= std::sync::mpsc::channel();;//播放时,发送样本数据给fft [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sample_receiver` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: irrefutable `if let` pattern [INFO] [stdout] --> src/musicplayer.rs:179:20 [INFO] [stdout] | [INFO] [stdout] 179 | if let (action,_path) = action_receiver.recv().unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this pattern will always match, so the `if let` is useless [INFO] [stdout] = help: consider replacing the `if let` with a `let` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/musicplayer.rs:172:29 [INFO] [stdout] | [INFO] [stdout] 172 | let (action_sender, mut action_receiver) = std::sync::mpsc::channel(); [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:28:13 [INFO] [stdout] | [INFO] [stdout] 28 | let mut path=path; [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | let mut lyric=vec![Lyric::new()]; [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | let mut time=String::new(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/lyric.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | let mut filestring=String::new();//歌词string [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 3 previous errors; 226 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:9:13 [INFO] [stdout] | [INFO] [stdout] 9 | IoError(std::io::Error),//打印失败 [INFO] [stdout] | ------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [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] 9 | IoError(()),//打印失败 [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:10:15 [INFO] [stdout] | [INFO] [stdout] 10 | JoinError(tokio::task::JoinError), [INFO] [stdout] | --------- ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` 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] 10 | JoinError(()), [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/error.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | TokioSendError(tokio::sync::mpsc::error::SendError),//线程发送失败 [INFO] [stdout] | -------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `MyError` 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] 12 | TokioSendError(()),//线程发送失败 [INFO] [stdout] | ~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Init`, `Quit`, `Closed`, and `Render` are never constructed [INFO] [stdout] --> src/event.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 17 | pub enum Event{ [INFO] [stdout] | ----- variants in this enum [INFO] [stdout] 18 | Init, [INFO] [stdout] | ^^^^ [INFO] [stdout] 19 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] 20 | Error, [INFO] [stdout] 21 | Closed, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 22 | Tick,//无事件时,渲染间隔控制 [INFO] [stdout] 23 | Render, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Event` 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 `event` is never read [INFO] [stdout] --> src/event.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 32 | pub struct EventHandler{ [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 33 | pub event:Event, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `tick_test` is never used [INFO] [stdout] --> src/event.rs:125:15 [INFO] [stdout] | [INFO] [stdout] 125 | pub async fn tick_test()->Result<(), MyError>{ [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next` and `cancel` are never used [INFO] [stdout] --> src/tui.rs:43:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Tui{ [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 43 | pub fn next(&mut self)->Result<(),MyError>{ [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 47 | pub fn cancel(&mut self)->Result<(),MyError>{ [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `init` and `register_action_handler` are never used [INFO] [stdout] --> src/components.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 32 | pub trait Component{ [INFO] [stdout] | --------- methods in this trait [INFO] [stdout] ... [INFO] [stdout] 36 | fn init(&mut self) -> Result<(),MyError> { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 40 | fn register_action_handler(&mut self, tx: Sender) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `ratatui_music` (bin "ratatui_music") due to 4 previous errors; 226 warnings emitted [INFO] [stdout] warning: fields `component_name`, `log`, and `action_tx` are never read [INFO] [stdout] --> src/components/home.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct Home { [INFO] [stdout] | ---- fields in this struct [INFO] [stdout] 15 | component_name:String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 16 | pub log:String, [INFO] [stdout] | ^^^ [INFO] [stdout] 17 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/components/home.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 19 | impl Home{ [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 20 | pub fn new(log:String) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `component_name` is never read [INFO] [stdout] --> src/components/quit.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 12 | pub struct Quit { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 13 | component_name:String, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Quit` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vertical_scroll_state`, `horizontal_scroll_state`, `vertical_scroll`, `horizontal_scroll`, `action_tx`, and `liststate` are never read [INFO] [stdout] --> src/components/tracinglog.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct TracingLogComponent{ [INFO] [stdout] | ------------------- fields in this struct [INFO] [stdout] 19 | pub logs: String, [INFO] [stdout] 20 | pub vertical_scroll_state: ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 21 | pub horizontal_scroll_state: ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 22 | pub vertical_scroll: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 23 | pub horizontal_scroll: usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] 24 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 25 | pub liststate:ListState, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracingLogComponent` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `vertical_scroll`, `vertical_scroll_state`, and `action_tx` are never read [INFO] [stdout] --> src/components/filelist.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct FileListComponent { [INFO] [stdout] | ----------------- fields in this struct [INFO] [stdout] 17 | pub sound_list:SoundsList, [INFO] [stdout] 18 | pub vertical_scroll:usize, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 19 | pub vertical_scroll_state:ScrollbarState, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 20 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `FileListComponent` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action_sender` is never read [INFO] [stdout] --> src/components/analysis.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub struct Analysis{ [INFO] [stdout] | -------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 18 | pub action_sender:Option>, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Analysis` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action_tx` is never read [INFO] [stdout] --> src/components/lyric.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct LyricZone{ [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 21 | pub action_tx: Option>, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyricZone` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `title` is never read [INFO] [stdout] --> src/components/apptitle.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct AppTitle{ [INFO] [stdout] | -------- field in this struct [INFO] [stdout] 14 | pub title: String, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `AppTitle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Play`, `Pause`, and `Quit` are never constructed [INFO] [stdout] --> src/app.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 35 | pub enum AppState{ [INFO] [stdout] | -------- variants in this enum [INFO] [stdout] 36 | Home, [INFO] [stdout] 37 | Play, [INFO] [stdout] | ^^^^ [INFO] [stdout] 38 | Pause, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 39 | Quit, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `appstate`, `tick_rate`, and `frame_rate` are never read [INFO] [stdout] --> src/app.rs:44:9 [INFO] [stdout] | [INFO] [stdout] 42 | pub struct App{ [INFO] [stdout] | --- fields in this struct [INFO] [stdout] 43 | pub should_quit:bool,//判断是否推出程序 [INFO] [stdout] 44 | pub appstate:AppState,//这个action没用它,用的is——quiting [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 45 | pub tick_rate: f64, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 46 | pub frame_rate: f64, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `draw_component` and `get_soundlist` are never used [INFO] [stdout] --> src/app.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 54 | impl App{ [INFO] [stdout] | -------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 94 | pub fn draw_component(&mut self, frame: &mut Frame){ [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn get_soundlist(&self)->Vec<(usize,String)>{ [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `action` is never read [INFO] [stdout] --> src/action.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct ActionReactor { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 63 | pub action: Action, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `task` is never read [INFO] [stdout] --> src/render.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct Render { [INFO] [stdout] | ------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 30 | pub task: JoinHandle>, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `logs` is never read [INFO] [stdout] --> src/tracing.rs:21:9 [INFO] [stdout] | [INFO] [stdout] 19 | pub struct TracingLog{ [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 20 | //用通信来共享内存,而不是通过共享内存来通信 [INFO] [stdout] 21 | pub logs: Vec, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `TracingLog` 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 `pause` and `stop` are never read [INFO] [stdout] --> src/fft.rs:23:9 [INFO] [stdout] | [INFO] [stdout] 21 | pub struct FFTController [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 22 | { [INFO] [stdout] 23 | pub pause: bool, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 24 | pub stop: bool, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_pause` and `set_stop` are never used [INFO] [stdout] --> src/fft.rs:50:12 [INFO] [stdout] | [INFO] [stdout] 34 | impl FFTController [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn set_pause(&mut self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 53 | pub fn set_stop(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `stream` and `stream_handle` are never read [INFO] [stdout] --> src/musicplayer.rs:10:9 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct MusicPlayer [INFO] [stdout] | ----------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 10 | pub stream:rodio::OutputStream,// steam 不能drop 了,不然 handle 就没用了 [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 11 | pub stream_handle:OutputStreamHandle, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `lyric` and `time` are never read [INFO] [stdout] --> src/lyric.rs:16:9 [INFO] [stdout] | [INFO] [stdout] 14 | pub struct LyricController{ [INFO] [stdout] | --------------- fields in this struct [INFO] [stdout] 15 | pub filestring:String, [INFO] [stdout] 16 | pub lyric:Vec, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 17 | pub time:String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `LyricController` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `next_selected` is never read [INFO] [stdout] --> src/sounds.rs:14:9 [INFO] [stdout] | [INFO] [stdout] 10 | pub struct SoundsList{ [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 14 | pub next_selected: Option,//是否有最新选中,用下次预备播放 [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SoundsList` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_sound_name_list` is never used [INFO] [stdout] --> src/sounds.rs:110:12 [INFO] [stdout] | [INFO] [stdout] 18 | impl SoundsList{ [INFO] [stdout] | --------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 110 | pub fn get_sound_name_list(&self)->Vec<(usize,String)>{ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `id`, `total_duration`, and `lyric` are never read [INFO] [stdout] --> src/sounds.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 134 | pub struct Sound{ [INFO] [stdout] | ----- fields in this struct [INFO] [stdout] 135 | pub id:usize, [INFO] [stdout] | ^^ [INFO] [stdout] 136 | pub name:String, [INFO] [stdout] 137 | pub total_duration:Duration, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 138 | pub lyric:Lyric, [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Sound` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_sound_path` is never used [INFO] [stdout] --> src/sounds.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 142 | impl Sound{ [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 174 | fn get_sound_path(&self)->String{ [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/event.rs:54:22 [INFO] [stdout] | [INFO] [stdout] 52 | let cancelation_token = self.cancelation_token.clone(); [INFO] [stdout] | ----------------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 53 | let event_tx = self.sender.clone(); [INFO] [stdout] | -------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 54 | tokio::spawn(select_task(cancelation_token,event_tx)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] = note: requested on the command line with `-D tail-expr-drop-order` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/tui.rs:22:12 [INFO] [stdout] | [INFO] [stdout] 20 | let terminal=ratatui::Terminal::new(Backend::new(std::io::stdout()))?; [INFO] [stdout] | -------- these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 21 | [INFO] [stdout] 22 | Ok(Self{terminal}) [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/app.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | tui.start(); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 178 | let _ = tui.start(); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 0 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 1 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` in tuple element 2 that must be used [INFO] [stdout] --> src/app.rs:263:5 [INFO] [stdout] | [INFO] [stdout] 263 | / tokio::join!( [INFO] [stdout] 264 | | // handler.run(),没有所有权了 [INFO] [stdout] 265 | | react, [INFO] [stdout] 266 | | render1, [INFO] [stdout] 267 | | recv_handle,//异步获取tracing 日志 [INFO] [stdout] 268 | | fft_result_set_handle, [INFO] [stdout] 269 | | ); [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: this warning originates in the macro `$crate::join` which comes from the expansion of the macro `tokio::join` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: these values and local bindings have significant drop implementation that will have a different drop order from that of Edition 2021 [INFO] [stdout] --> src/tracing.rs:31:11 [INFO] [stdout] | [INFO] [stdout] 29 | let (log_sender, log_receiver) = mpsc::unbounded_channel(); [INFO] [stdout] | ---------- ------------ these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] | | [INFO] [stdout] | these values have significant drop implementation and will observe changes in drop order under Edition 2024 [INFO] [stdout] 30 | [INFO] [stdout] 31 | ( Self{ [INFO] [stdout] | ___________^ [INFO] [stdout] 32 | | logs,log_sender [INFO] [stdout] 33 | | },log_receiver) [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = warning: this changes meaning in Rust 2024 [INFO] [stdout] = note: for more information, see issue #123739 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 3 previous errors; 238 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `ratatui_music` (bin "ratatui_music" test) due to 4 previous errors; 238 warnings emitted [INFO] running `Command { std: "docker" "inspect" "c62b63e9f6b08f1b037ce37f0b20b484288ec4182ca9d15666b053f1e7bebe7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c62b63e9f6b08f1b037ce37f0b20b484288ec4182ca9d15666b053f1e7bebe7d", kill_on_drop: false }` [INFO] [stdout] c62b63e9f6b08f1b037ce37f0b20b484288ec4182ca9d15666b053f1e7bebe7d