[INFO] cloning repository https://github.com/tryashtar/nmu-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tryashtar/nmu-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftryashtar%2Fnmu-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftryashtar%2Fnmu-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] bb1a676006e2157ee3b0671f47b31cfd8f80ca75 [INFO] linting tryashtar/nmu-rs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftryashtar%2Fnmu-rs" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/tryashtar/nmu-rs [INFO] finished tweaking git repo https://github.com/tryashtar/nmu-rs [INFO] tweaked toml for git repo https://github.com/tryashtar/nmu-rs written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/tryashtar/nmu-rs 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/tryashtar/nmu-rs 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 metaflac v0.2.7 [INFO] [stderr] Downloaded profiling-procmacros v1.0.16 [INFO] [stderr] Downloaded ape v0.5.0 [INFO] [stderr] Downloaded id3 v1.16.0 [INFO] [stderr] Downloaded image-webp v0.2.0 [INFO] [stderr] Downloaded avif-serialize v0.8.2 [INFO] [stderr] Downloaded ravif v0.11.11 [INFO] [stderr] Downloaded built v0.7.5 [INFO] [stderr] Downloaded libfuzzer-sys v0.4.8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 4f680c1d38d3eb60180a9863abbd0546f4ee38997104982d2f2e3005b0f77ca1 [INFO] running `Command { std: "docker" "start" "-a" "4f680c1d38d3eb60180a9863abbd0546f4ee38997104982d2f2e3005b0f77ca1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4f680c1d38d3eb60180a9863abbd0546f4ee38997104982d2f2e3005b0f77ca1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4f680c1d38d3eb60180a9863abbd0546f4ee38997104982d2f2e3005b0f77ca1", kill_on_drop: false }` [INFO] [stdout] 4f680c1d38d3eb60180a9863abbd0546f4ee38997104982d2f2e3005b0f77ca1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 1a34eee27fee86e9c4a7c0f4a6bd8ff6a66d4fe124df1d290d0c192e441873df [INFO] running `Command { std: "docker" "start" "-a" "1a34eee27fee86e9c4a7c0f4a6bd8ff6a66d4fe124df1d290d0c192e441873df", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.89 [INFO] [stderr] Compiling libc v0.2.166 [INFO] [stderr] Compiling serde v1.0.215 [INFO] [stderr] Checking aligned-vec v0.5.0 [INFO] [stderr] Checking miniz_oxide v0.8.0 [INFO] [stderr] Compiling built v0.7.5 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling simd_helpers v0.1.0 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking imgref v1.11.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Checking avif-serialize v0.8.2 [INFO] [stderr] Checking fdeflate v0.3.6 [INFO] [stderr] Checking maybe-rayon v0.1.1 [INFO] [stderr] Checking bytemuck v1.20.0 [INFO] [stderr] Checking rgb v0.8.50 [INFO] [stderr] Checking jpeg-decoder v0.3.1 [INFO] [stderr] Checking loop9 v0.1.5 [INFO] [stderr] Checking v_frame v0.3.8 [INFO] [stderr] Checking indexmap v2.6.0 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Checking clap_builder v4.5.21 [INFO] [stderr] Checking image-webp v0.2.0 [INFO] [stderr] Checking zune-jpeg v0.4.13 [INFO] [stderr] Checking bitflags v2.6.0 [INFO] [stderr] Checking metaflac v0.2.7 [INFO] [stderr] Checking ape v0.5.0 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking common-path v1.0.0 [INFO] [stderr] Compiling rav1e v0.7.1 [INFO] [stderr] Checking flate2 v1.0.35 [INFO] [stderr] Checking exr v1.73.0 [INFO] [stderr] Checking rand v0.4.6 [INFO] [stderr] Checking tiff v0.9.1 [INFO] [stderr] Checking png v0.17.14 [INFO] [stderr] Checking id3 v1.16.0 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking tempdir v0.3.7 [INFO] [stderr] Checking av1-grain v0.2.3 [INFO] [stderr] Compiling serde_derive v1.0.215 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling profiling-procmacros v1.0.16 [INFO] [stderr] Compiling arg_enum_proc_macro v0.3.4 [INFO] [stderr] Compiling num-derive v0.4.2 [INFO] [stderr] Compiling color-print-proc-macro v0.3.7 [INFO] [stderr] Compiling thiserror-impl v2.0.3 [INFO] [stderr] Compiling clap_derive v4.5.18 [INFO] [stderr] Checking profiling v1.0.16 [INFO] [stderr] Checking color-print v0.3.7 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking thiserror v2.0.3 [INFO] [stderr] Checking clap v4.5.21 [INFO] [stderr] Checking ravif v0.11.11 [INFO] [stderr] Checking image v0.25.5 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking serde_json v1.0.133 [INFO] [stderr] Checking serde_regex v1.1.0 [INFO] [stderr] Checking chrono v0.4.38 [INFO] [stderr] Checking nmu v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `DateCache` and `ReverseMode` [INFO] [stdout] --> src/tests.rs:5:9 [INFO] [stdout] | [INFO] [stdout] 5 | DateCache, LibraryConfig, ScanDecision, ScanOptions, TagOptions, TagSettings, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 10 | song_config::{AllSetter, LoadedConfig, RawSongConfigFile, ReverseMode, SongConfig}, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:241:5 [INFO] [stdout] | [INFO] [stdout] 241 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:266:5 [INFO] [stdout] | [INFO] [stdout] 266 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:300:5 [INFO] [stdout] | [INFO] [stdout] 300 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:293:25 [INFO] [stdout] | [INFO] [stdout] 293 | fn get_field(&self, field: &MetadataField) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:296:29 [INFO] [stdout] | [INFO] [stdout] 296 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/tag_interop.rs:296:52 [INFO] [stdout] | [INFO] [stdout] 296 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:301:25 [INFO] [stdout] | [INFO] [stdout] 301 | fn get_field(&self, field: &MetadataField) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:304:29 [INFO] [stdout] | [INFO] [stdout] 304 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/tag_interop.rs:304:52 [INFO] [stdout] | [INFO] [stdout] 304 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nice_path` [INFO] [stdout] --> src/main.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | let nice_path = ItemPath::Folder( [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nice_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `results` [INFO] [stdout] --> src/main.rs:422:26 [INFO] [stdout] | [INFO] [stdout] 422 | fn handle_folder_results(results: &ProcessFolderResults) {} [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:241:5 [INFO] [stdout] | [INFO] [stdout] 241 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:266:5 [INFO] [stdout] | [INFO] [stdout] 266 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `art` [INFO] [stdout] --> src/setting.rs:300:5 [INFO] [stdout] | [INFO] [stdout] 300 | art: &SetValue>, [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_art` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_folder_results` is never used [INFO] [stdout] --> src/main.rs:422:4 [INFO] [stdout] | [INFO] [stdout] 422 | fn handle_folder_results(results: &ProcessFolderResults) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `nice_folder` is never read [INFO] [stdout] --> src/art.rs:287:9 [INFO] [stdout] | [INFO] [stdout] 285 | pub struct ArtConfigLoadResults { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 286 | pub result: Result, Rc>, [INFO] [stdout] 287 | pub nice_folder: PathBuf, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `icon_folder` is never read [INFO] [stdout] --> src/art.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 330 | pub struct ArtRepo { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 333 | pub icon_folder: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_option` is never used [INFO] [stdout] --> src/metadata.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 159 | impl MetadataValue { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn from_option(value: Option) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessFolderResults` is never constructed [INFO] [stdout] --> src/setting.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct ProcessFolderResults { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_folder` is never used [INFO] [stdout] --> src/setting.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn process_folder( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:58:22 [INFO] [stdout] | [INFO] [stdout] 58 | TrackOutOfBounds(&'a Path, u32), [INFO] [stdout] | ---------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 58 - TrackOutOfBounds(&'a Path, u32), [INFO] [stdout] 58 + TrackOutOfBounds((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | DiscOutOfBounds(&'a Path, u32), [INFO] [stdout] | --------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 59 - DiscOutOfBounds(&'a Path, u32), [INFO] [stdout] 59 + DiscOutOfBounds((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/song_config.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | NoTrackNumber(&'a Path), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 60 - NoTrackNumber(&'a Path), [INFO] [stdout] 60 + NoTrackNumber(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/song_config.rs:61:26 [INFO] [stdout] | [INFO] [stdout] 61 | DuplicateTrackNumber(&'a Path, &'a Path, u32), [INFO] [stdout] | -------------------- ^^^^^^^^ ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 61 - DuplicateTrackNumber(&'a Path, &'a Path, u32), [INFO] [stdout] 61 + DuplicateTrackNumber((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:62:27 [INFO] [stdout] | [INFO] [stdout] 62 | UnexpectedDiscPresent(&'a Path, u32), [INFO] [stdout] | --------------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 62 - UnexpectedDiscPresent(&'a Path, u32), [INFO] [stdout] 62 + UnexpectedDiscPresent((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/song_config.rs:63:26 [INFO] [stdout] | [INFO] [stdout] 63 | UnexpectedDiscAbsent(&'a Path), [INFO] [stdout] | -------------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 63 - UnexpectedDiscAbsent(&'a Path), [INFO] [stdout] 63 + UnexpectedDiscAbsent(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SyncedOrSimple` is never used [INFO] [stdout] --> src/tag_interop.rs:408:6 [INFO] [stdout] | [INFO] [stdout] 408 | enum SyncedOrSimple { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_lyrics` is never used [INFO] [stdout] --> src/tag_interop.rs:412:4 [INFO] [stdout] | [INFO] [stdout] 412 | fn try_lyrics(lines: Vec) -> SyncedOrSimple { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/art.rs:485:28 [INFO] [stdout] | [INFO] [stdout] 485 | && !path.file_name().is_some_and(|x| x == "images.yaml") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `path.file_name().is_none_or(|x| x != "images.yaml")` [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: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:293:25 [INFO] [stdout] | [INFO] [stdout] 293 | fn get_field(&self, field: &MetadataField) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:296:29 [INFO] [stdout] | [INFO] [stdout] 296 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/tag_interop.rs:296:52 [INFO] [stdout] | [INFO] [stdout] 296 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:301:25 [INFO] [stdout] | [INFO] [stdout] 301 | fn get_field(&self, field: &MetadataField) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `field` [INFO] [stdout] --> src/tag_interop.rs:304:29 [INFO] [stdout] | [INFO] [stdout] 304 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_field` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `value` [INFO] [stdout] --> src/tag_interop.rs:304:52 [INFO] [stdout] | [INFO] [stdout] 304 | fn set_field(&mut self, field: &MetadataField, value: MetadataValue) -> Option { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_value` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/library_config.rs:1086:9 [INFO] [stdout] | [INFO] [stdout] 1086 | / self.cache.get(path).map_or(true, |cache_time| { [INFO] [stdout] 1087 | | std::fs::metadata(path) [INFO] [stdout] 1088 | | .and_then(|x| x.modified()) [INFO] [stdout] 1089 | | .map_or(true, |file_time| { [INFO] [stdout] 1090 | | *cache_time < std::convert::Into::>::into(file_time) [INFO] [stdout] 1091 | | }) [INFO] [stdout] 1092 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 1086 - self.cache.get(path).map_or(true, |cache_time| { [INFO] [stdout] 1086 + self.cache.get(path).is_none_or(|cache_time| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nice_path` [INFO] [stdout] --> src/main.rs:204:13 [INFO] [stdout] | [INFO] [stdout] 204 | let nice_path = ItemPath::Folder( [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nice_path` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `results` [INFO] [stdout] --> src/main.rs:422:26 [INFO] [stdout] | [INFO] [stdout] 422 | fn handle_folder_results(results: &ProcessFolderResults) {} [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_folder_results` is never used [INFO] [stdout] --> src/main.rs:422:4 [INFO] [stdout] | [INFO] [stdout] 422 | fn handle_folder_results(results: &ProcessFolderResults) {} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `nice_folder` is never read [INFO] [stdout] --> src/art.rs:287:9 [INFO] [stdout] | [INFO] [stdout] 285 | pub struct ArtConfigLoadResults { [INFO] [stdout] | -------------------- field in this struct [INFO] [stdout] 286 | pub result: Result, Rc>, [INFO] [stdout] 287 | pub nice_folder: PathBuf, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `icon_folder` is never read [INFO] [stdout] --> src/art.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 330 | pub struct ArtRepo { [INFO] [stdout] | ------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 333 | pub icon_folder: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `from_option` is never used [INFO] [stdout] --> src/metadata.rs:172:12 [INFO] [stdout] | [INFO] [stdout] 159 | impl MetadataValue { [INFO] [stdout] | ------------------ associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 172 | pub fn from_option(value: Option) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ProcessFolderResults` is never constructed [INFO] [stdout] --> src/setting.rs:17:12 [INFO] [stdout] | [INFO] [stdout] 17 | pub struct ProcessFolderResults { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `process_folder` is never used [INFO] [stdout] --> src/setting.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn process_folder( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:58:22 [INFO] [stdout] | [INFO] [stdout] 58 | TrackOutOfBounds(&'a Path, u32), [INFO] [stdout] | ---------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 58 - TrackOutOfBounds(&'a Path, u32), [INFO] [stdout] 58 + TrackOutOfBounds((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:59:21 [INFO] [stdout] | [INFO] [stdout] 59 | DiscOutOfBounds(&'a Path, u32), [INFO] [stdout] | --------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 59 - DiscOutOfBounds(&'a Path, u32), [INFO] [stdout] 59 + DiscOutOfBounds((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/song_config.rs:60:19 [INFO] [stdout] | [INFO] [stdout] 60 | NoTrackNumber(&'a Path), [INFO] [stdout] | ------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 60 - NoTrackNumber(&'a Path), [INFO] [stdout] 60 + NoTrackNumber(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0`, `1`, and `2` are never read [INFO] [stdout] --> src/song_config.rs:61:26 [INFO] [stdout] | [INFO] [stdout] 61 | DuplicateTrackNumber(&'a Path, &'a Path, u32), [INFO] [stdout] | -------------------- ^^^^^^^^ ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 61 - DuplicateTrackNumber(&'a Path, &'a Path, u32), [INFO] [stdout] 61 + DuplicateTrackNumber((), (), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/song_config.rs:62:27 [INFO] [stdout] | [INFO] [stdout] 62 | UnexpectedDiscPresent(&'a Path, u32), [INFO] [stdout] | --------------------- ^^^^^^^^ ^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the fields to be of unit type to suppress this warning while preserving the field numbering, or remove the fields [INFO] [stdout] | [INFO] [stdout] 62 - UnexpectedDiscPresent(&'a Path, u32), [INFO] [stdout] 62 + UnexpectedDiscPresent((), ()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> src/song_config.rs:63:26 [INFO] [stdout] | [INFO] [stdout] 63 | UnexpectedDiscAbsent(&'a Path), [INFO] [stdout] | -------------------- ^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 63 - UnexpectedDiscAbsent(&'a Path), [INFO] [stdout] 63 + UnexpectedDiscAbsent(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `SyncedOrSimple` is never used [INFO] [stdout] --> src/tag_interop.rs:408:6 [INFO] [stdout] | [INFO] [stdout] 408 | enum SyncedOrSimple { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `try_lyrics` is never used [INFO] [stdout] --> src/tag_interop.rs:412:4 [INFO] [stdout] | [INFO] [stdout] 412 | fn try_lyrics(lines: Vec) -> SyncedOrSimple { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/modifier.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | / fn checked_append( [INFO] [stdout] 132 | | self: &Rc, [INFO] [stdout] 133 | | copy_source: &Metadata, [INFO] [stdout] 134 | | value: MetadataValue, [INFO] [stdout] ... | [INFO] [stdout] 139 | | appending: bool, [INFO] [stdout] 140 | | ) -> Result { [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/modifier.rs:162:33 [INFO] [stdout] | [INFO] [stdout] 162 | let should_modify = index.map_or(true, |index| { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 163 | | index.in_range(i, list.len(), OutOfBoundsDecision::Clamp) [INFO] [stdout] 164 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 162 - let should_modify = index.map_or(true, |index| { [INFO] [stdout] 162 + let should_modify = index.is_none_or(|index| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/modifier.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | / fn checked_insert( [INFO] [stdout] 175 | | self: &Rc, [INFO] [stdout] 176 | | copy_source: &Metadata, [INFO] [stdout] 177 | | value: MetadataValue, [INFO] [stdout] ... | [INFO] [stdout] 183 | | config: &LibraryConfig, [INFO] [stdout] 184 | | ) -> Result { [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/song_config.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | std::mem::replace(&mut self.underlying[index], Some(item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.underlying[index].replace(item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/song_config.rs:70:1 [INFO] [stdout] | [INFO] [stdout] 70 | / pub enum RawSongConfigFile { [INFO] [stdout] 71 | | Direct(RawSongConfig), [INFO] [stdout] | | --------------------- the largest variant contains at least 512 bytes [INFO] [stdout] 72 | | Reverse { reverse: ReverseMode }, [INFO] [stdout] | | -------------------------------- the second-largest variant contains at least 1 bytes [INFO] [stdout] 73 | | } [INFO] [stdout] | |_^ the entire enum is at least 512 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 71 - Direct(RawSongConfig), [INFO] [stdout] 71 + Direct(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/art.rs:485:28 [INFO] [stdout] | [INFO] [stdout] 485 | && !path.file_name().is_some_and(|x| x == "images.yaml") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `path.file_name().is_none_or(|x| x != "images.yaml")` [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 `map_or` can be simplified [INFO] [stdout] --> src/strategy.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / component.to_str().map_or(false, |str| match self { [INFO] [stdout] 264 | | Self::Literal(literal) => str == literal, [INFO] [stdout] 265 | | Self::Regex { regex } => regex.is_match(str), [INFO] [stdout] 266 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 263 - component.to_str().map_or(false, |str| match self { [INFO] [stdout] 263 + component.to_str().is_some_and(|str| match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/strategy.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 352 | against.map_or(true, |required| self == required) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 352 - against.map_or(true, |required| self == required) [INFO] [stdout] 352 + against.is_none_or(|required| self == required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/library_config.rs:1086:9 [INFO] [stdout] | [INFO] [stdout] 1086 | / self.cache.get(path).map_or(true, |cache_time| { [INFO] [stdout] 1087 | | std::fs::metadata(path) [INFO] [stdout] 1088 | | .and_then(|x| x.modified()) [INFO] [stdout] 1089 | | .map_or(true, |file_time| { [INFO] [stdout] 1090 | | *cache_time < std::convert::Into::>::into(file_time) [INFO] [stdout] 1091 | | }) [INFO] [stdout] 1092 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 1086 - self.cache.get(path).map_or(true, |cache_time| { [INFO] [stdout] 1086 + self.cache.get(path).is_none_or(|cache_time| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tag_interop.rs:68:24 [INFO] [stdout] | [INFO] [stdout] 68 | val.unwrap_or_else(|| MetadataValue::blank()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `MetadataValue::blank` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tag_interop.rs:390:13 [INFO] [stdout] | [INFO] [stdout] 390 | / !frame [INFO] [stdout] 391 | | .content() [INFO] [stdout] 392 | | .extended_text() [INFO] [stdout] 393 | | .is_some_and(|x| x.description == "RICH LYRICS") [INFO] [stdout] | |________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 390 ~ frame [INFO] [stdout] 391 + .content() [INFO] [stdout] 392 + .extended_text().is_none_or(|x| x.description != "RICH LYRICS") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/util.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | / self.to_range(length, decision) [INFO] [stdout] 150 | | .map_or(false, |range| range.contains(&index)) [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 150 - .map_or(false, |range| range.contains(&index)) [INFO] [stdout] 150 + .is_some_and(|range| range.contains(&index)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/strategy.rs:471:24 [INFO] [stdout] | [INFO] [stdout] 471 | fn file_name(path: &Path) -> Cow { [INFO] [stdout] | ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 471 | fn file_name(path: &Path) -> Cow<'_, str> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/modifier.rs:131:5 [INFO] [stdout] | [INFO] [stdout] 131 | / fn checked_append( [INFO] [stdout] 132 | | self: &Rc, [INFO] [stdout] 133 | | copy_source: &Metadata, [INFO] [stdout] 134 | | value: MetadataValue, [INFO] [stdout] ... | [INFO] [stdout] 139 | | appending: bool, [INFO] [stdout] 140 | | ) -> Result { [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/modifier.rs:162:33 [INFO] [stdout] | [INFO] [stdout] 162 | let should_modify = index.map_or(true, |index| { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 163 | | index.in_range(i, list.len(), OutOfBoundsDecision::Clamp) [INFO] [stdout] 164 | | }); [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 162 - let should_modify = index.map_or(true, |index| { [INFO] [stdout] 162 + let should_modify = index.is_none_or(|index| { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/modifier.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | / fn checked_insert( [INFO] [stdout] 175 | | self: &Rc, [INFO] [stdout] 176 | | copy_source: &Metadata, [INFO] [stdout] 177 | | value: MetadataValue, [INFO] [stdout] ... | [INFO] [stdout] 183 | | config: &LibraryConfig, [INFO] [stdout] 184 | | ) -> Result { [INFO] [stdout] | |__________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: replacing an `Option` with `Some(..)` [INFO] [stdout] --> src/song_config.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | std::mem::replace(&mut self.underlying[index], Some(item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider `Option::replace()` instead: `self.underlying[index].replace(item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mem_replace_option_with_some [INFO] [stdout] = note: `#[warn(clippy::mem_replace_option_with_some)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: large size difference between variants [INFO] [stdout] --> src/song_config.rs:70:1 [INFO] [stdout] | [INFO] [stdout] 70 | / pub enum RawSongConfigFile { [INFO] [stdout] 71 | | Direct(RawSongConfig), [INFO] [stdout] | | --------------------- the largest variant contains at least 512 bytes [INFO] [stdout] 72 | | Reverse { reverse: ReverseMode }, [INFO] [stdout] | | -------------------------------- the second-largest variant contains at least 1 bytes [INFO] [stdout] 73 | | } [INFO] [stdout] | |_^ the entire enum is at least 512 bytes [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stdout] = note: `#[warn(clippy::large_enum_variant)]` on by default [INFO] [stdout] help: consider boxing the large fields or introducing indirection in some other way to reduce the total size of the enum [INFO] [stdout] | [INFO] [stdout] 71 - Direct(RawSongConfig), [INFO] [stdout] 71 + Direct(Box), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/strategy.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / component.to_str().map_or(false, |str| match self { [INFO] [stdout] 264 | | Self::Literal(literal) => str == literal, [INFO] [stdout] 265 | | Self::Regex { regex } => regex.is_match(str), [INFO] [stdout] 266 | | }) [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 263 - component.to_str().map_or(false, |str| match self { [INFO] [stdout] 263 + component.to_str().is_some_and(|str| match self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/strategy.rs:352:9 [INFO] [stdout] | [INFO] [stdout] 352 | against.map_or(true, |required| self == required) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_none_or` instead [INFO] [stdout] | [INFO] [stdout] 352 - against.map_or(true, |required| self == required) [INFO] [stdout] 352 + against.is_none_or(|required| self == required) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/tag_interop.rs:68:24 [INFO] [stdout] | [INFO] [stdout] 68 | val.unwrap_or_else(|| MetadataValue::blank()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `MetadataValue::blank` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/tag_interop.rs:390:13 [INFO] [stdout] | [INFO] [stdout] 390 | / !frame [INFO] [stdout] 391 | | .content() [INFO] [stdout] 392 | | .extended_text() [INFO] [stdout] 393 | | .is_some_and(|x| x.description == "RICH LYRICS") [INFO] [stdout] | |________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 390 ~ frame [INFO] [stdout] 391 + .content() [INFO] [stdout] 392 + .extended_text().is_none_or(|x| x.description != "RICH LYRICS") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/util.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | / self.to_range(length, decision) [INFO] [stdout] 150 | | .map_or(false, |range| range.contains(&index)) [INFO] [stdout] | |__________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 150 - .map_or(false, |range| range.contains(&index)) [INFO] [stdout] 150 + .is_some_and(|range| range.contains(&index)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct pattern is not needed for a unit variant [INFO] [stdout] --> src/tests.rs:312:57 [INFO] [stdout] | [INFO] [stdout] 312 | assert!(matches!(result, LocalItemSelector::This { .. })); [INFO] [stdout] | ^^^^^^^ help: remove the struct pattern [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern [INFO] [stdout] = note: `#[warn(clippy::unneeded_struct_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct pattern is not needed for a unit variant [INFO] [stdout] --> src/tests.rs:318:57 [INFO] [stdout] | [INFO] [stdout] 318 | assert!(matches!(result, LocalItemSelector::This { .. })); [INFO] [stdout] | ^^^^^^^ help: remove the struct pattern [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct pattern is not needed for a unit variant [INFO] [stdout] --> src/tests.rs:360:52 [INFO] [stdout] | [INFO] [stdout] 360 | assert!(matches!(result, FieldSelector::All { .. })); [INFO] [stdout] | ^^^^^^^ help: remove the struct pattern [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_struct_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/strategy.rs:471:24 [INFO] [stdout] | [INFO] [stdout] 471 | fn file_name(path: &Path) -> Cow { [INFO] [stdout] | ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 471 | fn file_name(path: &Path) -> Cow<'_, str> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 28.81s [INFO] running `Command { std: "docker" "inspect" "1a34eee27fee86e9c4a7c0f4a6bd8ff6a66d4fe124df1d290d0c192e441873df", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1a34eee27fee86e9c4a7c0f4a6bd8ff6a66d4fe124df1d290d0c192e441873df", kill_on_drop: false }` [INFO] [stdout] 1a34eee27fee86e9c4a7c0f4a6bd8ff6a66d4fe124df1d290d0c192e441873df