[INFO] cloning repository https://github.com/vvsx87/SongRec. [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/vvsx87/SongRec." "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvvsx87%2FSongRec.", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvvsx87%2FSongRec.'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 8026bc30da07268644cffdfda9f5cb83cd4a7d63 [INFO] linting vvsx87/SongRec. against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvvsx87%2FSongRec." "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/vvsx87/SongRec. [INFO] finished tweaking git repo https://github.com/vvsx87/SongRec. [INFO] tweaked toml for git repo https://github.com/vvsx87/SongRec. written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/vvsx87/SongRec. 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/vvsx87/SongRec. 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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded pulsectl-rs v0.3.2 [INFO] [stderr] Downloaded security-framework v2.3.1 [INFO] [stderr] Downloaded clang-sys v1.3.0 [INFO] [stderr] Downloaded gettext-rs v0.5.0 [INFO] [stderr] Downloaded xdg v2.4.0 [INFO] [stderr] Downloaded chfft v0.3.4 [INFO] [stderr] Downloaded mpris-player v0.6.1 [INFO] [stderr] Downloaded libloading v0.7.2 [INFO] [stderr] Downloaded anyhow v1.0.47 [INFO] [stderr] Downloaded libpulse-sys v1.19.2 [INFO] [stderr] Downloaded rodio v0.19.0 [INFO] [stderr] Downloaded dbus v0.6.5 [INFO] [stderr] Downloaded libpulse-binding v2.26.0 [INFO] [stderr] Downloaded hyper v0.13.10 [INFO] [stderr] Downloaded combine v4.6.2 [INFO] [stderr] Downloaded reqwest v0.10.10 [INFO] [stderr] Downloaded serde_json v1.0.71 [INFO] [stderr] Downloaded gettext-sys v0.19.9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] d20d63234f2908a5278551e71347932597c55ea65ab663abe095d0e631b86747 [INFO] running `Command { std: "docker" "start" "-a" "d20d63234f2908a5278551e71347932597c55ea65ab663abe095d0e631b86747", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "d20d63234f2908a5278551e71347932597c55ea65ab663abe095d0e631b86747", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d20d63234f2908a5278551e71347932597c55ea65ab663abe095d0e631b86747", kill_on_drop: false }` [INFO] [stdout] d20d63234f2908a5278551e71347932597c55ea65ab663abe095d0e631b86747 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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] a419564ac99592c4cd9b4249ee0347b47cb19b1ffb598c402955b18ccce014c4 [INFO] running `Command { std: "docker" "start" "-a" "a419564ac99592c4cd9b4249ee0347b47cb19b1ffb598c402955b18ccce014c4", kill_on_drop: false }` [INFO] [stderr] Compiling syn v1.0.81 [INFO] [stderr] Compiling libc v0.2.108 [INFO] [stderr] Compiling serde_derive v1.0.130 [INFO] [stderr] Compiling serde v1.0.130 [INFO] [stderr] Compiling version-compare v0.0.10 [INFO] [stderr] Compiling strum v0.18.0 [INFO] [stderr] Compiling proc-macro2 v1.0.86 [INFO] [stderr] Compiling futures-core v0.3.17 [INFO] [stderr] Compiling futures-macro v0.3.17 [INFO] [stderr] Checking futures-sink v0.3.17 [INFO] [stderr] Compiling futures-channel v0.3.17 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling futures-task v0.3.17 [INFO] [stderr] Compiling futures-util v0.3.17 [INFO] [stderr] Checking futures-io v0.3.17 [INFO] [stderr] Compiling anyhow v1.0.47 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling unicase v2.6.0 [INFO] [stderr] Checking pin-project-lite v0.1.12 [INFO] [stderr] Checking tracing v0.1.29 [INFO] [stderr] Compiling itertools v0.9.0 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Compiling gio v0.9.1 [INFO] [stderr] Checking ppv-lite86 v0.2.15 [INFO] [stderr] Checking bytemuck v1.18.0 [INFO] [stderr] Compiling libdbus-sys v0.2.2 [INFO] [stderr] Compiling libpulse-sys v1.19.2 [INFO] [stderr] Compiling cairo-rs v0.9.1 [INFO] [stderr] Compiling gdk-pixbuf v0.9.0 [INFO] [stderr] Compiling pango v0.9.1 [INFO] [stderr] Checking http-body v0.3.1 [INFO] [stderr] Checking aho-corasick v0.7.18 [INFO] [stderr] Compiling atk v0.9.0 [INFO] [stderr] Checking httpdate v0.3.2 [INFO] [stderr] Compiling mime_guess v2.0.3 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Checking symphonia-core v0.5.4 [INFO] [stderr] Compiling serde_json v1.0.71 [INFO] [stderr] Compiling gdk v0.13.2 [INFO] [stderr] Checking ogg v0.8.0 [INFO] [stderr] Compiling jobserver v0.1.24 [INFO] [stderr] Checking iovec v0.1.4 [INFO] [stderr] Checking net2 v0.2.37 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking getrandom v0.2.3 [INFO] [stderr] Checking dirs-sys v0.3.6 [INFO] [stderr] Checking getrandom v0.1.16 [INFO] [stderr] Checking socket2 v0.3.19 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Checking dirs v3.0.2 [INFO] [stderr] Compiling syn v2.0.77 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Compiling gtk v0.9.2 [INFO] [stderr] Compiling crc32fast v1.2.1 [INFO] [stderr] Checking dbus v0.6.5 [INFO] [stderr] Checking mio v0.6.23 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking xdg v2.4.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking lewton v0.10.2 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking time v0.1.43 [INFO] [stderr] Checking num-complex v0.4.0 [INFO] [stderr] Checking csv-core v0.1.10 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking claxon v0.4.3 [INFO] [stderr] Checking hound v3.4.0 [INFO] [stderr] Checking symphonia-metadata v0.5.4 [INFO] [stderr] Checking clap v2.33.3 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking app_dirs v1.2.1 [INFO] [stderr] Compiling openssl-sys v0.9.71 [INFO] [stderr] Compiling gettext-sys v0.19.9 [INFO] [stderr] Checking chfft v0.3.4 [INFO] [stderr] Checking uuid v0.8.2 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.4 [INFO] [stderr] Checking directories v4.0.1 [INFO] [stderr] Checking tempfile v3.2.0 [INFO] [stderr] Checking base64 v0.12.3 [INFO] [stderr] Compiling openssl v0.10.38 [INFO] [stderr] Compiling native-tls v0.2.8 [INFO] [stderr] Checking cpal v0.15.3 [INFO] [stderr] Checking tokio v0.2.25 [INFO] [stderr] Checking locale_config v0.3.0 [INFO] [stderr] Checking symphonia v0.5.4 [INFO] [stderr] Checking gettext-rs v0.5.0 [INFO] [stderr] Compiling thiserror-impl v1.0.64 [INFO] [stderr] Compiling thiserror v1.0.64 [INFO] [stderr] Checking tokio-util v0.3.1 [INFO] [stderr] Checking rodio v0.19.0 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Checking tokio-tls v0.3.1 [INFO] [stderr] Compiling strum_macros v0.18.0 [INFO] [stderr] Compiling pin-project-internal v1.0.8 [INFO] [stderr] Compiling num-derive v0.3.3 [INFO] [stderr] Checking pin-project v1.0.8 [INFO] [stderr] Checking tracing-futures v0.2.5 [INFO] [stderr] Checking libpulse-binding v2.26.0 [INFO] [stderr] Checking pulsectl-rs v0.3.2 [INFO] [stderr] Checking futures-executor v0.3.17 [INFO] [stderr] Checking h2 v0.2.7 [INFO] [stderr] Checking futures v0.3.17 [INFO] [stderr] Compiling toml v0.5.8 [INFO] [stderr] Checking serde_urlencoded v0.7.0 [INFO] [stderr] Checking bstr v0.2.17 [INFO] [stderr] Checking toml v0.4.10 [INFO] [stderr] Checking csv v1.1.6 [INFO] [stderr] Checking hyper v0.13.10 [INFO] [stderr] Compiling system-deps v1.3.2 [INFO] [stderr] Compiling proc-macro-crate v0.1.5 [INFO] [stderr] Compiling glib-macros v0.10.1 [INFO] [stderr] Compiling glib-sys v0.10.1 [INFO] [stderr] Compiling gobject-sys v0.10.0 [INFO] [stderr] Compiling gio-sys v0.10.1 [INFO] [stderr] Compiling gdk-pixbuf-sys v0.10.0 [INFO] [stderr] Compiling pango-sys v0.10.0 [INFO] [stderr] Compiling cairo-sys-rs v0.10.0 [INFO] [stderr] Compiling gdk-sys v0.10.0 [INFO] [stderr] Compiling atk-sys v0.10.0 [INFO] [stderr] Compiling gtk-sys v0.10.0 [INFO] [stderr] Checking glib v0.10.3 [INFO] [stderr] Checking hyper-tls v0.4.3 [INFO] [stderr] Checking reqwest v0.10.10 [INFO] [stderr] Checking mpris-player v0.6.1 [INFO] [stderr] Checking songrec v0.4.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cli_main.rs:176:37 [INFO] [stdout] | [INFO] [stdout] 176 | ... song_name: song_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `song_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/cli_main.rs:176:37 [INFO] [stdout] | [INFO] [stdout] 176 | ... song_name: song_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `song_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:165:13 [INFO] [stdout] | [INFO] [stdout] 165 | sample_rate_hz: sample_rate_hz, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_rate_hz` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:166:13 [INFO] [stdout] | [INFO] [stdout] 166 | number_samples: number_samples, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `number_samples` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:167:13 [INFO] [stdout] | [INFO] [stdout] 167 | frequency_band_to_sound_peaks: frequency_band_to_sound_peaks [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency_band_to_sound_peaks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:165:13 [INFO] [stdout] | [INFO] [stdout] 165 | sample_rate_hz: sample_rate_hz, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sample_rate_hz` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:166:13 [INFO] [stdout] | [INFO] [stdout] 166 | number_samples: number_samples, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `number_samples` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/fingerprinting/signature_format.rs:167:13 [INFO] [stdout] | [INFO] [stdout] 167 | frequency_band_to_sound_peaks: frequency_band_to_sound_peaks [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `frequency_band_to_sound_peaks` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/fingerprinting/user_agent.rs:5:26 [INFO] [stdout] | [INFO] [stdout] 5 | pub const USER_AGENTS: [&'static str; 100] = [ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/fingerprinting/user_agent.rs:5:26 [INFO] [stdout] | [INFO] [stdout] 5 | pub const USER_AGENTS: [&'static str; 100] = [ [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/fingerprinting/hanning.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / /// leading and trailing zeroes omitted. [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | pub const HANNING_WINDOW_2048_MULTIPLIERS: [f32; 2048] = [ [INFO] [stdout] | ----------------------------------------- the comment documents this constant item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 2 ~ //! Multipliers for applying hanning window over 2048 entries, with [INFO] [stdout] 3 ~ //! leading and trailing zeroes omitted. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/fingerprinting/hanning.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / /// leading and trailing zeroes omitted. [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | pub const HANNING_WINDOW_2048_MULTIPLIERS: [f32; 2048] = [ [INFO] [stdout] | ----------------------------------------- the comment documents this constant item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 2 ~ //! Multipliers for applying hanning window over 2048 entries, with [INFO] [stdout] 3 ~ //! leading and trailing zeroes omitted. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/core/http_thread.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | album_name: album_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `album_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/core/http_thread.rs:51:9 [INFO] [stdout] | [INFO] [stdout] 51 | album_name: album_name, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `album_name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/core/http_thread.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | release_year: release_year, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `release_year` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/core/thread_messages.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / /// This module contains code used from message-based communication between threads. [INFO] [stdout] 10 | | [INFO] [stdout] | |_^ [INFO] [stdout] 11 | pub fn spawn_big_thread(argument: F) -> () [INFO] [stdout] | ----------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/core/http_thread.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | release_year: release_year, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `release_year` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/core/thread_messages.rs:9:1 [INFO] [stdout] | [INFO] [stdout] 9 | / /// This module contains code used from message-based communication between threads. [INFO] [stdout] 10 | | [INFO] [stdout] | |_^ [INFO] [stdout] 11 | pub fn spawn_big_thread(argument: F) -> () [INFO] [stdout] | ----------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/gui/song_history_interface.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / /// GTK-rs GUI of SongRec and the filesystem while using the GUI. [INFO] [stdout] 9 | | [INFO] [stdout] | |_^ [INFO] [stdout] 10 | trait SongHistoryRecordListStore { [INFO] [stdout] | -------------------------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:11:35 [INFO] [stdout] | [INFO] [stdout] 11 | fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 11 - fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord); [INFO] [stdout] 11 + fn remove_song_history_record(&mut self, to_remove: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | fn remove_song(self: &mut Self, to_remove: Song); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 12 - fn remove_song(self: &mut Self, to_remove: Song); [INFO] [stdout] 12 + fn remove_song(&mut self, to_remove: Song); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:13:32 [INFO] [stdout] | [INFO] [stdout] 13 | fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 13 - fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord); [INFO] [stdout] 13 + fn add_song_history_record(&mut self, to_add: &SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:14:32 [INFO] [stdout] | [INFO] [stdout] 14 | fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 14 - fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option; [INFO] [stdout] 14 + fn get_song_history_record(&mut self, iter: >k::TreeIter) -> Option; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:18:32 [INFO] [stdout] | [INFO] [stdout] 18 | fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 18 - fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option { [INFO] [stdout] 18 + fn get_song_history_record(&mut self, iter: >k::TreeIter) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:36:20 [INFO] [stdout] | [INFO] [stdout] 36 | fn remove_song(self: &mut Self, to_remove: Song) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 36 - fn remove_song(self: &mut Self, to_remove: Song) { [INFO] [stdout] 36 + fn remove_song(&mut self, to_remove: Song) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:51:35 [INFO] [stdout] | [INFO] [stdout] 51 | fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 51 - fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord) { [INFO] [stdout] 51 + fn remove_song_history_record(&mut self, to_remove: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:67:32 [INFO] [stdout] | [INFO] [stdout] 67 | fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 67 - fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord) { [INFO] [stdout] 67 + fn add_song_history_record(&mut self, to_add: &SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | fn load(self: &mut Self) -> Result<(), Box>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 102 - fn load(self: &mut Self) -> Result<(), Box>; [INFO] [stdout] 102 + fn load(&mut self) -> Result<(), Box>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | fn wipe_and_save(self: &mut Self); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 103 - fn wipe_and_save(self: &mut Self); [INFO] [stdout] 103 + fn wipe_and_save(&mut self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 104 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] 104 + fn add_row_and_save(&mut self, record: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | fn save(self: &mut Self); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 105 - fn save(self: &mut Self); [INFO] [stdout] 105 + fn save(&mut self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:106:15 [INFO] [stdout] | [INFO] [stdout] 106 | fn remove(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 106 - fn remove(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] 106 + fn remove(&mut self, record: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/song_history_interface.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | gtk_list_store: gtk_list_store, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gtk_list_store` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:132:13 [INFO] [stdout] | [INFO] [stdout] 132 | fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 132 - fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 132 + fn load(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:147:22 [INFO] [stdout] | [INFO] [stdout] 147 | fn wipe_and_save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 147 - fn wipe_and_save(self: &mut Self) { [INFO] [stdout] 147 + fn wipe_and_save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:155:25 [INFO] [stdout] | [INFO] [stdout] 155 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 155 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] 155 + fn add_row_and_save(&mut self, record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | fn save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 161 - fn save(self: &mut Self) { [INFO] [stdout] 161 + fn save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:179:15 [INFO] [stdout] | [INFO] [stdout] 179 | fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 179 - fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] 179 + fn remove(&mut self, song_record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/song_history_interface.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | gtk_list_store: gtk_list_store, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gtk_list_store` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 207 - fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 207 + fn load(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:224:22 [INFO] [stdout] | [INFO] [stdout] 224 | fn wipe_and_save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 224 - fn wipe_and_save(self: &mut Self) { [INFO] [stdout] 224 + fn wipe_and_save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:232:25 [INFO] [stdout] | [INFO] [stdout] 232 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 232 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] 232 + fn add_row_and_save(&mut self, record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | fn save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 238 - fn save(self: &mut Self) { [INFO] [stdout] 238 + fn save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:256:15 [INFO] [stdout] | [INFO] [stdout] 256 | fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 256 - fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] 256 + fn remove(&mut self, song_record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/preferences.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | preferences: preferences [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `preferences` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/preferences.rs:74:19 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn update(self: &mut Self, update_preferences: Preferences) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 74 - pub fn update(self: &mut Self, update_preferences: Preferences) { [INFO] [stdout] 74 + pub fn update(&mut self, update_preferences: Preferences) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/preferences.rs:89:14 [INFO] [stdout] | [INFO] [stdout] 89 | fn write(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 89 - fn write(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 89 + fn write(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils/ffmpeg_wrapper.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | / /// (for example with .WMA, .M4A, etc.). [INFO] [stdout] 12 | | [INFO] [stdout] | |_^ [INFO] [stdout] 13 | pub fn decode_with_ffmpeg(file_path: &str) -> Option>> { [INFO] [stdout] | ------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/gui/song_history_interface.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | / /// GTK-rs GUI of SongRec and the filesystem while using the GUI. [INFO] [stdout] 9 | | [INFO] [stdout] | |_^ [INFO] [stdout] 10 | trait SongHistoryRecordListStore { [INFO] [stdout] | -------------------------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:11:35 [INFO] [stdout] | [INFO] [stdout] 11 | fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 11 - fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord); [INFO] [stdout] 11 + fn remove_song_history_record(&mut self, to_remove: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:12:20 [INFO] [stdout] | [INFO] [stdout] 12 | fn remove_song(self: &mut Self, to_remove: Song); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 12 - fn remove_song(self: &mut Self, to_remove: Song); [INFO] [stdout] 12 + fn remove_song(&mut self, to_remove: Song); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:13:32 [INFO] [stdout] | [INFO] [stdout] 13 | fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 13 - fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord); [INFO] [stdout] 13 + fn add_song_history_record(&mut self, to_add: &SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:14:32 [INFO] [stdout] | [INFO] [stdout] 14 | fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 14 - fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option; [INFO] [stdout] 14 + fn get_song_history_record(&mut self, iter: >k::TreeIter) -> Option; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:18:32 [INFO] [stdout] | [INFO] [stdout] 18 | fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 18 - fn get_song_history_record(self: &mut Self, iter: >k::TreeIter) -> Option { [INFO] [stdout] 18 + fn get_song_history_record(&mut self, iter: >k::TreeIter) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:36:20 [INFO] [stdout] | [INFO] [stdout] 36 | fn remove_song(self: &mut Self, to_remove: Song) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 36 - fn remove_song(self: &mut Self, to_remove: Song) { [INFO] [stdout] 36 + fn remove_song(&mut self, to_remove: Song) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:51:35 [INFO] [stdout] | [INFO] [stdout] 51 | fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 51 - fn remove_song_history_record(self: &mut Self, to_remove: SongHistoryRecord) { [INFO] [stdout] 51 + fn remove_song_history_record(&mut self, to_remove: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:67:32 [INFO] [stdout] | [INFO] [stdout] 67 | fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 67 - fn add_song_history_record(self: &mut Self, to_add: &SongHistoryRecord) { [INFO] [stdout] 67 + fn add_song_history_record(&mut self, to_add: &SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:102:13 [INFO] [stdout] | [INFO] [stdout] 102 | fn load(self: &mut Self) -> Result<(), Box>; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 102 - fn load(self: &mut Self) -> Result<(), Box>; [INFO] [stdout] 102 + fn load(&mut self) -> Result<(), Box>; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:103:22 [INFO] [stdout] | [INFO] [stdout] 103 | fn wipe_and_save(self: &mut Self); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 103 - fn wipe_and_save(self: &mut Self); [INFO] [stdout] 103 + fn wipe_and_save(&mut self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 104 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] 104 + fn add_row_and_save(&mut self, record: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | fn save(self: &mut Self); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 105 - fn save(self: &mut Self); [INFO] [stdout] 105 + fn save(&mut self); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:106:15 [INFO] [stdout] | [INFO] [stdout] 106 | fn remove(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 106 - fn remove(self: &mut Self, record: SongHistoryRecord); [INFO] [stdout] 106 + fn remove(&mut self, record: SongHistoryRecord); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/song_history_interface.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | gtk_list_store: gtk_list_store, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gtk_list_store` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:132:13 [INFO] [stdout] | [INFO] [stdout] 132 | fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 132 - fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 132 + fn load(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:147:22 [INFO] [stdout] | [INFO] [stdout] 147 | fn wipe_and_save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 147 - fn wipe_and_save(self: &mut Self) { [INFO] [stdout] 147 + fn wipe_and_save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:155:25 [INFO] [stdout] | [INFO] [stdout] 155 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 155 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] 155 + fn add_row_and_save(&mut self, record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | fn save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 161 - fn save(self: &mut Self) { [INFO] [stdout] 161 + fn save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:179:15 [INFO] [stdout] | [INFO] [stdout] 179 | fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 179 - fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] 179 + fn remove(&mut self, song_record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/song_history_interface.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | gtk_list_store: gtk_list_store, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gtk_list_store` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:207:13 [INFO] [stdout] | [INFO] [stdout] 207 | fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 207 - fn load(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 207 + fn load(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:224:22 [INFO] [stdout] | [INFO] [stdout] 224 | fn wipe_and_save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 224 - fn wipe_and_save(self: &mut Self) { [INFO] [stdout] 224 + fn wipe_and_save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:232:25 [INFO] [stdout] | [INFO] [stdout] 232 | fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 232 - fn add_row_and_save(self: &mut Self, record: SongHistoryRecord) { [INFO] [stdout] 232 + fn add_row_and_save(&mut self, record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | fn save(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 238 - fn save(self: &mut Self) { [INFO] [stdout] 238 + fn save(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/song_history_interface.rs:256:15 [INFO] [stdout] | [INFO] [stdout] 256 | fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 256 - fn remove(self: &mut Self, song_record: SongHistoryRecord) { [INFO] [stdout] 256 + fn remove(&mut self, song_record: SongHistoryRecord) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/gui/preferences.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | preferences: preferences [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `preferences` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/preferences.rs:74:19 [INFO] [stdout] | [INFO] [stdout] 74 | pub fn update(self: &mut Self, update_preferences: Preferences) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 74 - pub fn update(self: &mut Self, update_preferences: Preferences) { [INFO] [stdout] 74 + pub fn update(&mut self, update_preferences: Preferences) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/gui/preferences.rs:89:14 [INFO] [stdout] | [INFO] [stdout] 89 | fn write(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 89 - fn write(self: &mut Self) -> Result<(), Box> { [INFO] [stdout] 89 + fn write(&mut self) -> Result<(), Box> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/utils/ffmpeg_wrapper.rs:11:1 [INFO] [stdout] | [INFO] [stdout] 11 | / /// (for example with .WMA, .M4A, etc.). [INFO] [stdout] 12 | | [INFO] [stdout] | |_^ [INFO] [stdout] 13 | pub fn decode_with_ffmpeg(file_path: &str) -> Option>> { [INFO] [stdout] | ------------------------- the comment documents this function [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/cli_main.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | if !(string == gettext("No match for this song") && !input_file_name.is_some()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `string != gettext("No match for this song") || input_file_name.is_some()` [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 boolean expression can be simplified [INFO] [stdout] --> src/cli_main.rs:147:69 [INFO] [stdout] | [INFO] [stdout] 147 | if !(string == gettext("No match for this song") && !input_file_name.is_some()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `input_file_name.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cli_main.rs:156:17 [INFO] [stdout] | [INFO] [stdout] 156 | / if !do_recognize_once { [INFO] [stdout] 157 | | eprintln!("{}", gettext("Recording started!")); [INFO] [stdout] 158 | | } [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] 155 ~ GUIMessage::MicrophoneRecording [INFO] [stdout] 156 ~ if !do_recognize_once => { [INFO] [stdout] 157 | eprintln!("{}", gettext("Recording started!")); [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/cli_main.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | / mpris_obj [INFO] [stdout] 132 | | .as_ref() [INFO] [stdout] 133 | | .map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 131 ~ if let Some(p) = mpris_obj [INFO] [stdout] 132 + .as_ref() { p.set_playback_status(mpris_status) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/cli_main.rs:167:21 [INFO] [stdout] | [INFO] [stdout] 167 | mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 167 - mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] 167 + if let Some(p) = mpris_obj.as_ref() { update_song(p, &message) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/cli_main.rs:147:20 [INFO] [stdout] | [INFO] [stdout] 147 | if !(string == gettext("No match for this song") && !input_file_name.is_some()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `string != gettext("No match for this song") || input_file_name.is_some()` [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 boolean expression can be simplified [INFO] [stdout] --> src/cli_main.rs:147:69 [INFO] [stdout] | [INFO] [stdout] 147 | if !(string == gettext("No match for this song") && !input_file_name.is_some()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `input_file_name.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/cli_main.rs:156:17 [INFO] [stdout] | [INFO] [stdout] 156 | / if !do_recognize_once { [INFO] [stdout] 157 | | eprintln!("{}", gettext("Recording started!")); [INFO] [stdout] 158 | | } [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] 155 ~ GUIMessage::MicrophoneRecording [INFO] [stdout] 156 ~ if !do_recognize_once => { [INFO] [stdout] 157 | eprintln!("{}", gettext("Recording started!")); [INFO] [stdout] 158 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/cli_main.rs:131:21 [INFO] [stdout] | [INFO] [stdout] 131 | / mpris_obj [INFO] [stdout] 132 | | .as_ref() [INFO] [stdout] 133 | | .map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] | |_____________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] = note: `#[warn(clippy::option_map_unit_fn)]` on by default [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 131 ~ if let Some(p) = mpris_obj [INFO] [stdout] 132 + .as_ref() { p.set_playback_status(mpris_status) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/cli_main.rs:167:21 [INFO] [stdout] | [INFO] [stdout] 167 | mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 167 - mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] 167 + if let Some(p) = mpris_obj.as_ref() { update_song(p, &message) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/fingerprinting/signature_format.rs:31:1 [INFO] [stdout] | [INFO] [stdout] 31 | / impl PartialOrd for FrequencyBand { [INFO] [stdout] 32 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 33 | | Some((*self as i32).cmp(&(*other as i32))) [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#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 33 - Some((*self as i32).cmp(&(*other as i32))) [INFO] [stdout] 34 - } [INFO] [stdout] 32 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/fingerprinting/signature_format.rs:142:25 [INFO] [stdout] | [INFO] [stdout] 142 | / if !frequency_band_to_sound_peaks.contains_key(&frequency_band) { [INFO] [stdout] 143 | | frequency_band_to_sound_peaks.insert(frequency_band, vec![]); [INFO] [stdout] 144 | | } [INFO] [stdout] | |_________________________^ help: try: `frequency_band_to_sound_peaks.entry(frequency_band).or_insert_with(|| vec![]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/fingerprinting/signature_format.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | Ok(DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 176 - Ok(DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?)?) [INFO] [stdout] 176 + DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: non-canonical implementation of `partial_cmp` on an `Ord` type [INFO] [stdout] --> src/fingerprinting/signature_format.rs:31:1 [INFO] [stdout] | [INFO] [stdout] 31 | / impl PartialOrd for FrequencyBand { [INFO] [stdout] 32 | | fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 33 | | Some((*self as i32).cmp(&(*other as i32))) [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#non_canonical_partial_ord_impl [INFO] [stdout] = note: `#[warn(clippy::non_canonical_partial_ord_impl)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 32 - fn partial_cmp(&self, other: &Self) -> Option { [INFO] [stdout] 33 - Some((*self as i32).cmp(&(*other as i32))) [INFO] [stdout] 34 - } [INFO] [stdout] 32 + fn partial_cmp(&self, other: &Self) -> Option { Some(self.cmp(other)) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stdout] --> src/fingerprinting/signature_format.rs:142:25 [INFO] [stdout] | [INFO] [stdout] 142 | / if !frequency_band_to_sound_peaks.contains_key(&frequency_band) { [INFO] [stdout] 143 | | frequency_band_to_sound_peaks.insert(frequency_band, vec![]); [INFO] [stdout] 144 | | } [INFO] [stdout] | |_________________________^ help: try: `frequency_band_to_sound_peaks.entry(frequency_band).or_insert_with(|| vec![]);` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stdout] = note: `#[warn(clippy::map_entry)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/fingerprinting/signature_format.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | Ok(DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?)?) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 176 - Ok(DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?)?) [INFO] [stdout] 176 + DecodedSignature::decode_from_binary(&base64::decode(&uri[DATA_URI_PREFIX.len()..])?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/core/microphone_thread.rs:56:60 [INFO] [stdout] | [INFO] [stdout] 56 | let config = device.default_input_config().expect(&gettext("Failed to get default input config")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", gettext("Failed to get default input config")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type parameter `U` goes unused in function definition [INFO] [stdout] --> src/core/microphone_thread.rs:104:18 [INFO] [stdout] | [INFO] [stdout] 104 | fn write_data(input_samples: &[T], processing_tx: &mpsc::Sender, gui_tx: glib::Sender, channel... [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing the parameter [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_type_parameters [INFO] [stdout] = note: `#[warn(clippy::extra_unused_type_parameters)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/core/microphone_thread.rs:104:1 [INFO] [stdout] | [INFO] [stdout] 104 | / fn write_data(input_samples: &[T], processing_tx: &mpsc::Sender, gui_tx: glib::Sender, chann... [INFO] [stdout] 105 | | where [INFO] [stdout] 106 | | T: cpal::Sample + rodio::Sample, [INFO] [stdout] 107 | | U: cpal::Sample, i16: FromSample [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/core/microphone_thread.rs:133:52 [INFO] [stdout] | [INFO] [stdout] 133 | if *number_unprocessed_samples >= 16000 * 4 && *processing_already_ongoing_borrow == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!*processing_already_ongoing_borrow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `index` is only used to index `twelve_seconds_buffer` [INFO] [stdout] --> src/core/microphone_thread.rs:150:22 [INFO] [stdout] | [INFO] [stdout] 150 | for index in 16000 * 12 - 16000 / 100 * 2 .. 16000 * 12 { [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 [INFO] [stdout] | [INFO] [stdout] 150 - for index in 16000 * 12 - 16000 / 100 * 2 .. 16000 * 12 { [INFO] [stdout] 150 + for in twelve_seconds_buffer.iter().take(16000 * 12).skip(16000 * 12 - 16000 / 100 * 2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:49:40 [INFO] [stdout] | [INFO] [stdout] 49 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 49 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 49 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:54:40 [INFO] [stdout] | [INFO] [stdout] 54 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 54 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 54 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:62:40 [INFO] [stdout] | [INFO] [stdout] 62 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 62 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 62 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `into_owned` [INFO] [stdout] --> src/core/http_thread.rs:71:64 [INFO] [stdout] | [INFO] [stdout] 71 | to_string_pretty(&json_object).unwrap(), "$1 ").into_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/core/thread_messages.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn spawn_big_thread(argument: F) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/core/thread_messages.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | DevicesList(Box>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/core/microphone_thread.rs:56:60 [INFO] [stdout] | [INFO] [stdout] 56 | let config = device.default_input_config().expect(&gettext("Failed to get default input config")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", gettext("Failed to get default input config")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/core/thread_messages.rs:71:25 [INFO] [stdout] | [INFO] [stdout] 71 | ProcessAudioSamples(Box>), // Prefer to use heap across threads to avoid stack overflow [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/audio_controllers/audio_backend.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | return Box::new(backend); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 15 - return Box::new(backend); [INFO] [stdout] 15 + Box::new(backend) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/audio_controllers/audio_backend.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | return Box::new(CpalBackend { }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 18 - return Box::new(CpalBackend { }); [INFO] [stdout] 18 + Box::new(CpalBackend { }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type parameter `U` goes unused in function definition [INFO] [stdout] --> src/core/microphone_thread.rs:104:18 [INFO] [stdout] | [INFO] [stdout] 104 | fn write_data(input_samples: &[T], processing_tx: &mpsc::Sender, gui_tx: glib::Sender, channel... [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing the parameter [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_type_parameters [INFO] [stdout] = note: `#[warn(clippy::extra_unused_type_parameters)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/core/microphone_thread.rs:104:1 [INFO] [stdout] | [INFO] [stdout] 104 | / fn write_data(input_samples: &[T], processing_tx: &mpsc::Sender, gui_tx: glib::Sender, chann... [INFO] [stdout] 105 | | where [INFO] [stdout] 106 | | T: cpal::Sample + rodio::Sample, [INFO] [stdout] 107 | | U: cpal::Sample, i16: FromSample [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/core/microphone_thread.rs:133:52 [INFO] [stdout] | [INFO] [stdout] 133 | if *number_unprocessed_samples >= 16000 * 4 && *processing_already_ongoing_borrow == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!*processing_already_ongoing_borrow` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `index` is only used to index `twelve_seconds_buffer` [INFO] [stdout] --> src/core/microphone_thread.rs:150:22 [INFO] [stdout] | [INFO] [stdout] 150 | for index in 16000 * 12 - 16000 / 100 * 2 .. 16000 * 12 { [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 [INFO] [stdout] | [INFO] [stdout] 150 - for index in 16000 * 12 - 16000 / 100 * 2 .. 16000 * 12 { [INFO] [stdout] 150 + for in twelve_seconds_buffer.iter().take(16000 * 12).skip(16000 * 12 - 16000 / 100 * 2) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/audio_controllers/pulseaudio.rs:70:41 [INFO] [stdout] | [INFO] [stdout] 70 | ... is_monitor: dev.monitor != None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `dev.monitor.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/audio_controllers/pulseaudio.rs:73:29 [INFO] [stdout] | [INFO] [stdout] 73 | else if dev.monitor != None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `dev.monitor.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/gui/main_window.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 42 | .expect(&gettext("Application::new failed")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", gettext("Application::new failed")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:49:40 [INFO] [stdout] | [INFO] [stdout] 49 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] = note: `#[warn(clippy::io_other_error)]` on by default [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 49 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 49 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:54:40 [INFO] [stdout] | [INFO] [stdout] 54 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 54 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 54 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this can be `std::io::Error::other(_)` [INFO] [stdout] --> src/core/http_thread.rs:62:40 [INFO] [stdout] | [INFO] [stdout] 62 | _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#io_other_error [INFO] [stdout] help: use `std::io::Error::other` [INFO] [stdout] | [INFO] [stdout] 62 - _ => { return Err(Box::new(std::io::Error::new(std::io::ErrorKind::Other, gettext("No match for this song").as_str()))) } [INFO] [stdout] 62 + _ => { return Err(Box::new(std::io::Error::other(gettext("No match for this song").as_str()))) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `into_owned` [INFO] [stdout] --> src/core/http_thread.rs:71:64 [INFO] [stdout] | [INFO] [stdout] 71 | to_string_pretty(&json_object).unwrap(), "$1 ").into_owned(), [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/core/thread_messages.rs:11:43 [INFO] [stdout] | [INFO] [stdout] 11 | pub fn spawn_big_thread(argument: F) -> () [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/core/thread_messages.rs:46:17 [INFO] [stdout] | [INFO] [stdout] 46 | DevicesList(Box>), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `Vec<..>` [INFO] [stdout] --> src/core/thread_messages.rs:71:25 [INFO] [stdout] | [INFO] [stdout] 71 | ProcessAudioSamples(Box>), // Prefer to use heap across threads to avoid stack overflow [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `Vec<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/audio_controllers/audio_backend.rs:15:9 [INFO] [stdout] | [INFO] [stdout] 15 | return Box::new(backend); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 15 - return Box::new(backend); [INFO] [stdout] 15 + Box::new(backend) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/gui/main_window.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | if files.len() >= 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!files.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/audio_controllers/audio_backend.rs:18:9 [INFO] [stdout] | [INFO] [stdout] 18 | return Box::new(CpalBackend { }); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 18 - return Box::new(CpalBackend { }); [INFO] [stdout] 18 + Box::new(CpalBackend { }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/audio_controllers/pulseaudio.rs:70:41 [INFO] [stdout] | [INFO] [stdout] 70 | ... is_monitor: dev.monitor != None [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `dev.monitor.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/audio_controllers/pulseaudio.rs:73:29 [INFO] [stdout] | [INFO] [stdout] 73 | else if dev.monitor != None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use `Option::is_some()` instead: `dev.monitor.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/gui/main_window.rs:42:10 [INFO] [stdout] | [INFO] [stdout] 42 | .expect(&gettext("Application::new failed")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("{}", gettext("Application::new failed")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/gui/main_window.rs:132:16 [INFO] [stdout] | [INFO] [stdout] 132 | if files.len() >= 1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!files.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/gui/main_window.rs:156:35 [INFO] [stdout] | [INFO] [stdout] 156 | ...interface = Arc::new(RwLock::new(FavoritesInterface::new(favorites_list_store, obtain_favorites_csv_path).unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `RwLock` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/main_window.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 184 - return None; [INFO] [stdout] 184 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/gui/main_window.rs:187:100 [INFO] [stdout] | [INFO] [stdout] 187 | fn connect_activate_menu_item(&self, name: &str, f: F) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/gui/main_window.rs:229:57 [INFO] [stdout] | [INFO] [stdout] 229 | song_name: tree_model.get_value(&tree_iter, 0).get().unwrap().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:230:53 [INFO] [stdout] | [INFO] [stdout] 230 | album: tree_model.get_value(&tree_iter, 1).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:231:57 [INFO] [stdout] | [INFO] [stdout] 231 | track_key: tree_model.get_value(&tree_iter, 3).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:232:60 [INFO] [stdout] | [INFO] [stdout] 232 | release_year: tree_model.get_value(&tree_iter, 4).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:233:53 [INFO] [stdout] | [INFO] [stdout] 233 | genre: tree_model.get_value(&tree_iter, 5).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:234:64 [INFO] [stdout] | [INFO] [stdout] 234 | recognition_date: tree_model.get_value(&tree_iter, 2).get().unwrap().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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: usage of an `Arc` that is not `Send` and `Sync` [INFO] [stdout] --> src/gui/main_window.rs:156:35 [INFO] [stdout] | [INFO] [stdout] 156 | ...interface = Arc::new(RwLock::new(FavoritesInterface::new(favorites_list_store, obtain_favorites_csv_path).unwrap())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `Arc>` is not `Send` and `Sync` as `RwLock` is neither `Send` nor `Sync` [INFO] [stdout] = help: if the `Arc` will not be used across threads replace it with an `Rc` [INFO] [stdout] = help: otherwise make `RwLock` `Send` and `Sync` or consider a wrapper type such as `Mutex` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#arc_with_non_send_sync [INFO] [stdout] = note: `#[warn(clippy::arc_with_non_send_sync)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/main_window.rs:184:17 [INFO] [stdout] | [INFO] [stdout] 184 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 184 - return None; [INFO] [stdout] 184 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/main_window.rs:441:21 [INFO] [stdout] | [INFO] [stdout] 441 | return glib::Continue(false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 441 - return glib::Continue(false); [INFO] [stdout] 441 + glib::Continue(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/gui/main_window.rs:187:100 [INFO] [stdout] | [INFO] [stdout] 187 | fn connect_activate_menu_item(&self, name: &str, f: F) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/gui/main_window.rs:229:57 [INFO] [stdout] | [INFO] [stdout] 229 | song_name: tree_model.get_value(&tree_iter, 0).get().unwrap().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:230:53 [INFO] [stdout] | [INFO] [stdout] 230 | album: tree_model.get_value(&tree_iter, 1).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:231:57 [INFO] [stdout] | [INFO] [stdout] 231 | track_key: tree_model.get_value(&tree_iter, 3).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:232:60 [INFO] [stdout] | [INFO] [stdout] 232 | release_year: tree_model.get_value(&tree_iter, 4).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:233:53 [INFO] [stdout] | [INFO] [stdout] 233 | genre: tree_model.get_value(&tree_iter, 5).get().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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/gui/main_window.rs:234:64 [INFO] [stdout] | [INFO] [stdout] 234 | recognition_date: tree_model.get_value(&tree_iter, 2).get().unwrap().unwrap(), [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `tree_iter` [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: function call inside of `expect` [INFO] [stdout] --> src/gui/main_window.rs:562:67 [INFO] [stdout] | [INFO] [stdout] 562 | let input_file_path = file_chooser.get_filename().expect(&gettext("Couldn't get filename")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{}", gettext("Couldn't get filename")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/main_window.rs:441:21 [INFO] [stdout] | [INFO] [stdout] 441 | return glib::Continue(false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 441 - return glib::Continue(false); [INFO] [stdout] 441 + glib::Continue(false) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/gui/main_window.rs:562:67 [INFO] [stdout] | [INFO] [stdout] 562 | let input_file_path = file_chooser.get_filename().expect(&gettext("Couldn't get filename")); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|| panic!("{}", gettext("Couldn't get filename")))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/gui/main_window.rs:767:25 [INFO] [stdout] | [INFO] [stdout] 767 | mpris_obj.as_ref().map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 767 - mpris_obj.as_ref().map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] 767 + if let Some(p) = mpris_obj.as_ref() { p.set_playback_status(mpris_status) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `current_index` is used as a loop counter [INFO] [stdout] --> src/gui/main_window.rs:781:21 [INFO] [stdout] | [INFO] [stdout] 781 | for device in devices.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (current_index, device) in (0_u32..).zip(devices.iter())` [INFO] [stdout] | [INFO] [stdout] = note: `current_index` is of type `u32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/gui/main_window.rs:850:25 [INFO] [stdout] | [INFO] [stdout] 850 | mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 850 - mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] 850 + if let Some(p) = mpris_obj.as_ref() { update_song(p, &message) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/gui/main_window.rs:767:25 [INFO] [stdout] | [INFO] [stdout] 767 | mpris_obj.as_ref().map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 767 - mpris_obj.as_ref().map(|p| p.set_playback_status(mpris_status)); [INFO] [stdout] 767 + if let Some(p) = mpris_obj.as_ref() { p.set_playback_status(mpris_status) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/gui/song_history_interface.rs:19:40 [INFO] [stdout] | [INFO] [stdout] 19 | let song_name = self.get_value(&iter, 0).get::().ok()??; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:20:36 [INFO] [stdout] | [INFO] [stdout] 20 | let album = self.get_value(&iter, 1).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:21:47 [INFO] [stdout] | [INFO] [stdout] 21 | let recognition_date = self.get_value(&iter, 2).get::().ok()??; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:22:40 [INFO] [stdout] | [INFO] [stdout] 22 | let track_key = self.get_value(&iter, 3).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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: the variable `current_index` is used as a loop counter [INFO] [stdout] --> src/gui/main_window.rs:781:21 [INFO] [stdout] | [INFO] [stdout] 781 | for device in devices.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (current_index, device) in (0_u32..).zip(devices.iter())` [INFO] [stdout] | [INFO] [stdout] = note: `current_index` is of type `u32`, making it ineligible for `Iterator::enumerate` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` 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/gui/song_history_interface.rs:23:43 [INFO] [stdout] | [INFO] [stdout] 23 | let release_year = self.get_value(&iter, 4).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:24:36 [INFO] [stdout] | [INFO] [stdout] 24 | let genre = self.get_value(&iter, 5).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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: called `map(f)` on an `Option` value where `f` is a closure that returns the unit type `()` [INFO] [stdout] --> src/gui/main_window.rs:850:25 [INFO] [stdout] | [INFO] [stdout] 850 | mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stdout] help: use `if let` instead [INFO] [stdout] | [INFO] [stdout] 850 - mpris_obj.as_ref().map(|p| update_song(p, &message)); [INFO] [stdout] 850 + if let Some(p) = mpris_obj.as_ref() { update_song(p, &message) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/gui/song_history_interface.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | / match csv::ReaderBuilder::new() [INFO] [stdout] 134 | | .flexible(true) [INFO] [stdout] 135 | | .from_path(&self.csv_path) [INFO] [stdout] ... | [INFO] [stdout] 142 | | _ => {} // File does not exists, ignore [INFO] [stdout] 143 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 133 ~ if let Ok(mut reader) = csv::ReaderBuilder::new() [INFO] [stdout] 134 + .flexible(true) [INFO] [stdout] 135 + .from_path(&self.csv_path) { [INFO] [stdout] 136 + for result in reader.deserialize() { [INFO] [stdout] 137 + self.gtk_list_store.add_song_history_record(&result?) [INFO] [stdout] 138 + } [INFO] [stdout] 139 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/gui/song_history_interface.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / match csv::ReaderBuilder::new() [INFO] [stdout] 209 | | .flexible(true) [INFO] [stdout] 210 | | .from_path(&self.csv_path) [INFO] [stdout] ... | [INFO] [stdout] 219 | | _ => {} // File does not exists, ignore [INFO] [stdout] 220 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 208 ~ if let Ok(mut reader) = csv::ReaderBuilder::new() [INFO] [stdout] 209 + .flexible(true) [INFO] [stdout] 210 + .from_path(&self.csv_path) { [INFO] [stdout] 211 + for result in reader.deserialize() { [INFO] [stdout] 212 + let record = result?; [INFO] [stdout] 213 + self.gtk_list_store.add_song_history_record(&record); [INFO] [stdout] 214 + self.is_favorite.insert(record.get_song()); [INFO] [stdout] 215 + } [INFO] [stdout] 216 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/gui/song_history_interface.rs:19:40 [INFO] [stdout] | [INFO] [stdout] 19 | let song_name = self.get_value(&iter, 0).get::().ok()??; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:20:36 [INFO] [stdout] | [INFO] [stdout] 20 | let album = self.get_value(&iter, 1).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:21:47 [INFO] [stdout] | [INFO] [stdout] 21 | let recognition_date = self.get_value(&iter, 2).get::().ok()??; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:22:40 [INFO] [stdout] | [INFO] [stdout] 22 | let track_key = self.get_value(&iter, 3).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:23:43 [INFO] [stdout] | [INFO] [stdout] 23 | let release_year = self.get_value(&iter, 4).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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/gui/song_history_interface.rs:24:36 [INFO] [stdout] | [INFO] [stdout] 24 | let genre = self.get_value(&iter, 5).get::().ok()?; [INFO] [stdout] | ^^^^^ help: change this to: `iter` [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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/gui/song_history_interface.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | / match csv::ReaderBuilder::new() [INFO] [stdout] 134 | | .flexible(true) [INFO] [stdout] 135 | | .from_path(&self.csv_path) [INFO] [stdout] ... | [INFO] [stdout] 142 | | _ => {} // File does not exists, ignore [INFO] [stdout] 143 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 133 ~ if let Ok(mut reader) = csv::ReaderBuilder::new() [INFO] [stdout] 134 + .flexible(true) [INFO] [stdout] 135 + .from_path(&self.csv_path) { [INFO] [stdout] 136 + for result in reader.deserialize() { [INFO] [stdout] 137 + self.gtk_list_store.add_song_history_record(&result?) [INFO] [stdout] 138 + } [INFO] [stdout] 139 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/preferences.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | return preferences_interface [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 49 - return preferences_interface [INFO] [stdout] 49 + preferences_interface [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/preferences.rs:53:17 [INFO] [stdout] | [INFO] [stdout] 53 | / return PreferencesInterface { [INFO] [stdout] 54 | | preferences_file_path: obtain_preferences_file_path().ok(), [INFO] [stdout] 55 | | preferences: Preferences::default() [INFO] [stdout] 56 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 ~ PreferencesInterface { [INFO] [stdout] 54 + preferences_file_path: obtain_preferences_file_path().ok(), [INFO] [stdout] 55 + preferences: Preferences::default() [INFO] [stdout] 56 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/gui/song_history_interface.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / match csv::ReaderBuilder::new() [INFO] [stdout] 209 | | .flexible(true) [INFO] [stdout] 210 | | .from_path(&self.csv_path) [INFO] [stdout] ... | [INFO] [stdout] 219 | | _ => {} // File does not exists, ignore [INFO] [stdout] 220 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 208 ~ if let Ok(mut reader) = csv::ReaderBuilder::new() [INFO] [stdout] 209 + .flexible(true) [INFO] [stdout] 210 + .from_path(&self.csv_path) { [INFO] [stdout] 211 + for result in reader.deserialize() { [INFO] [stdout] 212 + let record = result?; [INFO] [stdout] 213 + self.gtk_list_store.add_song_history_record(&record); [INFO] [stdout] 214 + self.is_favorite.insert(record.get_song()); [INFO] [stdout] 215 + } [INFO] [stdout] 216 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/gui/preferences.rs:64:66 [INFO] [stdout] | [INFO] [stdout] 64 | let mut file = OpenOptions::new().write(true).read(true).create(true).open(&preferences_file_path)?; [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/preferences.rs:49:17 [INFO] [stdout] | [INFO] [stdout] 49 | return preferences_interface [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 49 - return preferences_interface [INFO] [stdout] 49 + preferences_interface [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/gui/preferences.rs:53:17 [INFO] [stdout] | [INFO] [stdout] 53 | / return PreferencesInterface { [INFO] [stdout] 54 | | preferences_file_path: obtain_preferences_file_path().ok(), [INFO] [stdout] 55 | | preferences: Preferences::default() [INFO] [stdout] 56 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 ~ PreferencesInterface { [INFO] [stdout] 54 + preferences_file_path: obtain_preferences_file_path().ok(), [INFO] [stdout] 55 + preferences: Preferences::default() [INFO] [stdout] 56 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: file opened with `create`, but `truncate` behavior not defined [INFO] [stdout] --> src/gui/preferences.rs:64:66 [INFO] [stdout] | [INFO] [stdout] 64 | let mut file = OpenOptions::new().write(true).read(true).create(true).open(&preferences_file_path)?; [INFO] [stdout] | ^^^^^^^^^^^^- help: add: `.truncate(true)` [INFO] [stdout] | [INFO] [stdout] = help: if you intend to overwrite an existing file entirely, call `.truncate(true)` [INFO] [stdout] = help: if you instead know that you may want to keep some parts of the old file, call `.truncate(false)` [INFO] [stdout] = help: alternatively, use `.append(true)` to append to the file instead of overwriting it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_open_options [INFO] [stdout] = note: `#[warn(clippy::suspicious_open_options)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/csv_song_history.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | return self; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 43 - return self; [INFO] [stdout] 43 + self [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/csv_song_history.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / return Song { [INFO] [stdout] 50 | | song_name: self.song_name, [INFO] [stdout] 51 | | album: self.album, [INFO] [stdout] 52 | | track_key: self.track_key, [INFO] [stdout] 53 | | release_year: self.release_year, [INFO] [stdout] 54 | | genre: self.genre, [INFO] [stdout] 55 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 49 ~ Song { [INFO] [stdout] 50 + song_name: self.song_name, [INFO] [stdout] 51 + album: self.album, [INFO] [stdout] 52 + track_key: self.track_key, [INFO] [stdout] 53 + release_year: self.release_year, [INFO] [stdout] 54 + genre: self.genre, [INFO] [stdout] 55 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg_wrapper.rs:68:36 [INFO] [stdout] | [INFO] [stdout] 68 | let command = command.args(&["-y", "-i", file_path, [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 69 | | sink_file_path.to_str().unwrap()]); [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 68 ~ let command = command.args(["-y", "-i", file_path, [INFO] [stdout] 69 ~ sink_file_path.to_str().unwrap()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/csv_song_history.rs:43:9 [INFO] [stdout] | [INFO] [stdout] 43 | return self; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 43 - return self; [INFO] [stdout] 43 + self [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/utils/csv_song_history.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / return Song { [INFO] [stdout] 50 | | song_name: self.song_name, [INFO] [stdout] 51 | | album: self.album, [INFO] [stdout] 52 | | track_key: self.track_key, [INFO] [stdout] 53 | | release_year: self.release_year, [INFO] [stdout] 54 | | genre: self.genre, [INFO] [stdout] 55 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 49 ~ Song { [INFO] [stdout] 50 + song_name: self.song_name, [INFO] [stdout] 51 + album: self.album, [INFO] [stdout] 52 + track_key: self.track_key, [INFO] [stdout] 53 + release_year: self.release_year, [INFO] [stdout] 54 + genre: self.genre, [INFO] [stdout] 55 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/utils/ffmpeg_wrapper.rs:68:36 [INFO] [stdout] | [INFO] [stdout] 68 | let command = command.args(&["-y", "-i", file_path, [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 69 | | sink_file_path.to_str().unwrap()]); [INFO] [stdout] | |_____________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 68 ~ let command = command.args(["-y", "-i", file_path, [INFO] [stdout] 69 ~ sink_file_path.to_str().unwrap()]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 11s [INFO] running `Command { std: "docker" "inspect" "a419564ac99592c4cd9b4249ee0347b47cb19b1ffb598c402955b18ccce014c4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a419564ac99592c4cd9b4249ee0347b47cb19b1ffb598c402955b18ccce014c4", kill_on_drop: false }` [INFO] [stdout] a419564ac99592c4cd9b4249ee0347b47cb19b1ffb598c402955b18ccce014c4