[INFO] cloning repository https://github.com/Illogicalll/sctui [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Illogicalll/sctui" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIllogicalll%2Fsctui", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIllogicalll%2Fsctui'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 1bfa33f4ef95af3cc1c68766d25e69876a6a2a07 [INFO] linting Illogicalll/sctui against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIllogicalll%2Fsctui" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/Illogicalll/sctui [INFO] finished tweaking git repo https://github.com/Illogicalll/sctui [INFO] tweaked toml for git repo https://github.com/Illogicalll/sctui written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/Illogicalll/sctui on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/Illogicalll/sctui 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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded objc2-core-audio-types v0.3.1 [INFO] [stderr] Downloaded mediatype v0.21.0 [INFO] [stderr] Downloaded m3u8-rs v6.0.0 [INFO] [stderr] Downloaded symphonia-codec-aac v0.5.4 [INFO] [stderr] Downloaded objc2-core-audio v0.3.1 [INFO] [stderr] Downloaded rodio v0.21.1 [INFO] [stderr] Downloaded stream-download v0.23.0 [INFO] [stderr] Downloaded objc2-audio-toolbox v0.3.1 [INFO] [stderr] Downloaded icy_sixel v0.1.3 [INFO] [stderr] Downloaded pxfm v0.1.23 [INFO] [stderr] Downloaded ratatui-image v8.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ec18a6a449603d8833174060088234ee96fd888cb90cedc6762092215ef694da [INFO] running `Command { std: "docker" "start" "-a" "ec18a6a449603d8833174060088234ee96fd888cb90cedc6762092215ef694da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ec18a6a449603d8833174060088234ee96fd888cb90cedc6762092215ef694da", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ec18a6a449603d8833174060088234ee96fd888cb90cedc6762092215ef694da", kill_on_drop: false }` [INFO] [stdout] ec18a6a449603d8833174060088234ee96fd888cb90cedc6762092215ef694da [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] beb1c6c3e45a9b87456669895bb5a82955c08a9d1d10633fb04a4111022a41f7 [INFO] running `Command { std: "docker" "start" "-a" "beb1c6c3e45a9b87456669895bb5a82955c08a9d1d10633fb04a4111022a41f7", kill_on_drop: false }` [INFO] [stderr] Checking bitflags v2.9.1 [INFO] [stderr] Checking bytemuck v1.23.2 [INFO] [stderr] Compiling cc v1.2.32 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking socket2 v0.6.0 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Compiling equator-macro v0.4.2 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking zerovec v0.11.4 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Checking indexmap v2.10.0 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking as-slice v0.2.1 [INFO] [stderr] Compiling built v0.8.0 [INFO] [stderr] Compiling av-scenechange v0.14.1 [INFO] [stderr] Checking crc32fast v1.5.0 [INFO] [stderr] Checking aligned v0.4.3 [INFO] [stderr] Compiling profiling-procmacros v1.0.17 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Checking symphonia-core v0.5.4 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Checking core2 v0.4.0 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Compiling pastey v0.1.1 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Compiling rustix v1.0.8 [INFO] [stderr] Checking equator v0.4.2 [INFO] [stderr] Checking y4m v0.8.0 [INFO] [stderr] Checking tokio v1.49.0 [INFO] [stderr] Checking profiling v1.0.17 [INFO] [stderr] Checking bitstream-io v4.9.0 [INFO] [stderr] Checking aligned-vec v0.6.4 [INFO] [stderr] Checking flate2 v1.1.2 [INFO] [stderr] Checking v_frame v0.3.9 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling rav1e v0.8.1 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Compiling fax_derive v0.2.0 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking getrandom v0.2.16 [INFO] [stderr] Compiling instability v0.3.9 [INFO] [stderr] Compiling owo-colors v4.2.2 [INFO] [stderr] Compiling noop_proc_macro v0.3.0 [INFO] [stderr] Checking zune-core v0.4.12 [INFO] [stderr] Checking imgref v1.11.0 [INFO] [stderr] Compiling zmij v1.0.19 [INFO] [stderr] Checking symphonia-metadata v0.5.4 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Checking zune-jpeg v0.4.21 [INFO] [stderr] Checking fax v0.2.6 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking thiserror v2.0.16 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Checking tracing-subscriber v0.3.19 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.2 [INFO] [stderr] Compiling enum-ordinalize-derive v4.3.1 [INFO] [stderr] Checking pxfm v0.1.23 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking symphonia-utils-xiph v0.5.4 [INFO] [stderr] Checking avif-serialize v0.8.6 [INFO] [stderr] Checking lebe v0.5.3 [INFO] [stderr] Checking bit_field v0.10.3 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Compiling eyre v0.6.12 [INFO] [stderr] Checking extended v0.1.0 [INFO] [stderr] Compiling cpal v0.16.0 [INFO] [stderr] Checking av1-grain v0.2.4 [INFO] [stderr] Checking rgb v0.8.52 [INFO] [stderr] Compiling color-spantrace v0.3.0 [INFO] [stderr] Checking gif v0.14.1 [INFO] [stderr] Checking tracing-error v0.2.1 [INFO] [stderr] Compiling enum-ordinalize v4.3.0 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking image-webp v0.2.4 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Checking tiff v0.10.3 [INFO] [stderr] Checking exr v1.74.0 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking symphonia-format-riff v0.5.4 [INFO] [stderr] Checking zune-jpeg v0.5.11 [INFO] [stderr] Checking symphonia-format-isomp4 v0.5.4 [INFO] [stderr] Checking symphonia-codec-vorbis v0.5.4 [INFO] [stderr] Checking symphonia-format-ogg v0.5.4 [INFO] [stderr] Checking symphonia-bundle-flac v0.5.4 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Checking png v0.18.0 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking object v0.36.7 [INFO] [stderr] Compiling derive_more-impl v2.0.1 [INFO] [stderr] Checking symphonia-codec-aac v0.5.4 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking symphonia-codec-pcm v0.5.4 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking moxcms v0.7.5 [INFO] [stderr] Checking indenter v0.3.4 [INFO] [stderr] Checking strength_reduce v0.2.4 [INFO] [stderr] Compiling litrs v0.4.2 [INFO] [stderr] Checking rustc-demangle v0.1.26 [INFO] [stderr] Checking symphonia v0.5.4 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking transpose v0.2.3 [INFO] [stderr] Checking idna v1.0.3 [INFO] [stderr] Checking derive_more v2.0.1 [INFO] [stderr] Checking tempfile v3.20.0 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Compiling educe v0.6.0 [INFO] [stderr] Checking primal-check v0.3.4 [INFO] [stderr] Checking url v2.5.4 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking ascii v1.1.0 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Compiling document-features v0.2.11 [INFO] [stderr] Checking rangemap v1.6.0 [INFO] [stderr] Checking mediatype v0.21.0 [INFO] [stderr] Checking chunked_transfer v1.5.0 [INFO] [stderr] Checking icy_sixel v0.1.3 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking webbrowser v1.0.6 [INFO] [stderr] Checking rustfft v6.4.1 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking chrono v0.4.43 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Checking tiny_http v0.12.0 [INFO] [stderr] Checking rodio v0.21.1 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking m3u8-rs v6.0.0 [INFO] [stderr] Checking ravif v0.12.0 [INFO] [stderr] Checking backtrace v0.3.75 [INFO] [stderr] Checking image v0.25.9 [INFO] [stderr] Checking color-eyre v0.6.5 [INFO] [stderr] Checking hyper v1.6.0 [INFO] [stderr] Checking hyper-util v0.1.16 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.13.1 [INFO] [stderr] Checking reqwest v0.12.23 [INFO] [stderr] Checking ratatui-image v8.0.1 [INFO] [stderr] Checking stream-download v0.23.0 [INFO] [stderr] Checking sctui v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/albums.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/engagement.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/following.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/playlists.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/search.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/navigation.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/playback.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/queue.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/tui/logic/mod.rs:29:1 [INFO] [stdout] | [INFO] [stdout] 29 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/tui/render/visualizer/common.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/albums.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/engagement.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/following.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/playlists.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/api/calls/search.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/navigation.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/playback.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::api::Track` [INFO] [stdout] --> src/tui/logic/input/queue.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::api::Track; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/tui/logic/mod.rs:29:1 [INFO] [stdout] | [INFO] [stdout] 29 | use reqwest; [INFO] [stdout] | ^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Arc` [INFO] [stdout] --> src/tui/render/visualizer/common.rs:1:17 [INFO] [stdout] | [INFO] [stdout] 1 | use std::sync::{Arc, Mutex, OnceLock}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `ratatui::buffer::Buffer::get_mut`: Use Buffer[] or Buffer::cell_mut instead [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:324:21 [INFO] [stdout] | [INFO] [stdout] 324 | buf.get_mut(x, y) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:112:20 [INFO] [stdout] | [INFO] [stdout] 112 | fn handle_alt_down(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:131:23 [INFO] [stdout] | [INFO] [stdout] 131 | fn handle_normal_down(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:216:18 [INFO] [stdout] | [INFO] [stdout] 216 | fn handle_alt_up(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:231:21 [INFO] [stdout] | [INFO] [stdout] 231 | fn handle_normal_up(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `playlists` [INFO] [stdout] --> src/tui/logic/utils.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_playlists` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `ratatui::buffer::Buffer::get_mut`: Use Buffer[] or Buffer::cell_mut instead [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:324:21 [INFO] [stdout] | [INFO] [stdout] 324 | buf.get_mut(x, y) [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/tui/render/visualizer/oscilloscope.rs:14:76 [INFO] [stdout] | [INFO] [stdout] 14 | pub fn render_oscilloscope(frame: &mut Frame, area: Rect, samples: &[f32], mode: VisualizerMode) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:66:77 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn render_spectrum_bars(frame: &mut Frame, area: Rect, samples: &[f32], mode: VisualizerMode) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_url` is never read [INFO] [stdout] --> src/api/models.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Track { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub stream_url: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Track` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_playlist_tracks` is never used [INFO] [stdout] --> src/api/calls/playlists.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl API { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn get_playlist_tracks(&mut self, tracks_uri: &str) -> anyhow::Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PlayFromPosition`, `NextSong`, and `PrevSong` are never constructed [INFO] [stdout] --> src/player/commands.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum PlayerCommand { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 4 | Play(Track), [INFO] [stdout] 5 | PlayFromPosition(Track, u64), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | NextSong, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 12 | PrevSong, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next_song` and `prev_song` are never used [INFO] [stdout] --> src/player/controller.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl Player { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn next_song(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn prev_song(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `duration_ms` is never read [INFO] [stdout] --> src/player/stream/hls.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) struct HlsSegment { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 16 | pub url: Url, [INFO] [stdout] 17 | pub duration_ms: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsSegment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `playlists` is never read [INFO] [stdout] --> src/tui/logic/filtering.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FilteredViews { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 6 | pub likes: Vec, [INFO] [stdout] 7 | pub playlists: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `label` is never used [INFO] [stdout] --> src/tui/logic/state.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl VisualizerMode { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn label(self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | let title = parse_str(&playlist, "title"); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:71:49 [INFO] [stdout] | [INFO] [stdout] 71 | let track_count = parse_u64(&playlist, "track_count").to_string(); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:72:62 [INFO] [stdout] | [INFO] [stdout] 72 | let duration = format_duration(parse_u64(&playlist, "duration")); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:74:36 [INFO] [stdout] | [INFO] [stdout] 74 | &parse_str(&playlist, "created_at"), [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:80:48 [INFO] [stdout] | [INFO] [stdout] 80 | let tracks_uri = parse_str(&playlist, "tracks_uri"); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/api/calls/playlists.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 94 - playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] 94 + playlists.sort_by_key(|b| std::cmp::Reverse(b.created_at)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/api/calls/search.rs:184:5 [INFO] [stdout] | [INFO] [stdout] 184 | playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 184 - playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] 184 + playlists.sort_by_key(|b| std::cmp::Reverse(b.created_at)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `API` contains a capitalized acronym [INFO] [stdout] --> src/api/mod.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct API { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Api` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:112:20 [INFO] [stdout] | [INFO] [stdout] 112 | fn handle_alt_down(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:131:23 [INFO] [stdout] | [INFO] [stdout] 131 | fn handle_normal_down(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:216:18 [INFO] [stdout] | [INFO] [stdout] 216 | fn handle_alt_up(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `key` [INFO] [stdout] --> src/tui/logic/input/movement.rs:231:21 [INFO] [stdout] | [INFO] [stdout] 231 | fn handle_normal_up(key: KeyEvent, state: &mut AppState, data: &mut AppData) { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_key` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/auth/refresh.rs:51:37 [INFO] [stdout] | [INFO] [stdout] 51 | match refresh_token(&*token_guard) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&token_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/auth/refresh.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | match refresh_token(&*token_guard) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&token_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/controller.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | / if self.is_playing() { [INFO] [stdout] 126 | | if let Some(start) = *self.last_start.lock().unwrap() { [INFO] [stdout] 127 | | elapsed += start.elapsed(); [INFO] [stdout] 128 | | } [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 125 ~ if self.is_playing() [INFO] [stdout] 126 ~ && let Some(start) = *self.last_start.lock().unwrap() { [INFO] [stdout] 127 | elapsed += start.elapsed(); [INFO] [stdout] 128 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/stream/hls.rs:72:25 [INFO] [stdout] | [INFO] [stdout] 72 | / if init_url.is_none() { [INFO] [stdout] 73 | | if let Some(map) = &segment.map { [INFO] [stdout] 74 | | init_url = Some( [INFO] [stdout] 75 | | url.join(&map.uri) [INFO] [stdout] ... | [INFO] [stdout] 79 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ if init_url.is_none() [INFO] [stdout] 73 ~ && let Some(map) = &segment.map { [INFO] [stdout] 74 | init_url = Some( [INFO] [stdout] ... [INFO] [stdout] 77 | ); [INFO] [stdout] 78 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `playlists` [INFO] [stdout] --> src/tui/logic/utils.rs:106:5 [INFO] [stdout] | [INFO] [stdout] 106 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_playlists` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/player/stream/engine.rs:98:10 [INFO] [stdout] | [INFO] [stdout] 98 | ) -> anyhow::Result<(Arc, Arc>, Arc>)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/stream/engine.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | / if let Some(ref preload) = self.preload_next { [INFO] [stdout] 102 | | if preload.track_urn == track.track_urn { [INFO] [stdout] 103 | | let preload = self.preload_next.take().unwrap(); [INFO] [stdout] 104 | | self.cache = Some(preload); [INFO] [stdout] ... | [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 101 ~ if let Some(ref preload) = self.preload_next [INFO] [stdout] 102 ~ && preload.track_urn == track.track_urn { [INFO] [stdout] 103 | let preload = self.preload_next.take().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 110 | )); [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/player/stream/engine.rs:198:5 [INFO] [stdout] | [INFO] [stdout] 198 | / pub(crate) fn play_from_position( [INFO] [stdout] 199 | | &mut self, [INFO] [stdout] 200 | | track: &Track, [INFO] [stdout] 201 | | position_ms: u64, [INFO] [stdout] ... | [INFO] [stdout] 208 | | wave_buffer: &Arc>>, [INFO] [stdout] 209 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/player/worker.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | / pub(crate) fn player_loop( [INFO] [stdout] 16 | | rx: Receiver, [INFO] [stdout] 17 | | token: Arc>, [INFO] [stdout] 18 | | is_playing_flag: Arc, [INFO] [stdout] ... | [INFO] [stdout] 24 | | wave_buffer: Arc>>, [INFO] [stdout] 25 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/navigation.rs:205:16 [INFO] [stdout] | [INFO] [stdout] 205 | } else if let Some(next_idx) = state.auto_queue.pop_front() { [INFO] [stdout] | ________________^ [INFO] [stdout] 206 | | if let Some(track) = active_tracks.get(next_idx) { [INFO] [stdout] 207 | | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] 208 | | state.playback_history.push(current); [INFO] [stdout] ... | [INFO] [stdout] 214 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 205 ~ } else if let Some(next_idx) = state.auto_queue.pop_front() [INFO] [stdout] 206 ~ && let Some(track) = active_tracks.get(next_idx) { [INFO] [stdout] 207 | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] ... [INFO] [stdout] 212 | state.current_playing_index = Some(next_idx); [INFO] [stdout] 213 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/navigation.rs:224:5 [INFO] [stdout] | [INFO] [stdout] 224 | / if state.current_playing_index.is_some() { [INFO] [stdout] 225 | | if let Some(prev) = state.playback_history.pop() { [INFO] [stdout] 226 | | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] 227 | | let mut current = current; [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 224 ~ if state.current_playing_index.is_some() [INFO] [stdout] 225 ~ && let Some(prev) = state.playback_history.pop() { [INFO] [stdout] 226 | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] ... [INFO] [stdout] 231 | crate::tui::logic::utils::play_queued_track(prev, state, data, player, true); [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 50 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 51 | | state.playback_history.push(queued); [INFO] [stdout] 52 | | } [INFO] [stdout] 53 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 49 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 50 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 51 | state.playback_history.push(queued); [INFO] [stdout] 52 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 80 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 81 | | state.playback_history.push(queued); [INFO] [stdout] 82 | | } [INFO] [stdout] 83 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 80 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 81 | state.playback_history.push(queued); [INFO] [stdout] 82 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:109:12 [INFO] [stdout] | [INFO] [stdout] 109 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 110 | | if !(queued.source == PlaybackSource::Album && queued.index == selected_idx) { [INFO] [stdout] 111 | | state.playback_history.push(queued); [INFO] [stdout] 112 | | } [INFO] [stdout] 113 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 109 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 110 ~ && !(queued.source == PlaybackSource::Album && queued.index == selected_idx) { [INFO] [stdout] 111 | state.playback_history.push(queued); [INFO] [stdout] 112 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 156 | | if !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 157 | | state.playback_history.push(queued); [INFO] [stdout] 158 | | } [INFO] [stdout] 159 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 155 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 156 ~ && !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 157 | state.playback_history.push(queued); [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / if let Some(selected_idx) = selected_idx { [INFO] [stdout] 184 | | if let Some(track) = data.likes.get(selected_idx) { [INFO] [stdout] 185 | | if !track.is_playable() { [INFO] [stdout] 186 | | return; [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 183 ~ if let Some(selected_idx) = selected_idx [INFO] [stdout] 184 ~ && let Some(track) = data.likes.get(selected_idx) { [INFO] [stdout] 185 | if !track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:191:20 [INFO] [stdout] | [INFO] [stdout] 191 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________________^ [INFO] [stdout] 192 | | if !(queued.source == PlaybackSource::Likes && queued.index == selected_idx) { [INFO] [stdout] 193 | | state.playback_history.push(queued); [INFO] [stdout] 194 | | } [INFO] [stdout] 195 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 191 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 192 ~ && !(queued.source == PlaybackSource::Likes && queued.index == selected_idx) { [INFO] [stdout] 193 | state.playback_history.push(queued); [INFO] [stdout] 194 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | / if !search_active { [INFO] [stdout] 205 | | if state.selected_tab == 0 && state.selected_subtab == 0 { [INFO] [stdout] 206 | | state.selected_row = selected_idx; [INFO] [stdout] 207 | | data.likes_state.select(Some(state.selected_row)); [INFO] [stdout] 208 | | } [INFO] [stdout] 209 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 204 ~ if !search_active [INFO] [stdout] 205 ~ && state.selected_tab == 0 && state.selected_subtab == 0 { [INFO] [stdout] 206 | state.selected_row = selected_idx; [INFO] [stdout] 207 | data.likes_state.select(Some(state.selected_row)); [INFO] [stdout] 208 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:239:16 [INFO] [stdout] | [INFO] [stdout] 239 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 240 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 241 | | state.playback_history.push(queued); [INFO] [stdout] 242 | | } [INFO] [stdout] 243 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 239 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 240 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 241 | state.playback_history.push(queued); [INFO] [stdout] 242 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:275:16 [INFO] [stdout] | [INFO] [stdout] 275 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 276 | | if !(queued.source == PlaybackSource::Album [INFO] [stdout] 277 | | && queued.index == state.selected_album_track_row) [INFO] [stdout] ... | [INFO] [stdout] 281 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 275 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 276 ~ && !(queued.source == PlaybackSource::Album [INFO] [stdout] 277 | && queued.index == state.selected_album_track_row) [INFO] [stdout] 278 | { [INFO] [stdout] 279 | state.playback_history.push(queued); [INFO] [stdout] 280 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:327:16 [INFO] [stdout] | [INFO] [stdout] 327 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 328 | | if !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 329 | | state.playback_history.push(queued); [INFO] [stdout] 330 | | } [INFO] [stdout] 331 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 327 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 328 ~ && !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 329 | state.playback_history.push(queued); [INFO] [stdout] 330 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / if let Some(track) = data.search_tracks.get(state.selected_row) { [INFO] [stdout] 58 | | if track.is_playable() { [INFO] [stdout] 59 | | insert_manual_queue( [INFO] [stdout] 60 | | state, [INFO] [stdout] ... | [INFO] [stdout] 73 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 57 ~ if let Some(track) = data.search_tracks.get(state.selected_row) [INFO] [stdout] 58 ~ && track.is_playable() { [INFO] [stdout] 59 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 71 | ); [INFO] [stdout] 72 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | / if let Some(track) = data [INFO] [stdout] 78 | | .search_playlist_tracks [INFO] [stdout] 79 | | .get(state.search_selected_playlist_track_row) [INFO] [stdout] ... | [INFO] [stdout] 96 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ .get(state.search_selected_playlist_track_row) [INFO] [stdout] 80 ~ && track.is_playable() { [INFO] [stdout] 81 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 93 | ); [INFO] [stdout] 94 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | / if let Some(track) = data [INFO] [stdout] 101 | | .search_album_tracks [INFO] [stdout] 102 | | .get(state.search_selected_album_track_row) [INFO] [stdout] ... | [INFO] [stdout] 119 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 102 ~ .get(state.search_selected_album_track_row) [INFO] [stdout] 103 ~ && track.is_playable() { [INFO] [stdout] 104 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 116 | ); [INFO] [stdout] 117 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | / if let Some(track) = data [INFO] [stdout] 125 | | .search_people_likes_tracks [INFO] [stdout] 126 | | .get(state.search_selected_person_like_row) [INFO] [stdout] ... | [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ .get(state.search_selected_person_like_row) [INFO] [stdout] 127 ~ && track.is_playable() { [INFO] [stdout] 128 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 140 | ); [INFO] [stdout] 141 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 145 | | .search_people_tracks [INFO] [stdout] 146 | | .get(state.search_selected_person_track_row) [INFO] [stdout] ... | [INFO] [stdout] 163 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 146 ~ .get(state.search_selected_person_track_row) [INFO] [stdout] 147 ~ && track.is_playable() { [INFO] [stdout] 148 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 160 | ); [INFO] [stdout] 161 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | / if let Some(idx) = selected_idx { [INFO] [stdout] 263 | | if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | | if track.is_playable() { [INFO] [stdout] 265 | | insert_manual_queue( [INFO] [stdout] ... | [INFO] [stdout] 280 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 262 ~ if let Some(idx) = selected_idx [INFO] [stdout] 263 ~ && let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | if track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 278 | } [INFO] [stdout] 279 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | | if track.is_playable() { [INFO] [stdout] 265 | | insert_manual_queue( [INFO] [stdout] 266 | | state, [INFO] [stdout] ... | [INFO] [stdout] 279 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 263 ~ if let Some(track) = data.likes.get(idx) [INFO] [stdout] 264 ~ && track.is_playable() { [INFO] [stdout] 265 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 277 | ); [INFO] [stdout] 278 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / if let Some(track) = data.album_tracks.get(state.selected_album_track_row) { [INFO] [stdout] 318 | | if track.is_playable() { [INFO] [stdout] 319 | | insert_manual_queue( [INFO] [stdout] 320 | | state, [INFO] [stdout] ... | [INFO] [stdout] 333 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 317 ~ if let Some(track) = data.album_tracks.get(state.selected_album_track_row) [INFO] [stdout] 318 ~ && track.is_playable() { [INFO] [stdout] 319 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 331 | ); [INFO] [stdout] 332 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | / if let Some(track) = data [INFO] [stdout] 339 | | .following_likes_tracks [INFO] [stdout] 340 | | .get(state.selected_following_like_row) [INFO] [stdout] ... | [INFO] [stdout] 357 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 340 ~ .get(state.selected_following_like_row) [INFO] [stdout] 341 ~ && track.is_playable() { [INFO] [stdout] 342 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 354 | ); [INFO] [stdout] 355 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:358:12 [INFO] [stdout] | [INFO] [stdout] 358 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 359 | | .following_tracks [INFO] [stdout] 360 | | .get(state.selected_following_track_row) [INFO] [stdout] ... | [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 360 ~ .get(state.selected_following_track_row) [INFO] [stdout] 361 ~ && track.is_playable() { [INFO] [stdout] 362 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 374 | ); [INFO] [stdout] 375 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:387:5 [INFO] [stdout] | [INFO] [stdout] 387 | / if let Some(idx) = selected_idx { [INFO] [stdout] 388 | | if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | | if track.is_playable() { [INFO] [stdout] 390 | | return Some(QueuedTrack { [INFO] [stdout] ... | [INFO] [stdout] 402 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 387 ~ if let Some(idx) = selected_idx [INFO] [stdout] 388 ~ && let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | if track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 400 | } [INFO] [stdout] 401 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | | if track.is_playable() { [INFO] [stdout] 390 | | return Some(QueuedTrack { [INFO] [stdout] 391 | | source: PlaybackSource::Likes, [INFO] [stdout] ... | [INFO] [stdout] 401 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Some(track) = data.likes.get(idx) [INFO] [stdout] 389 ~ && track.is_playable() { [INFO] [stdout] 390 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 399 | }); [INFO] [stdout] 400 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | / if let Some(track) = data.album_tracks.get(state.selected_album_track_row) { [INFO] [stdout] 436 | | if track.is_playable() { [INFO] [stdout] 437 | | return Some(QueuedTrack { [INFO] [stdout] 438 | | source: PlaybackSource::Album, [INFO] [stdout] ... | [INFO] [stdout] 448 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 435 ~ if let Some(track) = data.album_tracks.get(state.selected_album_track_row) [INFO] [stdout] 436 ~ && track.is_playable() { [INFO] [stdout] 437 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 446 | }); [INFO] [stdout] 447 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | / if let Some(track) = data [INFO] [stdout] 455 | | .following_likes_tracks [INFO] [stdout] 456 | | .get(state.selected_following_like_row) [INFO] [stdout] ... | [INFO] [stdout] 470 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 456 ~ .get(state.selected_following_like_row) [INFO] [stdout] 457 ~ && track.is_playable() { [INFO] [stdout] 458 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 467 | }); [INFO] [stdout] 468 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:471:12 [INFO] [stdout] | [INFO] [stdout] 471 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 472 | | .following_tracks [INFO] [stdout] 473 | | .get(state.selected_following_track_row) [INFO] [stdout] ... | [INFO] [stdout] 487 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 473 ~ .get(state.selected_following_track_row) [INFO] [stdout] 474 ~ && track.is_playable() { [INFO] [stdout] 475 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 484 | }); [INFO] [stdout] 485 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/input/commands.rs:84:13 [INFO] [stdout] | [INFO] [stdout] 84 | / if state.selected_tab == 0 { [INFO] [stdout] 85 | | state.search_popup_visible = true; [INFO] [stdout] 86 | | state.search_query.clear(); [INFO] [stdout] 87 | | state.search_matches = build_search_matches( [INFO] [stdout] ... | [INFO] [stdout] 95 | | ); [INFO] [stdout] 96 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 83 ~ 'f' | 'F' [INFO] [stdout] 84 ~ if state.selected_tab == 0 => { [INFO] [stdout] 85 | state.search_popup_visible = true; [INFO] [stdout] ... [INFO] [stdout] 95 | ); [INFO] [stdout] 96 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | / if state.queue_visible { [INFO] [stdout] 107 | | if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | | if state.auto_queue.is_empty() { [INFO] [stdout] 109 | | let active_tracks = match state.playback_source { [INFO] [stdout] ... | [INFO] [stdout] 123 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 106 ~ if state.queue_visible [INFO] [stdout] 107 ~ && let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | if state.auto_queue.is_empty() { [INFO] [stdout] ... [INFO] [stdout] 121 | } [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:107:17 [INFO] [stdout] | [INFO] [stdout] 107 | / if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | | if state.auto_queue.is_empty() { [INFO] [stdout] 109 | | let active_tracks = match state.playback_source { [INFO] [stdout] 110 | | PlaybackSource::Likes => &data.likes, [INFO] [stdout] ... | [INFO] [stdout] 122 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ if let Some(current_idx) = state.current_playing_index [INFO] [stdout] 108 ~ && state.auto_queue.is_empty() { [INFO] [stdout] 109 | let active_tracks = match state.playback_source { [INFO] [stdout] ... [INFO] [stdout] 120 | ); [INFO] [stdout] 121 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | } else if state.selected_tab == 1 && state.selected_searchfilter == 3 { [INFO] [stdout] | ____________________^ [INFO] [stdout] 134 | | if state.search_selected_person_like_row + 1 < data.search_people_likes_tracks.len() { [INFO] [stdout] 135 | | state.search_selected_person_like_row += 1; [INFO] [stdout] 136 | | state.search_people_tracks_focus = FollowingTracksFocus::Likes; [INFO] [stdout] ... | [INFO] [stdout] 140 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 133 ~ } else if state.selected_tab == 1 && state.selected_searchfilter == 3 [INFO] [stdout] 134 ~ && state.search_selected_person_like_row + 1 < data.search_people_likes_tracks.len() { [INFO] [stdout] 135 | state.search_selected_person_like_row += 1; [INFO] [stdout] ... [INFO] [stdout] 138 | .select(Some(state.search_selected_person_like_row)); [INFO] [stdout] 139 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:150:20 [INFO] [stdout] | [INFO] [stdout] 150 | } else if state.selected_tab == 1 && state.selected_searchfilter == 3 { [INFO] [stdout] | ____________________^ [INFO] [stdout] 151 | | if state.search_selected_person_like_row > 0 { [INFO] [stdout] 152 | | state.search_selected_person_like_row -= 1; [INFO] [stdout] 153 | | state.search_people_tracks_focus = FollowingTracksFocus::Likes; [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 150 ~ } else if state.selected_tab == 1 && state.selected_searchfilter == 3 [INFO] [stdout] 151 ~ && state.search_selected_person_like_row > 0 { [INFO] [stdout] 152 | state.search_selected_person_like_row -= 1; [INFO] [stdout] ... [INFO] [stdout] 155 | .select(Some(state.search_selected_person_like_row)); [INFO] [stdout] 156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | / if let Some(track) = track { [INFO] [stdout] 176 | | if let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 177 | | data.liked_track_urns.remove(&track.track_urn); [INFO] [stdout] 178 | | state [INFO] [stdout] ... | [INFO] [stdout] 185 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 175 ~ if let Some(track) = track [INFO] [stdout] 176 ~ && let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 177 | data.liked_track_urns.remove(&track.track_urn); [INFO] [stdout] ... [INFO] [stdout] 183 | }); [INFO] [stdout] 184 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | / if let Some(playlist) = data.playlists.get(state.selected_row) { [INFO] [stdout] 189 | | if let Some(playlist_id) = [INFO] [stdout] 190 | | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some(playlist) = data.playlists.get(state.selected_row) [INFO] [stdout] 189 ~ && let Some(playlist_id) = [INFO] [stdout] 190 | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | / if let Some(album) = album { [INFO] [stdout] 222 | | if let Some(playlist_id) = [INFO] [stdout] 223 | | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 231 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 221 ~ if let Some(album) = album [INFO] [stdout] 222 ~ && let Some(playlist_id) = [INFO] [stdout] 223 | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 229 | }); [INFO] [stdout] 230 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | / if let Some(artist) = artist { [INFO] [stdout] 242 | | if let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 243 | | data.followed_user_urns.remove(&artist.urn); [INFO] [stdout] 244 | | state.engagement_queue.push_back(EngagementAction::UnfollowUser { [INFO] [stdout] ... | [INFO] [stdout] 249 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 241 ~ if let Some(artist) = artist [INFO] [stdout] 242 ~ && let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 243 | data.followed_user_urns.remove(&artist.urn); [INFO] [stdout] ... [INFO] [stdout] 247 | }); [INFO] [stdout] 248 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:256:17 [INFO] [stdout] | [INFO] [stdout] 256 | / if let Some(track) = data.search_tracks.get(state.selected_row) { [INFO] [stdout] 257 | | if let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 258 | | let is_liked = data.liked_track_urns.contains(&track.track_urn); [INFO] [stdout] 259 | | if is_liked { [INFO] [stdout] ... | [INFO] [stdout] 273 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 256 ~ if let Some(track) = data.search_tracks.get(state.selected_row) [INFO] [stdout] 257 ~ && let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 258 | let is_liked = data.liked_track_urns.contains(&track.track_urn); [INFO] [stdout] ... [INFO] [stdout] 271 | } [INFO] [stdout] 272 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:276:17 [INFO] [stdout] | [INFO] [stdout] 276 | / if let Some(album) = data.search_albums.get(state.selected_row) { [INFO] [stdout] 277 | | if let Some(playlist_id) = [INFO] [stdout] 278 | | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 295 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 276 ~ if let Some(album) = data.search_albums.get(state.selected_row) [INFO] [stdout] 277 ~ && let Some(playlist_id) = [INFO] [stdout] 278 | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 293 | } [INFO] [stdout] 294 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:298:17 [INFO] [stdout] | [INFO] [stdout] 298 | / if let Some(playlist) = data.search_playlists.get(state.selected_row) { [INFO] [stdout] 299 | | if let Some(playlist_id) = [INFO] [stdout] 300 | | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 319 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 298 ~ if let Some(playlist) = data.search_playlists.get(state.selected_row) [INFO] [stdout] 299 ~ && let Some(playlist_id) = [INFO] [stdout] 300 | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 317 | } [INFO] [stdout] 318 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:322:17 [INFO] [stdout] | [INFO] [stdout] 322 | / if let Some(artist) = data.search_people.get(state.selected_row) { [INFO] [stdout] 323 | | if let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 324 | | let is_followed = data.followed_user_urns.contains(&artist.urn); [INFO] [stdout] 325 | | if is_followed { [INFO] [stdout] ... | [INFO] [stdout] 339 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 322 ~ if let Some(artist) = data.search_people.get(state.selected_row) [INFO] [stdout] 323 ~ && let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 324 | let is_followed = data.followed_user_urns.contains(&artist.urn); [INFO] [stdout] ... [INFO] [stdout] 337 | } [INFO] [stdout] 338 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/mod.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / if state.search_popup_visible { [INFO] [stdout] 32 | | if let Some(outcome) = search::handle_search_input(key, state, data) { [INFO] [stdout] 33 | | return outcome; [INFO] [stdout] 34 | | } [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 31 ~ if state.search_popup_visible [INFO] [stdout] 32 ~ && let Some(outcome) = search::handle_search_input(key, state, data) { [INFO] [stdout] 33 | return outcome; [INFO] [stdout] 34 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (13/7) [INFO] [stdout] --> src/tui/logic/state.rs:387:5 [INFO] [stdout] | [INFO] [stdout] 387 | / pub fn apply_updates( [INFO] [stdout] 388 | | &mut self, [INFO] [stdout] 389 | | rx_likes: &Receiver>, [INFO] [stdout] 390 | | rx_playlists: &Receiver>, [INFO] [stdout] ... | [INFO] [stdout] 400 | | following_likes_request_id: u64, [INFO] [stdout] 401 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | likes: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 105 - likes: &Vec, [INFO] [stdout] 105 + likes: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:106:16 [INFO] [stdout] | [INFO] [stdout] 106 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 106 - playlists: &Vec, [INFO] [stdout] 106 + playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:107:22 [INFO] [stdout] | [INFO] [stdout] 107 | playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 107 - playlist_tracks: &Vec, [INFO] [stdout] 107 + playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 108 - albums: &Vec, [INFO] [stdout] 108 + albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:109:16 [INFO] [stdout] | [INFO] [stdout] 109 | following: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 109 - following: &Vec, [INFO] [stdout] 109 + following: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:94:51 [INFO] [stdout] | [INFO] [stdout] 94 | let (tx_playlist_tracks, rx_playlist_tracks): ( [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 95 | | Sender<(u64, Vec)>, [INFO] [stdout] 96 | | Receiver<(u64, Vec)>, [INFO] [stdout] 97 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:98:45 [INFO] [stdout] | [INFO] [stdout] 98 | let (tx_album_tracks, rx_album_tracks): ( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 99 | | Sender<(u64, Vec)>, [INFO] [stdout] 100 | | Receiver<(u64, Vec)>, [INFO] [stdout] 101 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:108:53 [INFO] [stdout] | [INFO] [stdout] 108 | let (tx_following_tracks, rx_following_tracks): ( [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 109 | | Sender<(u64, Vec)>, [INFO] [stdout] 110 | | Receiver<(u64, Vec)>, [INFO] [stdout] 111 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:112:51 [INFO] [stdout] | [INFO] [stdout] 112 | let (tx_following_likes, rx_following_likes): ( [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 113 | | Sender<(u64, Vec)>, [INFO] [stdout] 114 | | Receiver<(u64, Vec)>, [INFO] [stdout] 115 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:117:47 [INFO] [stdout] | [INFO] [stdout] 117 | let (tx_search_tracks, rx_search_tracks): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 118 | | Sender<(u64, Vec)>, [INFO] [stdout] 119 | | Receiver<(u64, Vec)>, [INFO] [stdout] 120 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:121:47 [INFO] [stdout] | [INFO] [stdout] 121 | let (tx_search_albums, rx_search_albums): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 122 | | Sender<(u64, Vec)>, [INFO] [stdout] 123 | | Receiver<(u64, Vec)>, [INFO] [stdout] 124 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:125:53 [INFO] [stdout] | [INFO] [stdout] 125 | let (tx_search_playlists, rx_search_playlists): ( [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 126 | | Sender<(u64, Vec)>, [INFO] [stdout] 127 | | Receiver<(u64, Vec)>, [INFO] [stdout] 128 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:129:47 [INFO] [stdout] | [INFO] [stdout] 129 | let (tx_search_people, rx_search_people): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 130 | | Sender<(u64, Vec)>, [INFO] [stdout] 131 | | Receiver<(u64, Vec)>, [INFO] [stdout] 132 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:134:65 [INFO] [stdout] | [INFO] [stdout] 134 | let (tx_search_playlist_tracks, rx_search_playlist_tracks): ( [INFO] [stdout] | _________________________________________________________________^ [INFO] [stdout] 135 | | Sender<(u64, Vec)>, [INFO] [stdout] 136 | | Receiver<(u64, Vec)>, [INFO] [stdout] 137 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:138:59 [INFO] [stdout] | [INFO] [stdout] 138 | let (tx_search_album_tracks, rx_search_album_tracks): ( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 139 | | Sender<(u64, Vec)>, [INFO] [stdout] 140 | | Receiver<(u64, Vec)>, [INFO] [stdout] 141 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:142:61 [INFO] [stdout] | [INFO] [stdout] 142 | let (tx_search_people_tracks, rx_search_people_tracks): ( [INFO] [stdout] | _____________________________________________________________^ [INFO] [stdout] 143 | | Sender<(u64, Vec)>, [INFO] [stdout] 144 | | Receiver<(u64, Vec)>, [INFO] [stdout] 145 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:146:59 [INFO] [stdout] | [INFO] [stdout] 146 | let (tx_search_people_likes, rx_search_people_likes): ( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 147 | | Sender<(u64, Vec)>, [INFO] [stdout] 148 | | Receiver<(u64, Vec)>, [INFO] [stdout] 149 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tui/logic/mod.rs:291:37 [INFO] [stdout] | [INFO] [stdout] 291 | .retain(|p| !(p.tracks_uri == tracks_uri && !p.is_owned)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `p.tracks_uri != tracks_uri || p.is_owned` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:415:9 [INFO] [stdout] | [INFO] [stdout] 415 | / if should_update { [INFO] [stdout] 416 | | if let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] ... | [INFO] [stdout] 428 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 415 ~ if should_update [INFO] [stdout] 416 ~ && let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] ... [INFO] [stdout] 426 | } [INFO] [stdout] 427 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:416:13 [INFO] [stdout] | [INFO] [stdout] 416 | / if let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] ... | [INFO] [stdout] 427 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 416 ~ if let Ok(resp) = reqwest::blocking::get(url.as_str()) [INFO] [stdout] 417 ~ && let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] ... [INFO] [stdout] 425 | } [INFO] [stdout] 426 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:417:17 [INFO] [stdout] | [INFO] [stdout] 417 | / if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] 420 | | cover_art_async = [INFO] [stdout] ... | [INFO] [stdout] 426 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 417 ~ if let Ok(bytes) = resp.bytes() [INFO] [stdout] 418 ~ && let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] ... [INFO] [stdout] 424 | last_artwork_image = Some(dyn_img); [INFO] [stdout] 425 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:779:21 [INFO] [stdout] | [INFO] [stdout] 779 | / if !data.search_albums.is_empty() && state.selected_row >= data.search_albums.len() { [INFO] [stdout] 780 | | state.selected_row = data.search_albums.len() - 1; [INFO] [stdout] 781 | | data.search_albums_state.select(Some(state.selected_row)); [INFO] [stdout] 782 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 778 ~ 1 [INFO] [stdout] 779 ~ if !data.search_albums.is_empty() && state.selected_row >= data.search_albums.len() => { [INFO] [stdout] 780 | state.selected_row = data.search_albums.len() - 1; [INFO] [stdout] 781 | data.search_albums_state.select(Some(state.selected_row)); [INFO] [stdout] 782 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:785:21 [INFO] [stdout] | [INFO] [stdout] 785 | / if !data.search_playlists.is_empty() [INFO] [stdout] 786 | | && state.selected_row >= data.search_playlists.len() [INFO] [stdout] 787 | | { [INFO] [stdout] 788 | | state.selected_row = data.search_playlists.len() - 1; [INFO] [stdout] 789 | | data.search_playlists_state.select(Some(state.selected_row)); [INFO] [stdout] 790 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 784 ~ 2 [INFO] [stdout] 785 | if !data.search_playlists.is_empty() [INFO] [stdout] 786 | && state.selected_row >= data.search_playlists.len() [INFO] [stdout] 787 ~ => { [INFO] [stdout] 788 | state.selected_row = data.search_playlists.len() - 1; [INFO] [stdout] 789 | data.search_playlists_state.select(Some(state.selected_row)); [INFO] [stdout] 790 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:793:21 [INFO] [stdout] | [INFO] [stdout] 793 | / if !data.search_people.is_empty() && state.selected_row >= data.search_people.len() { [INFO] [stdout] 794 | | state.selected_row = data.search_people.len() - 1; [INFO] [stdout] 795 | | data.search_people_state.select(Some(state.selected_row)); [INFO] [stdout] 796 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 792 ~ 3 [INFO] [stdout] 793 ~ if !data.search_people.is_empty() && state.selected_row >= data.search_people.len() => { [INFO] [stdout] 794 | state.selected_row = data.search_people.len() - 1; [INFO] [stdout] 795 | data.search_people_state.select(Some(state.selected_row)); [INFO] [stdout] 796 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/tui/render/visualizer/oscilloscope.rs:14:76 [INFO] [stdout] | [INFO] [stdout] 14 | pub fn render_oscilloscope(frame: &mut Frame, area: Rect, samples: &[f32], mode: VisualizerMode) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:1127:17 [INFO] [stdout] | [INFO] [stdout] 1127 | / if should_preload { [INFO] [stdout] 1128 | | if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 1129 | | let active_tracks = match state.playback_source { [INFO] [stdout] 1130 | | PlaybackSource::Likes => &data.likes, [INFO] [stdout] ... | [INFO] [stdout] 1157 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1127 ~ if should_preload [INFO] [stdout] 1128 ~ && let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 1129 | let active_tracks = match state.playback_source { [INFO] [stdout] ... [INFO] [stdout] 1155 | } [INFO] [stdout] 1156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:1150:25 [INFO] [stdout] | [INFO] [stdout] 1150 | / if let Some(track) = next_track { [INFO] [stdout] 1151 | | if track.track_urn != current_track.track_urn && track.is_playable() { [INFO] [stdout] 1152 | | player.preload_next(track); [INFO] [stdout] 1153 | | state.preload_triggered_for_track_urn = Some(current_track.track_urn.clone()); [INFO] [stdout] 1154 | | } [INFO] [stdout] 1155 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1150 ~ if let Some(track) = next_track [INFO] [stdout] 1151 ~ && track.track_urn != current_track.track_urn && track.is_playable() { [INFO] [stdout] 1152 | player.preload_next(track); [INFO] [stdout] 1153 | state.preload_triggered_for_track_urn = Some(current_track.track_urn.clone()); [INFO] [stdout] 1154 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mode` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:66:77 [INFO] [stdout] | [INFO] [stdout] 66 | pub fn render_spectrum_bars(frame: &mut Frame, area: Rect, samples: &[f32], mode: VisualizerMode) { [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_mode` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tui/render/now_playing.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / pub fn render_now_playing( [INFO] [stdout] 27 | | frame: &mut Frame, [INFO] [stdout] 28 | | area: Rect, [INFO] [stdout] 29 | | data: &mut Vec<(f64, f64)>, [INFO] [stdout] ... | [INFO] [stdout] 36 | | repeat_enabled: bool, [INFO] [stdout] 37 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/tui/render/now_playing.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | let max_time: f64 = selected_track.duration_ms.clone() as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `selected_track.duration_ms` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/tui/render/now_playing.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | let ratio = (progress_float / max_time).min(1.0).max(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(progress_float / max_time).clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tui/render/now_playing.rs:168:19 [INFO] [stdout] | [INFO] [stdout] 168 | .data(&data), [INFO] [stdout] | ^^^^^ help: change this to: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/overlays/queue.rs:18:19 [INFO] [stdout] | [INFO] [stdout] 18 | queue_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - queue_tracks: &Vec, [INFO] [stdout] 18 + queue_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `stream_url` is never read [INFO] [stdout] --> src/api/models.rs:11:9 [INFO] [stdout] | [INFO] [stdout] 4 | pub struct Track { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] ... [INFO] [stdout] 11 | pub stream_url: String, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Track` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_playlist_tracks` is never used [INFO] [stdout] --> src/api/calls/playlists.rs:98:12 [INFO] [stdout] | [INFO] [stdout] 11 | impl API { [INFO] [stdout] | -------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 98 | pub fn get_playlist_tracks(&mut self, tracks_uri: &str) -> anyhow::Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `PlayFromPosition`, `NextSong`, and `PrevSong` are never constructed [INFO] [stdout] --> src/player/commands.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 3 | pub enum PlayerCommand { [INFO] [stdout] | ------------- variants in this enum [INFO] [stdout] 4 | Play(Track), [INFO] [stdout] 5 | PlayFromPosition(Track, u64), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 11 | NextSong, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 12 | PrevSong, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `next_song` and `prev_song` are never used [INFO] [stdout] --> src/player/controller.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 27 | impl Player { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn next_song(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn prev_song(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `duration_ms` is never read [INFO] [stdout] --> src/player/stream/hls.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 15 | pub(crate) struct HlsSegment { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 16 | pub url: Url, [INFO] [stdout] 17 | pub duration_ms: u64, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `HlsSegment` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `playlists` is never read [INFO] [stdout] --> src/tui/logic/filtering.rs:7:9 [INFO] [stdout] | [INFO] [stdout] 5 | pub struct FilteredViews { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 6 | pub likes: Vec, [INFO] [stdout] 7 | pub playlists: Vec, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `label` is never used [INFO] [stdout] --> src/tui/logic/state.rs:29:12 [INFO] [stdout] | [INFO] [stdout] 21 | impl VisualizerMode { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 29 | pub fn label(self) -> &'static str { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tui/render/overlays/mod.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn render_overlays( [INFO] [stdout] 14 | | frame: &mut Frame, [INFO] [stdout] 15 | | queue_tracks: &Vec, [INFO] [stdout] 16 | | manual_queue: &VecDeque, [INFO] [stdout] ... | [INFO] [stdout] 23 | | quit_confirm_selected: usize, [INFO] [stdout] 24 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (29/7) [INFO] [stdout] --> src/tui/render/tabs/library.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn render_library( [INFO] [stdout] 14 | | frame: &mut Frame, [INFO] [stdout] 15 | | area: Rect, [INFO] [stdout] 16 | | width: usize, [INFO] [stdout] ... | [INFO] [stdout] 42 | | search_query: &str, [INFO] [stdout] 43 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:17:17 [INFO] [stdout] | [INFO] [stdout] 17 | likes_view: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 17 - likes_view: &Vec, [INFO] [stdout] 17 + likes_view: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - playlists: &Vec, [INFO] [stdout] 19 + playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - playlist_tracks: &Vec, [INFO] [stdout] 21 + playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:23:19 [INFO] [stdout] | [INFO] [stdout] 23 | album_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 23 - album_tracks: &Vec, [INFO] [stdout] 23 + album_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 - albums: &Vec, [INFO] [stdout] 25 + albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:27:16 [INFO] [stdout] | [INFO] [stdout] 27 | following: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 27 - following: &Vec, [INFO] [stdout] 27 + following: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | following_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 29 - following_tracks: &Vec, [INFO] [stdout] 29 + following_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:31:29 [INFO] [stdout] | [INFO] [stdout] 31 | following_likes_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 31 - following_likes_tracks: &Vec, [INFO] [stdout] 31 + following_likes_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (32/7) [INFO] [stdout] --> src/tui/render/tabs/search.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | / pub fn render_search( [INFO] [stdout] 17 | | frame: &mut Frame, [INFO] [stdout] 18 | | area: Rect, [INFO] [stdout] 19 | | width: usize, [INFO] [stdout] ... | [INFO] [stdout] 48 | | people_focus_is_likes: bool, [INFO] [stdout] 49 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:28:20 [INFO] [stdout] | [INFO] [stdout] 28 | search_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 28 - search_tracks: &Vec, [INFO] [stdout] 28 + search_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:30:23 [INFO] [stdout] | [INFO] [stdout] 30 | search_playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 30 - search_playlists: &Vec, [INFO] [stdout] 30 + search_playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:32:29 [INFO] [stdout] | [INFO] [stdout] 32 | search_playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - search_playlist_tracks: &Vec, [INFO] [stdout] 32 + search_playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:34:20 [INFO] [stdout] | [INFO] [stdout] 34 | search_albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 34 - search_albums: &Vec, [INFO] [stdout] 34 + search_albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:36:26 [INFO] [stdout] | [INFO] [stdout] 36 | search_album_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 36 - search_album_tracks: &Vec, [INFO] [stdout] 36 + search_album_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:38:20 [INFO] [stdout] | [INFO] [stdout] 38 | search_people: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 38 - search_people: &Vec, [INFO] [stdout] 38 + search_people: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:40:27 [INFO] [stdout] | [INFO] [stdout] 40 | search_people_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 40 - search_people_tracks: &Vec, [INFO] [stdout] 40 + search_people_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:42:33 [INFO] [stdout] | [INFO] [stdout] 42 | search_people_likes_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 42 - search_people_likes_tracks: &Vec, [INFO] [stdout] 42 + search_people_likes_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:70:43 [INFO] [stdout] | [INFO] [stdout] 70 | let title = parse_str(&playlist, "title"); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:71:49 [INFO] [stdout] | [INFO] [stdout] 71 | let track_count = parse_u64(&playlist, "track_count").to_string(); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:72:62 [INFO] [stdout] | [INFO] [stdout] 72 | let duration = format_duration(parse_u64(&playlist, "duration")); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:74:36 [INFO] [stdout] | [INFO] [stdout] 74 | &parse_str(&playlist, "created_at"), [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/api/calls/playlists.rs:80:48 [INFO] [stdout] | [INFO] [stdout] 80 | let tracks_uri = parse_str(&playlist, "tracks_uri"); [INFO] [stdout] | ^^^^^^^^^ help: change this to: `playlist` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/api/calls/playlists.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 94 - playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] 94 + playlists.sort_by_key(|b| std::cmp::Reverse(b.created_at)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/api/calls/search.rs:184:5 [INFO] [stdout] | [INFO] [stdout] 184 | playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 184 - playlists.sort_by(|a, b| b.created_at.cmp(&a.created_at)); [INFO] [stdout] 184 + playlists.sort_by_key(|b| std::cmp::Reverse(b.created_at)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `mags` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | for i in 1..half { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 152 - for i in 1..half { [INFO] [stdout] 152 + for (i, ) in mags.iter_mut().enumerate().take(half).skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `API` contains a capitalized acronym [INFO] [stdout] --> src/api/mod.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | pub struct API { [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Api` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `freq_smoothed` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:224:14 [INFO] [stdout] | [INFO] [stdout] 224 | for i in 0..bar_count { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 224 - for i in 0..bar_count { [INFO] [stdout] 224 + for (i, ) in freq_smoothed.iter().enumerate().take(bar_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (80/7) [INFO] [stdout] --> src/tui/render/mod.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / pub fn render( [INFO] [stdout] 25 | | frame: &mut Frame, [INFO] [stdout] 26 | | likes_view: &Vec, [INFO] [stdout] 27 | | queue_tracks: &Vec, [INFO] [stdout] ... | [INFO] [stdout] 104 | | visualizer_view: crate::tui::logic::state::VisualizerMode, [INFO] [stdout] 105 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/api/calls/playlists.rs:26:20 [INFO] [stdout] | [INFO] [stdout] 26 | let urls = vec![ [INFO] [stdout] | ____________________^ [INFO] [stdout] 27 | | self.my_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 28 | | "https://api.soundcloud.com/me/playlists?linked_partitioning=true&limit=40&show_tracks=false".to_string() [INFO] [stdout] 29 | | }), [INFO] [stdout] ... | [INFO] [stdout] 33 | | }), [INFO] [stdout] 34 | | ]; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 26 ~ let urls = [self.my_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 27 + "https://api.soundcloud.com/me/playlists?linked_partitioning=true&limit=40&show_tracks=false".to_string() [INFO] [stdout] 28 + }), [INFO] [stdout] 29 + self.others_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 30 + "https://api.soundcloud.com/me/likes/playlists?limit=40&linked_partitioning=true" [INFO] [stdout] 31 + .to_string() [INFO] [stdout] 32 ~ })]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tui/render/now_playing.rs:149:17 [INFO] [stdout] | [INFO] [stdout] 149 | let lines = vec![ [INFO] [stdout] | _________________^ [INFO] [stdout] 150 | | "".to_string(), [INFO] [stdout] 151 | | "".to_string(), [INFO] [stdout] 152 | | format!("shf: {}", shuffle_indicator), [INFO] [stdout] 153 | | format!("vol: {:.1}", current_volume), [INFO] [stdout] 154 | | format!("rep: {}", repeat_indicator), [INFO] [stdout] 155 | | ]; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 149 ~ let lines = ["".to_string(), [INFO] [stdout] 150 + "".to_string(), [INFO] [stdout] 151 + format!("shf: {}", shuffle_indicator), [INFO] [stdout] 152 + format!("vol: {:.1}", current_volume), [INFO] [stdout] 153 ~ format!("rep: {}", repeat_indicator)]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/auth/refresh.rs:51:37 [INFO] [stdout] | [INFO] [stdout] 51 | match refresh_token(&*token_guard) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&token_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/auth/refresh.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | match refresh_token(&*token_guard) { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `&token_guard` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/controller.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | / if self.is_playing() { [INFO] [stdout] 126 | | if let Some(start) = *self.last_start.lock().unwrap() { [INFO] [stdout] 127 | | elapsed += start.elapsed(); [INFO] [stdout] 128 | | } [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 125 ~ if self.is_playing() [INFO] [stdout] 126 ~ && let Some(start) = *self.last_start.lock().unwrap() { [INFO] [stdout] 127 | elapsed += start.elapsed(); [INFO] [stdout] 128 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/stream/hls.rs:72:25 [INFO] [stdout] | [INFO] [stdout] 72 | / if init_url.is_none() { [INFO] [stdout] 73 | | if let Some(map) = &segment.map { [INFO] [stdout] 74 | | init_url = Some( [INFO] [stdout] 75 | | url.join(&map.uri) [INFO] [stdout] ... | [INFO] [stdout] 79 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 72 ~ if init_url.is_none() [INFO] [stdout] 73 ~ && let Some(map) = &segment.map { [INFO] [stdout] 74 | init_url = Some( [INFO] [stdout] ... [INFO] [stdout] 77 | ); [INFO] [stdout] 78 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/player/stream/engine.rs:98:10 [INFO] [stdout] | [INFO] [stdout] 98 | ) -> anyhow::Result<(Arc, Arc>, Arc>)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] = note: `#[warn(clippy::type_complexity)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/player/stream/engine.rs:101:9 [INFO] [stdout] | [INFO] [stdout] 101 | / if let Some(ref preload) = self.preload_next { [INFO] [stdout] 102 | | if preload.track_urn == track.track_urn { [INFO] [stdout] 103 | | let preload = self.preload_next.take().unwrap(); [INFO] [stdout] 104 | | self.cache = Some(preload); [INFO] [stdout] ... | [INFO] [stdout] 112 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 101 ~ if let Some(ref preload) = self.preload_next [INFO] [stdout] 102 ~ && preload.track_urn == track.track_urn { [INFO] [stdout] 103 | let preload = self.preload_next.take().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 110 | )); [INFO] [stdout] 111 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/player/stream/engine.rs:198:5 [INFO] [stdout] | [INFO] [stdout] 198 | / pub(crate) fn play_from_position( [INFO] [stdout] 199 | | &mut self, [INFO] [stdout] 200 | | track: &Track, [INFO] [stdout] 201 | | position_ms: u64, [INFO] [stdout] ... | [INFO] [stdout] 208 | | wave_buffer: &Arc>>, [INFO] [stdout] 209 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/player/worker.rs:15:1 [INFO] [stdout] | [INFO] [stdout] 15 | / pub(crate) fn player_loop( [INFO] [stdout] 16 | | rx: Receiver, [INFO] [stdout] 17 | | token: Arc>, [INFO] [stdout] 18 | | is_playing_flag: Arc, [INFO] [stdout] ... | [INFO] [stdout] 24 | | wave_buffer: Arc>>, [INFO] [stdout] 25 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/navigation.rs:205:16 [INFO] [stdout] | [INFO] [stdout] 205 | } else if let Some(next_idx) = state.auto_queue.pop_front() { [INFO] [stdout] | ________________^ [INFO] [stdout] 206 | | if let Some(track) = active_tracks.get(next_idx) { [INFO] [stdout] 207 | | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] 208 | | state.playback_history.push(current); [INFO] [stdout] ... | [INFO] [stdout] 214 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 205 ~ } else if let Some(next_idx) = state.auto_queue.pop_front() [INFO] [stdout] 206 ~ && let Some(track) = active_tracks.get(next_idx) { [INFO] [stdout] 207 | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] ... [INFO] [stdout] 212 | state.current_playing_index = Some(next_idx); [INFO] [stdout] 213 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/navigation.rs:224:5 [INFO] [stdout] | [INFO] [stdout] 224 | / if state.current_playing_index.is_some() { [INFO] [stdout] 225 | | if let Some(prev) = state.playback_history.pop() { [INFO] [stdout] 226 | | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] 227 | | let mut current = current; [INFO] [stdout] ... | [INFO] [stdout] 233 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 224 ~ if state.current_playing_index.is_some() [INFO] [stdout] 225 ~ && let Some(prev) = state.playback_history.pop() { [INFO] [stdout] 226 | if let Some(current) = crate::tui::logic::utils::queued_from_current(state, data) { [INFO] [stdout] ... [INFO] [stdout] 231 | crate::tui::logic::utils::play_queued_track(prev, state, data, player, true); [INFO] [stdout] 232 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:49:12 [INFO] [stdout] | [INFO] [stdout] 49 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 50 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 51 | | state.playback_history.push(queued); [INFO] [stdout] 52 | | } [INFO] [stdout] 53 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 49 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 50 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 51 | state.playback_history.push(queued); [INFO] [stdout] 52 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:79:12 [INFO] [stdout] | [INFO] [stdout] 79 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 80 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 81 | | state.playback_history.push(queued); [INFO] [stdout] 82 | | } [INFO] [stdout] 83 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 80 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 81 | state.playback_history.push(queued); [INFO] [stdout] 82 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:109:12 [INFO] [stdout] | [INFO] [stdout] 109 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 110 | | if !(queued.source == PlaybackSource::Album && queued.index == selected_idx) { [INFO] [stdout] 111 | | state.playback_history.push(queued); [INFO] [stdout] 112 | | } [INFO] [stdout] 113 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 109 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 110 ~ && !(queued.source == PlaybackSource::Album && queued.index == selected_idx) { [INFO] [stdout] 111 | state.playback_history.push(queued); [INFO] [stdout] 112 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________^ [INFO] [stdout] 156 | | if !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 157 | | state.playback_history.push(queued); [INFO] [stdout] 158 | | } [INFO] [stdout] 159 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 155 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 156 ~ && !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 157 | state.playback_history.push(queued); [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:183:5 [INFO] [stdout] | [INFO] [stdout] 183 | / if let Some(selected_idx) = selected_idx { [INFO] [stdout] 184 | | if let Some(track) = data.likes.get(selected_idx) { [INFO] [stdout] 185 | | if !track.is_playable() { [INFO] [stdout] 186 | | return; [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 183 ~ if let Some(selected_idx) = selected_idx [INFO] [stdout] 184 ~ && let Some(track) = data.likes.get(selected_idx) { [INFO] [stdout] 185 | if !track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:191:20 [INFO] [stdout] | [INFO] [stdout] 191 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ____________________^ [INFO] [stdout] 192 | | if !(queued.source == PlaybackSource::Likes && queued.index == selected_idx) { [INFO] [stdout] 193 | | state.playback_history.push(queued); [INFO] [stdout] 194 | | } [INFO] [stdout] 195 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 191 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 192 ~ && !(queued.source == PlaybackSource::Likes && queued.index == selected_idx) { [INFO] [stdout] 193 | state.playback_history.push(queued); [INFO] [stdout] 194 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | / if !search_active { [INFO] [stdout] 205 | | if state.selected_tab == 0 && state.selected_subtab == 0 { [INFO] [stdout] 206 | | state.selected_row = selected_idx; [INFO] [stdout] 207 | | data.likes_state.select(Some(state.selected_row)); [INFO] [stdout] 208 | | } [INFO] [stdout] 209 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 204 ~ if !search_active [INFO] [stdout] 205 ~ && state.selected_tab == 0 && state.selected_subtab == 0 { [INFO] [stdout] 206 | state.selected_row = selected_idx; [INFO] [stdout] 207 | data.likes_state.select(Some(state.selected_row)); [INFO] [stdout] 208 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:239:16 [INFO] [stdout] | [INFO] [stdout] 239 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 240 | | if !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 241 | | state.playback_history.push(queued); [INFO] [stdout] 242 | | } [INFO] [stdout] 243 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 239 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 240 ~ && !(queued.source == PlaybackSource::Playlist && queued.index == selected_idx) { [INFO] [stdout] 241 | state.playback_history.push(queued); [INFO] [stdout] 242 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:275:16 [INFO] [stdout] | [INFO] [stdout] 275 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 276 | | if !(queued.source == PlaybackSource::Album [INFO] [stdout] 277 | | && queued.index == state.selected_album_track_row) [INFO] [stdout] ... | [INFO] [stdout] 281 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 275 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 276 ~ && !(queued.source == PlaybackSource::Album [INFO] [stdout] 277 | && queued.index == state.selected_album_track_row) [INFO] [stdout] 278 | { [INFO] [stdout] 279 | state.playback_history.push(queued); [INFO] [stdout] 280 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/playback.rs:327:16 [INFO] [stdout] | [INFO] [stdout] 327 | } else if let Some(queued) = queued_from_current(state, data) { [INFO] [stdout] | ________________^ [INFO] [stdout] 328 | | if !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 329 | | state.playback_history.push(queued); [INFO] [stdout] 330 | | } [INFO] [stdout] 331 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 327 ~ } else if let Some(queued) = queued_from_current(state, data) [INFO] [stdout] 328 ~ && !(queued.source == new_source && queued.index == selected_idx) { [INFO] [stdout] 329 | state.playback_history.push(queued); [INFO] [stdout] 330 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | / if let Some(track) = data.search_tracks.get(state.selected_row) { [INFO] [stdout] 58 | | if track.is_playable() { [INFO] [stdout] 59 | | insert_manual_queue( [INFO] [stdout] 60 | | state, [INFO] [stdout] ... | [INFO] [stdout] 73 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 57 ~ if let Some(track) = data.search_tracks.get(state.selected_row) [INFO] [stdout] 58 ~ && track.is_playable() { [INFO] [stdout] 59 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 71 | ); [INFO] [stdout] 72 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:77:5 [INFO] [stdout] | [INFO] [stdout] 77 | / if let Some(track) = data [INFO] [stdout] 78 | | .search_playlist_tracks [INFO] [stdout] 79 | | .get(state.search_selected_playlist_track_row) [INFO] [stdout] ... | [INFO] [stdout] 96 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 79 ~ .get(state.search_selected_playlist_track_row) [INFO] [stdout] 80 ~ && track.is_playable() { [INFO] [stdout] 81 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 93 | ); [INFO] [stdout] 94 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:100:5 [INFO] [stdout] | [INFO] [stdout] 100 | / if let Some(track) = data [INFO] [stdout] 101 | | .search_album_tracks [INFO] [stdout] 102 | | .get(state.search_selected_album_track_row) [INFO] [stdout] ... | [INFO] [stdout] 119 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 102 ~ .get(state.search_selected_album_track_row) [INFO] [stdout] 103 ~ && track.is_playable() { [INFO] [stdout] 104 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 116 | ); [INFO] [stdout] 117 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | / if let Some(track) = data [INFO] [stdout] 125 | | .search_people_likes_tracks [INFO] [stdout] 126 | | .get(state.search_selected_person_like_row) [INFO] [stdout] ... | [INFO] [stdout] 143 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 126 ~ .get(state.search_selected_person_like_row) [INFO] [stdout] 127 ~ && track.is_playable() { [INFO] [stdout] 128 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 140 | ); [INFO] [stdout] 141 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 145 | | .search_people_tracks [INFO] [stdout] 146 | | .get(state.search_selected_person_track_row) [INFO] [stdout] ... | [INFO] [stdout] 163 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 146 ~ .get(state.search_selected_person_track_row) [INFO] [stdout] 147 ~ && track.is_playable() { [INFO] [stdout] 148 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 160 | ); [INFO] [stdout] 161 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:262:5 [INFO] [stdout] | [INFO] [stdout] 262 | / if let Some(idx) = selected_idx { [INFO] [stdout] 263 | | if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | | if track.is_playable() { [INFO] [stdout] 265 | | insert_manual_queue( [INFO] [stdout] ... | [INFO] [stdout] 280 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 262 ~ if let Some(idx) = selected_idx [INFO] [stdout] 263 ~ && let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | if track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 278 | } [INFO] [stdout] 279 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 264 | | if track.is_playable() { [INFO] [stdout] 265 | | insert_manual_queue( [INFO] [stdout] 266 | | state, [INFO] [stdout] ... | [INFO] [stdout] 279 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 263 ~ if let Some(track) = data.likes.get(idx) [INFO] [stdout] 264 ~ && track.is_playable() { [INFO] [stdout] 265 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 277 | ); [INFO] [stdout] 278 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:317:5 [INFO] [stdout] | [INFO] [stdout] 317 | / if let Some(track) = data.album_tracks.get(state.selected_album_track_row) { [INFO] [stdout] 318 | | if track.is_playable() { [INFO] [stdout] 319 | | insert_manual_queue( [INFO] [stdout] 320 | | state, [INFO] [stdout] ... | [INFO] [stdout] 333 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 317 ~ if let Some(track) = data.album_tracks.get(state.selected_album_track_row) [INFO] [stdout] 318 ~ && track.is_playable() { [INFO] [stdout] 319 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 331 | ); [INFO] [stdout] 332 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:338:9 [INFO] [stdout] | [INFO] [stdout] 338 | / if let Some(track) = data [INFO] [stdout] 339 | | .following_likes_tracks [INFO] [stdout] 340 | | .get(state.selected_following_like_row) [INFO] [stdout] ... | [INFO] [stdout] 357 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 340 ~ .get(state.selected_following_like_row) [INFO] [stdout] 341 ~ && track.is_playable() { [INFO] [stdout] 342 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 354 | ); [INFO] [stdout] 355 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:358:12 [INFO] [stdout] | [INFO] [stdout] 358 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 359 | | .following_tracks [INFO] [stdout] 360 | | .get(state.selected_following_track_row) [INFO] [stdout] ... | [INFO] [stdout] 377 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 360 ~ .get(state.selected_following_track_row) [INFO] [stdout] 361 ~ && track.is_playable() { [INFO] [stdout] 362 | insert_manual_queue( [INFO] [stdout] ... [INFO] [stdout] 374 | ); [INFO] [stdout] 375 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:387:5 [INFO] [stdout] | [INFO] [stdout] 387 | / if let Some(idx) = selected_idx { [INFO] [stdout] 388 | | if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | | if track.is_playable() { [INFO] [stdout] 390 | | return Some(QueuedTrack { [INFO] [stdout] ... | [INFO] [stdout] 402 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 387 ~ if let Some(idx) = selected_idx [INFO] [stdout] 388 ~ && let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | if track.is_playable() { [INFO] [stdout] ... [INFO] [stdout] 400 | } [INFO] [stdout] 401 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:388:9 [INFO] [stdout] | [INFO] [stdout] 388 | / if let Some(track) = data.likes.get(idx) { [INFO] [stdout] 389 | | if track.is_playable() { [INFO] [stdout] 390 | | return Some(QueuedTrack { [INFO] [stdout] 391 | | source: PlaybackSource::Likes, [INFO] [stdout] ... | [INFO] [stdout] 401 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 388 ~ if let Some(track) = data.likes.get(idx) [INFO] [stdout] 389 ~ && track.is_playable() { [INFO] [stdout] 390 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 399 | }); [INFO] [stdout] 400 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:435:5 [INFO] [stdout] | [INFO] [stdout] 435 | / if let Some(track) = data.album_tracks.get(state.selected_album_track_row) { [INFO] [stdout] 436 | | if track.is_playable() { [INFO] [stdout] 437 | | return Some(QueuedTrack { [INFO] [stdout] 438 | | source: PlaybackSource::Album, [INFO] [stdout] ... | [INFO] [stdout] 448 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 435 ~ if let Some(track) = data.album_tracks.get(state.selected_album_track_row) [INFO] [stdout] 436 ~ && track.is_playable() { [INFO] [stdout] 437 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 446 | }); [INFO] [stdout] 447 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | / if let Some(track) = data [INFO] [stdout] 455 | | .following_likes_tracks [INFO] [stdout] 456 | | .get(state.selected_following_like_row) [INFO] [stdout] ... | [INFO] [stdout] 470 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 456 ~ .get(state.selected_following_like_row) [INFO] [stdout] 457 ~ && track.is_playable() { [INFO] [stdout] 458 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 467 | }); [INFO] [stdout] 468 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/queue.rs:471:12 [INFO] [stdout] | [INFO] [stdout] 471 | } else if let Some(track) = data [INFO] [stdout] | ____________^ [INFO] [stdout] 472 | | .following_tracks [INFO] [stdout] 473 | | .get(state.selected_following_track_row) [INFO] [stdout] ... | [INFO] [stdout] 487 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 473 ~ .get(state.selected_following_track_row) [INFO] [stdout] 474 ~ && track.is_playable() { [INFO] [stdout] 475 | return Some(QueuedTrack { [INFO] [stdout] ... [INFO] [stdout] 484 | }); [INFO] [stdout] 485 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/input/commands.rs:84:13 [INFO] [stdout] | [INFO] [stdout] 84 | / if state.selected_tab == 0 { [INFO] [stdout] 85 | | state.search_popup_visible = true; [INFO] [stdout] 86 | | state.search_query.clear(); [INFO] [stdout] 87 | | state.search_matches = build_search_matches( [INFO] [stdout] ... | [INFO] [stdout] 95 | | ); [INFO] [stdout] 96 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 83 ~ 'f' | 'F' [INFO] [stdout] 84 ~ if state.selected_tab == 0 => { [INFO] [stdout] 85 | state.search_popup_visible = true; [INFO] [stdout] ... [INFO] [stdout] 95 | ); [INFO] [stdout] 96 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | / if state.queue_visible { [INFO] [stdout] 107 | | if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | | if state.auto_queue.is_empty() { [INFO] [stdout] 109 | | let active_tracks = match state.playback_source { [INFO] [stdout] ... | [INFO] [stdout] 123 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 106 ~ if state.queue_visible [INFO] [stdout] 107 ~ && let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | if state.auto_queue.is_empty() { [INFO] [stdout] ... [INFO] [stdout] 121 | } [INFO] [stdout] 122 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:107:17 [INFO] [stdout] | [INFO] [stdout] 107 | / if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 108 | | if state.auto_queue.is_empty() { [INFO] [stdout] 109 | | let active_tracks = match state.playback_source { [INFO] [stdout] 110 | | PlaybackSource::Likes => &data.likes, [INFO] [stdout] ... | [INFO] [stdout] 122 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 107 ~ if let Some(current_idx) = state.current_playing_index [INFO] [stdout] 108 ~ && state.auto_queue.is_empty() { [INFO] [stdout] 109 | let active_tracks = match state.playback_source { [INFO] [stdout] ... [INFO] [stdout] 120 | ); [INFO] [stdout] 121 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:133:20 [INFO] [stdout] | [INFO] [stdout] 133 | } else if state.selected_tab == 1 && state.selected_searchfilter == 3 { [INFO] [stdout] | ____________________^ [INFO] [stdout] 134 | | if state.search_selected_person_like_row + 1 < data.search_people_likes_tracks.len() { [INFO] [stdout] 135 | | state.search_selected_person_like_row += 1; [INFO] [stdout] 136 | | state.search_people_tracks_focus = FollowingTracksFocus::Likes; [INFO] [stdout] ... | [INFO] [stdout] 140 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 133 ~ } else if state.selected_tab == 1 && state.selected_searchfilter == 3 [INFO] [stdout] 134 ~ && state.search_selected_person_like_row + 1 < data.search_people_likes_tracks.len() { [INFO] [stdout] 135 | state.search_selected_person_like_row += 1; [INFO] [stdout] ... [INFO] [stdout] 138 | .select(Some(state.search_selected_person_like_row)); [INFO] [stdout] 139 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:150:20 [INFO] [stdout] | [INFO] [stdout] 150 | } else if state.selected_tab == 1 && state.selected_searchfilter == 3 { [INFO] [stdout] | ____________________^ [INFO] [stdout] 151 | | if state.search_selected_person_like_row > 0 { [INFO] [stdout] 152 | | state.search_selected_person_like_row -= 1; [INFO] [stdout] 153 | | state.search_people_tracks_focus = FollowingTracksFocus::Likes; [INFO] [stdout] ... | [INFO] [stdout] 157 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 150 ~ } else if state.selected_tab == 1 && state.selected_searchfilter == 3 [INFO] [stdout] 151 ~ && state.search_selected_person_like_row > 0 { [INFO] [stdout] 152 | state.search_selected_person_like_row -= 1; [INFO] [stdout] ... [INFO] [stdout] 155 | .select(Some(state.search_selected_person_like_row)); [INFO] [stdout] 156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | / if let Some(track) = track { [INFO] [stdout] 176 | | if let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 177 | | data.liked_track_urns.remove(&track.track_urn); [INFO] [stdout] 178 | | state [INFO] [stdout] ... | [INFO] [stdout] 185 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 175 ~ if let Some(track) = track [INFO] [stdout] 176 ~ && let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 177 | data.liked_track_urns.remove(&track.track_urn); [INFO] [stdout] ... [INFO] [stdout] 183 | }); [INFO] [stdout] 184 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:188:17 [INFO] [stdout] | [INFO] [stdout] 188 | / if let Some(playlist) = data.playlists.get(state.selected_row) { [INFO] [stdout] 189 | | if let Some(playlist_id) = [INFO] [stdout] 190 | | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 211 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 188 ~ if let Some(playlist) = data.playlists.get(state.selected_row) [INFO] [stdout] 189 ~ && let Some(playlist_id) = [INFO] [stdout] 190 | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 209 | } [INFO] [stdout] 210 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:221:17 [INFO] [stdout] | [INFO] [stdout] 221 | / if let Some(album) = album { [INFO] [stdout] 222 | | if let Some(playlist_id) = [INFO] [stdout] 223 | | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 231 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 221 ~ if let Some(album) = album [INFO] [stdout] 222 ~ && let Some(playlist_id) = [INFO] [stdout] 223 | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 229 | }); [INFO] [stdout] 230 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:241:17 [INFO] [stdout] | [INFO] [stdout] 241 | / if let Some(artist) = artist { [INFO] [stdout] 242 | | if let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 243 | | data.followed_user_urns.remove(&artist.urn); [INFO] [stdout] 244 | | state.engagement_queue.push_back(EngagementAction::UnfollowUser { [INFO] [stdout] ... | [INFO] [stdout] 249 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 241 ~ if let Some(artist) = artist [INFO] [stdout] 242 ~ && let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 243 | data.followed_user_urns.remove(&artist.urn); [INFO] [stdout] ... [INFO] [stdout] 247 | }); [INFO] [stdout] 248 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:256:17 [INFO] [stdout] | [INFO] [stdout] 256 | / if let Some(track) = data.search_tracks.get(state.selected_row) { [INFO] [stdout] 257 | | if let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 258 | | let is_liked = data.liked_track_urns.contains(&track.track_urn); [INFO] [stdout] 259 | | if is_liked { [INFO] [stdout] ... | [INFO] [stdout] 273 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 256 ~ if let Some(track) = data.search_tracks.get(state.selected_row) [INFO] [stdout] 257 ~ && let Some(track_id) = soundcloud_id_from_urn(&track.track_urn) { [INFO] [stdout] 258 | let is_liked = data.liked_track_urns.contains(&track.track_urn); [INFO] [stdout] ... [INFO] [stdout] 271 | } [INFO] [stdout] 272 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:276:17 [INFO] [stdout] | [INFO] [stdout] 276 | / if let Some(album) = data.search_albums.get(state.selected_row) { [INFO] [stdout] 277 | | if let Some(playlist_id) = [INFO] [stdout] 278 | | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 295 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 276 ~ if let Some(album) = data.search_albums.get(state.selected_row) [INFO] [stdout] 277 ~ && let Some(playlist_id) = [INFO] [stdout] 278 | soundcloud_playlist_id_from_tracks_uri(&album.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 293 | } [INFO] [stdout] 294 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:298:17 [INFO] [stdout] | [INFO] [stdout] 298 | / if let Some(playlist) = data.search_playlists.get(state.selected_row) { [INFO] [stdout] 299 | | if let Some(playlist_id) = [INFO] [stdout] 300 | | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... | [INFO] [stdout] 319 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 298 ~ if let Some(playlist) = data.search_playlists.get(state.selected_row) [INFO] [stdout] 299 ~ && let Some(playlist_id) = [INFO] [stdout] 300 | soundcloud_playlist_id_from_tracks_uri(&playlist.tracks_uri) [INFO] [stdout] ... [INFO] [stdout] 317 | } [INFO] [stdout] 318 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/commands.rs:322:17 [INFO] [stdout] | [INFO] [stdout] 322 | / if let Some(artist) = data.search_people.get(state.selected_row) { [INFO] [stdout] 323 | | if let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 324 | | let is_followed = data.followed_user_urns.contains(&artist.urn); [INFO] [stdout] 325 | | if is_followed { [INFO] [stdout] ... | [INFO] [stdout] 339 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 322 ~ if let Some(artist) = data.search_people.get(state.selected_row) [INFO] [stdout] 323 ~ && let Some(user_id) = soundcloud_id_from_urn(&artist.urn) { [INFO] [stdout] 324 | let is_followed = data.followed_user_urns.contains(&artist.urn); [INFO] [stdout] ... [INFO] [stdout] 337 | } [INFO] [stdout] 338 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/input/mod.rs:31:5 [INFO] [stdout] | [INFO] [stdout] 31 | / if state.search_popup_visible { [INFO] [stdout] 32 | | if let Some(outcome) = search::handle_search_input(key, state, data) { [INFO] [stdout] 33 | | return outcome; [INFO] [stdout] 34 | | } [INFO] [stdout] 35 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 31 ~ if state.search_popup_visible [INFO] [stdout] 32 ~ && let Some(outcome) = search::handle_search_input(key, state, data) { [INFO] [stdout] 33 | return outcome; [INFO] [stdout] 34 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (13/7) [INFO] [stdout] --> src/tui/logic/state.rs:387:5 [INFO] [stdout] | [INFO] [stdout] 387 | / pub fn apply_updates( [INFO] [stdout] 388 | | &mut self, [INFO] [stdout] 389 | | rx_likes: &Receiver>, [INFO] [stdout] 390 | | rx_playlists: &Receiver>, [INFO] [stdout] ... | [INFO] [stdout] 400 | | following_likes_request_id: u64, [INFO] [stdout] 401 | | ) { [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:105:12 [INFO] [stdout] | [INFO] [stdout] 105 | likes: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 105 - likes: &Vec, [INFO] [stdout] 105 + likes: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:106:16 [INFO] [stdout] | [INFO] [stdout] 106 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 106 - playlists: &Vec, [INFO] [stdout] 106 + playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:107:22 [INFO] [stdout] | [INFO] [stdout] 107 | playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 107 - playlist_tracks: &Vec, [INFO] [stdout] 107 + playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:108:13 [INFO] [stdout] | [INFO] [stdout] 108 | albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 108 - albums: &Vec, [INFO] [stdout] 108 + albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/logic/utils.rs:109:16 [INFO] [stdout] | [INFO] [stdout] 109 | following: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 109 - following: &Vec, [INFO] [stdout] 109 + following: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:94:51 [INFO] [stdout] | [INFO] [stdout] 94 | let (tx_playlist_tracks, rx_playlist_tracks): ( [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 95 | | Sender<(u64, Vec)>, [INFO] [stdout] 96 | | Receiver<(u64, Vec)>, [INFO] [stdout] 97 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:98:45 [INFO] [stdout] | [INFO] [stdout] 98 | let (tx_album_tracks, rx_album_tracks): ( [INFO] [stdout] | _____________________________________________^ [INFO] [stdout] 99 | | Sender<(u64, Vec)>, [INFO] [stdout] 100 | | Receiver<(u64, Vec)>, [INFO] [stdout] 101 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:108:53 [INFO] [stdout] | [INFO] [stdout] 108 | let (tx_following_tracks, rx_following_tracks): ( [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 109 | | Sender<(u64, Vec)>, [INFO] [stdout] 110 | | Receiver<(u64, Vec)>, [INFO] [stdout] 111 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:112:51 [INFO] [stdout] | [INFO] [stdout] 112 | let (tx_following_likes, rx_following_likes): ( [INFO] [stdout] | ___________________________________________________^ [INFO] [stdout] 113 | | Sender<(u64, Vec)>, [INFO] [stdout] 114 | | Receiver<(u64, Vec)>, [INFO] [stdout] 115 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:117:47 [INFO] [stdout] | [INFO] [stdout] 117 | let (tx_search_tracks, rx_search_tracks): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 118 | | Sender<(u64, Vec)>, [INFO] [stdout] 119 | | Receiver<(u64, Vec)>, [INFO] [stdout] 120 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:121:47 [INFO] [stdout] | [INFO] [stdout] 121 | let (tx_search_albums, rx_search_albums): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 122 | | Sender<(u64, Vec)>, [INFO] [stdout] 123 | | Receiver<(u64, Vec)>, [INFO] [stdout] 124 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:125:53 [INFO] [stdout] | [INFO] [stdout] 125 | let (tx_search_playlists, rx_search_playlists): ( [INFO] [stdout] | _____________________________________________________^ [INFO] [stdout] 126 | | Sender<(u64, Vec)>, [INFO] [stdout] 127 | | Receiver<(u64, Vec)>, [INFO] [stdout] 128 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:129:47 [INFO] [stdout] | [INFO] [stdout] 129 | let (tx_search_people, rx_search_people): ( [INFO] [stdout] | _______________________________________________^ [INFO] [stdout] 130 | | Sender<(u64, Vec)>, [INFO] [stdout] 131 | | Receiver<(u64, Vec)>, [INFO] [stdout] 132 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:134:65 [INFO] [stdout] | [INFO] [stdout] 134 | let (tx_search_playlist_tracks, rx_search_playlist_tracks): ( [INFO] [stdout] | _________________________________________________________________^ [INFO] [stdout] 135 | | Sender<(u64, Vec)>, [INFO] [stdout] 136 | | Receiver<(u64, Vec)>, [INFO] [stdout] 137 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:138:59 [INFO] [stdout] | [INFO] [stdout] 138 | let (tx_search_album_tracks, rx_search_album_tracks): ( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 139 | | Sender<(u64, Vec)>, [INFO] [stdout] 140 | | Receiver<(u64, Vec)>, [INFO] [stdout] 141 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:142:61 [INFO] [stdout] | [INFO] [stdout] 142 | let (tx_search_people_tracks, rx_search_people_tracks): ( [INFO] [stdout] | _____________________________________________________________^ [INFO] [stdout] 143 | | Sender<(u64, Vec)>, [INFO] [stdout] 144 | | Receiver<(u64, Vec)>, [INFO] [stdout] 145 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stdout] --> src/tui/logic/mod.rs:146:59 [INFO] [stdout] | [INFO] [stdout] 146 | let (tx_search_people_likes, rx_search_people_likes): ( [INFO] [stdout] | ___________________________________________________________^ [INFO] [stdout] 147 | | Sender<(u64, Vec)>, [INFO] [stdout] 148 | | Receiver<(u64, Vec)>, [INFO] [stdout] 149 | | ) = mpsc::channel(); [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tui/logic/mod.rs:291:37 [INFO] [stdout] | [INFO] [stdout] 291 | .retain(|p| !(p.tracks_uri == tracks_uri && !p.is_owned)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `p.tracks_uri != tracks_uri || p.is_owned` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:415:9 [INFO] [stdout] | [INFO] [stdout] 415 | / if should_update { [INFO] [stdout] 416 | | if let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] ... | [INFO] [stdout] 428 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 415 ~ if should_update [INFO] [stdout] 416 ~ && let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] ... [INFO] [stdout] 426 | } [INFO] [stdout] 427 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:416:13 [INFO] [stdout] | [INFO] [stdout] 416 | / if let Ok(resp) = reqwest::blocking::get(url.as_str()) { [INFO] [stdout] 417 | | if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] ... | [INFO] [stdout] 427 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 416 ~ if let Ok(resp) = reqwest::blocking::get(url.as_str()) [INFO] [stdout] 417 ~ && let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] ... [INFO] [stdout] 425 | } [INFO] [stdout] 426 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:417:17 [INFO] [stdout] | [INFO] [stdout] 417 | / if let Ok(bytes) = resp.bytes() { [INFO] [stdout] 418 | | if let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] 420 | | cover_art_async = [INFO] [stdout] ... | [INFO] [stdout] 426 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 417 ~ if let Ok(bytes) = resp.bytes() [INFO] [stdout] 418 ~ && let Ok(dyn_img) = image::load_from_memory(&bytes) { [INFO] [stdout] 419 | let resize_proto = picker.new_resize_protocol(dyn_img.clone()); [INFO] [stdout] ... [INFO] [stdout] 424 | last_artwork_image = Some(dyn_img); [INFO] [stdout] 425 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:779:21 [INFO] [stdout] | [INFO] [stdout] 779 | / if !data.search_albums.is_empty() && state.selected_row >= data.search_albums.len() { [INFO] [stdout] 780 | | state.selected_row = data.search_albums.len() - 1; [INFO] [stdout] 781 | | data.search_albums_state.select(Some(state.selected_row)); [INFO] [stdout] 782 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 778 ~ 1 [INFO] [stdout] 779 ~ if !data.search_albums.is_empty() && state.selected_row >= data.search_albums.len() => { [INFO] [stdout] 780 | state.selected_row = data.search_albums.len() - 1; [INFO] [stdout] 781 | data.search_albums_state.select(Some(state.selected_row)); [INFO] [stdout] 782 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:785:21 [INFO] [stdout] | [INFO] [stdout] 785 | / if !data.search_playlists.is_empty() [INFO] [stdout] 786 | | && state.selected_row >= data.search_playlists.len() [INFO] [stdout] 787 | | { [INFO] [stdout] 788 | | state.selected_row = data.search_playlists.len() - 1; [INFO] [stdout] 789 | | data.search_playlists_state.select(Some(state.selected_row)); [INFO] [stdout] 790 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 784 ~ 2 [INFO] [stdout] 785 | if !data.search_playlists.is_empty() [INFO] [stdout] 786 | && state.selected_row >= data.search_playlists.len() [INFO] [stdout] 787 ~ => { [INFO] [stdout] 788 | state.selected_row = data.search_playlists.len() - 1; [INFO] [stdout] 789 | data.search_playlists_state.select(Some(state.selected_row)); [INFO] [stdout] 790 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/tui/logic/mod.rs:793:21 [INFO] [stdout] | [INFO] [stdout] 793 | / if !data.search_people.is_empty() && state.selected_row >= data.search_people.len() { [INFO] [stdout] 794 | | state.selected_row = data.search_people.len() - 1; [INFO] [stdout] 795 | | data.search_people_state.select(Some(state.selected_row)); [INFO] [stdout] 796 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 792 ~ 3 [INFO] [stdout] 793 ~ if !data.search_people.is_empty() && state.selected_row >= data.search_people.len() => { [INFO] [stdout] 794 | state.selected_row = data.search_people.len() - 1; [INFO] [stdout] 795 | data.search_people_state.select(Some(state.selected_row)); [INFO] [stdout] 796 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:1127:17 [INFO] [stdout] | [INFO] [stdout] 1127 | / if should_preload { [INFO] [stdout] 1128 | | if let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 1129 | | let active_tracks = match state.playback_source { [INFO] [stdout] 1130 | | PlaybackSource::Likes => &data.likes, [INFO] [stdout] ... | [INFO] [stdout] 1157 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1127 ~ if should_preload [INFO] [stdout] 1128 ~ && let Some(current_idx) = state.current_playing_index { [INFO] [stdout] 1129 | let active_tracks = match state.playback_source { [INFO] [stdout] ... [INFO] [stdout] 1155 | } [INFO] [stdout] 1156 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/tui/logic/mod.rs:1150:25 [INFO] [stdout] | [INFO] [stdout] 1150 | / if let Some(track) = next_track { [INFO] [stdout] 1151 | | if track.track_urn != current_track.track_urn && track.is_playable() { [INFO] [stdout] 1152 | | player.preload_next(track); [INFO] [stdout] 1153 | | state.preload_triggered_for_track_urn = Some(current_track.track_urn.clone()); [INFO] [stdout] 1154 | | } [INFO] [stdout] 1155 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1150 ~ if let Some(track) = next_track [INFO] [stdout] 1151 ~ && track.track_urn != current_track.track_urn && track.is_playable() { [INFO] [stdout] 1152 | player.preload_next(track); [INFO] [stdout] 1153 | state.preload_triggered_for_track_urn = Some(current_track.track_urn.clone()); [INFO] [stdout] 1154 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tui/render/now_playing.rs:26:1 [INFO] [stdout] | [INFO] [stdout] 26 | / pub fn render_now_playing( [INFO] [stdout] 27 | | frame: &mut Frame, [INFO] [stdout] 28 | | area: Rect, [INFO] [stdout] 29 | | data: &mut Vec<(f64, f64)>, [INFO] [stdout] ... | [INFO] [stdout] 36 | | repeat_enabled: bool, [INFO] [stdout] 37 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u64` which implements the `Copy` trait [INFO] [stdout] --> src/tui/render/now_playing.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | let max_time: f64 = selected_track.duration_ms.clone() as f64; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `selected_track.duration_ms` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: clamp-like pattern without using clamp function [INFO] [stdout] --> src/tui/render/now_playing.rs:136:17 [INFO] [stdout] | [INFO] [stdout] 136 | let ratio = (progress_float / max_time).min(1.0).max(0.0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with clamp: `(progress_float / max_time).clamp(0.0, 1.0)` [INFO] [stdout] | [INFO] [stdout] = note: clamp will panic if max < min, min.is_nan(), or max.is_nan() [INFO] [stdout] = note: clamp returns NaN if the input is NaN [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_clamp [INFO] [stdout] = note: `#[warn(clippy::manual_clamp)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/tui/render/now_playing.rs:168:19 [INFO] [stdout] | [INFO] [stdout] 168 | .data(&data), [INFO] [stdout] | ^^^^^ help: change this to: `data` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/overlays/queue.rs:18:19 [INFO] [stdout] | [INFO] [stdout] 18 | queue_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 18 - queue_tracks: &Vec, [INFO] [stdout] 18 + queue_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (10/7) [INFO] [stdout] --> src/tui/render/overlays/mod.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn render_overlays( [INFO] [stdout] 14 | | frame: &mut Frame, [INFO] [stdout] 15 | | queue_tracks: &Vec, [INFO] [stdout] 16 | | manual_queue: &VecDeque, [INFO] [stdout] ... | [INFO] [stdout] 23 | | quit_confirm_selected: usize, [INFO] [stdout] 24 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (29/7) [INFO] [stdout] --> src/tui/render/tabs/library.rs:13:1 [INFO] [stdout] | [INFO] [stdout] 13 | / pub fn render_library( [INFO] [stdout] 14 | | frame: &mut Frame, [INFO] [stdout] 15 | | area: Rect, [INFO] [stdout] 16 | | width: usize, [INFO] [stdout] ... | [INFO] [stdout] 42 | | search_query: &str, [INFO] [stdout] 43 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:17:17 [INFO] [stdout] | [INFO] [stdout] 17 | likes_view: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 17 - likes_view: &Vec, [INFO] [stdout] 17 + likes_view: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:19:16 [INFO] [stdout] | [INFO] [stdout] 19 | playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 19 - playlists: &Vec, [INFO] [stdout] 19 + playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 21 - playlist_tracks: &Vec, [INFO] [stdout] 21 + playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:23:19 [INFO] [stdout] | [INFO] [stdout] 23 | album_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 23 - album_tracks: &Vec, [INFO] [stdout] 23 + album_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:25:13 [INFO] [stdout] | [INFO] [stdout] 25 | albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 25 - albums: &Vec, [INFO] [stdout] 25 + albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:27:16 [INFO] [stdout] | [INFO] [stdout] 27 | following: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 27 - following: &Vec, [INFO] [stdout] 27 + following: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:29:23 [INFO] [stdout] | [INFO] [stdout] 29 | following_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 29 - following_tracks: &Vec, [INFO] [stdout] 29 + following_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/library.rs:31:29 [INFO] [stdout] | [INFO] [stdout] 31 | following_likes_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 31 - following_likes_tracks: &Vec, [INFO] [stdout] 31 + following_likes_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (32/7) [INFO] [stdout] --> src/tui/render/tabs/search.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | / pub fn render_search( [INFO] [stdout] 17 | | frame: &mut Frame, [INFO] [stdout] 18 | | area: Rect, [INFO] [stdout] 19 | | width: usize, [INFO] [stdout] ... | [INFO] [stdout] 48 | | people_focus_is_likes: bool, [INFO] [stdout] 49 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:28:20 [INFO] [stdout] | [INFO] [stdout] 28 | search_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 28 - search_tracks: &Vec, [INFO] [stdout] 28 + search_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:30:23 [INFO] [stdout] | [INFO] [stdout] 30 | search_playlists: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 30 - search_playlists: &Vec, [INFO] [stdout] 30 + search_playlists: &[Playlist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:32:29 [INFO] [stdout] | [INFO] [stdout] 32 | search_playlist_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - search_playlist_tracks: &Vec, [INFO] [stdout] 32 + search_playlist_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:34:20 [INFO] [stdout] | [INFO] [stdout] 34 | search_albums: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 34 - search_albums: &Vec, [INFO] [stdout] 34 + search_albums: &[Album], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:36:26 [INFO] [stdout] | [INFO] [stdout] 36 | search_album_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 36 - search_album_tracks: &Vec, [INFO] [stdout] 36 + search_album_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:38:20 [INFO] [stdout] | [INFO] [stdout] 38 | search_people: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 38 - search_people: &Vec, [INFO] [stdout] 38 + search_people: &[Artist], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:40:27 [INFO] [stdout] | [INFO] [stdout] 40 | search_people_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 40 - search_people_tracks: &Vec, [INFO] [stdout] 40 + search_people_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/tui/render/tabs/search.rs:42:33 [INFO] [stdout] | [INFO] [stdout] 42 | search_people_likes_tracks: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 42 - search_people_likes_tracks: &Vec, [INFO] [stdout] 42 + search_people_likes_tracks: &[Track], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `mags` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | for i in 1..half { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 152 - for i in 1..half { [INFO] [stdout] 152 + for (i, ) in mags.iter_mut().enumerate().take(half).skip(1) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `freq_smoothed` [INFO] [stdout] --> src/tui/render/visualizer/spectrum.rs:224:14 [INFO] [stdout] | [INFO] [stdout] 224 | for i in 0..bar_count { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 224 - for i in 0..bar_count { [INFO] [stdout] 224 + for (i, ) in freq_smoothed.iter().enumerate().take(bar_count) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (80/7) [INFO] [stdout] --> src/tui/render/mod.rs:24:1 [INFO] [stdout] | [INFO] [stdout] 24 | / pub fn render( [INFO] [stdout] 25 | | frame: &mut Frame, [INFO] [stdout] 26 | | likes_view: &Vec, [INFO] [stdout] 27 | | queue_tracks: &Vec, [INFO] [stdout] ... | [INFO] [stdout] 104 | | visualizer_view: crate::tui::logic::state::VisualizerMode, [INFO] [stdout] 105 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/api/calls/playlists.rs:26:20 [INFO] [stdout] | [INFO] [stdout] 26 | let urls = vec![ [INFO] [stdout] | ____________________^ [INFO] [stdout] 27 | | self.my_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 28 | | "https://api.soundcloud.com/me/playlists?linked_partitioning=true&limit=40&show_tracks=false".to_string() [INFO] [stdout] 29 | | }), [INFO] [stdout] ... | [INFO] [stdout] 33 | | }), [INFO] [stdout] 34 | | ]; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 26 ~ let urls = [self.my_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 27 + "https://api.soundcloud.com/me/playlists?linked_partitioning=true&limit=40&show_tracks=false".to_string() [INFO] [stdout] 28 + }), [INFO] [stdout] 29 + self.others_playlists_next_href.clone().unwrap_or_else(|| { [INFO] [stdout] 30 + "https://api.soundcloud.com/me/likes/playlists?limit=40&linked_partitioning=true" [INFO] [stdout] 31 + .to_string() [INFO] [stdout] 32 ~ })]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/tui/render/now_playing.rs:149:17 [INFO] [stdout] | [INFO] [stdout] 149 | let lines = vec![ [INFO] [stdout] | _________________^ [INFO] [stdout] 150 | | "".to_string(), [INFO] [stdout] 151 | | "".to_string(), [INFO] [stdout] 152 | | format!("shf: {}", shuffle_indicator), [INFO] [stdout] 153 | | format!("vol: {:.1}", current_volume), [INFO] [stdout] 154 | | format!("rep: {}", repeat_indicator), [INFO] [stdout] 155 | | ]; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 149 ~ let lines = ["".to_string(), [INFO] [stdout] 150 + "".to_string(), [INFO] [stdout] 151 + format!("shf: {}", shuffle_indicator), [INFO] [stdout] 152 + format!("vol: {:.1}", current_volume), [INFO] [stdout] 153 ~ format!("rep: {}", repeat_indicator)]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 52.74s [INFO] running `Command { std: "docker" "inspect" "beb1c6c3e45a9b87456669895bb5a82955c08a9d1d10633fb04a4111022a41f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "beb1c6c3e45a9b87456669895bb5a82955c08a9d1d10633fb04a4111022a41f7", kill_on_drop: false }` [INFO] [stdout] beb1c6c3e45a9b87456669895bb5a82955c08a9d1d10633fb04a4111022a41f7