[INFO] cloning repository https://github.com/finnhodgkin/ragu [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/finnhodgkin/ragu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffinnhodgkin%2Fragu", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffinnhodgkin%2Fragu'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e9742615b5af8dd724e1bf24759e86c92f495c75 [INFO] linting finnhodgkin/ragu against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffinnhodgkin%2Fragu" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/finnhodgkin/ragu [INFO] finished tweaking git repo https://github.com/finnhodgkin/ragu [INFO] tweaked toml for git repo https://github.com/finnhodgkin/ragu written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/finnhodgkin/ragu 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/finnhodgkin/ragu 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] Downloading crates ... [INFO] [stderr] Downloaded which v8.0.0 [INFO] [stderr] Downloaded xattr v1.6.1 [INFO] [stderr] Downloaded filetime v0.2.26 [INFO] [stderr] Downloaded colored v3.0.0 [INFO] [stderr] Downloaded tar v0.4.44 [INFO] [stderr] Downloaded git2 v0.20.2 [INFO] [stderr] Downloaded libssh2-sys v0.3.1 [INFO] [stderr] Downloaded libgit2-sys v0.18.2+1.9.1 [INFO] [stderr] Downloaded openssl-src v300.5.3+3.5.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 68e755244a7b23c2b2fc909239e868b8b716dec986e8513ba0f8ed2003b341e8 [INFO] running `Command { std: "docker" "start" "-a" "68e755244a7b23c2b2fc909239e868b8b716dec986e8513ba0f8ed2003b341e8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "68e755244a7b23c2b2fc909239e868b8b716dec986e8513ba0f8ed2003b341e8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "68e755244a7b23c2b2fc909239e868b8b716dec986e8513ba0f8ed2003b341e8", kill_on_drop: false }` [INFO] [stdout] 68e755244a7b23c2b2fc909239e868b8b716dec986e8513ba0f8ed2003b341e8 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 851f8c13645d3e30e47775ab4b3ef4de87f4328e119cd092f417ccbfc2e47638 [INFO] running `Command { std: "docker" "start" "-a" "851f8c13645d3e30e47775ab4b3ef4de87f4328e119cd092f417ccbfc2e47638", kill_on_drop: false }` [INFO] [stderr] Checking cfg-if v1.0.3 [INFO] [stderr] Checking stable_deref_trait v1.2.1 [INFO] [stderr] Checking bitflags v2.9.4 [INFO] [stderr] Compiling libc v0.2.177 [INFO] [stderr] Compiling syn v2.0.106 [INFO] [stderr] Checking signal-hook-registry v1.4.6 [INFO] [stderr] Checking mio v1.0.4 [INFO] [stderr] Checking socket2 v0.6.0 [INFO] [stderr] Checking indexmap v2.11.4 [INFO] [stderr] Checking tracing-core v0.1.34 [INFO] [stderr] Compiling openssl v0.10.73 [INFO] [stderr] Compiling getrandom v0.3.3 [INFO] [stderr] Checking anstream v0.6.21 [INFO] [stderr] Checking crypto-common v0.1.6 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking simd-adler32 v0.3.7 [INFO] [stderr] Checking iri-string v0.7.8 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking clap_lex v0.7.5 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking rustix v1.1.2 [INFO] [stderr] Checking rustls-pki-types v1.12.0 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking clap_builder v4.5.48 [INFO] [stderr] Checking filetime v0.2.26 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking tracing v0.1.41 [INFO] [stderr] Checking crc32fast v1.5.0 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking env_home v0.1.0 [INFO] [stderr] Checking minimal-lexical v0.2.1 [INFO] [stderr] Checking linked-hash-map v0.5.6 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking dirs v6.0.0 [INFO] [stderr] Checking sysinfo v0.37.2 [INFO] [stderr] Checking colored v3.0.0 [INFO] [stderr] Checking glob v0.3.3 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Checking heck v0.4.1 [INFO] [stderr] Checking yaml-rust v0.4.5 [INFO] [stderr] Checking flate2 v1.1.4 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Compiling jobserver v0.1.34 [INFO] [stderr] Compiling cc v1.2.41 [INFO] [stderr] Checking xattr v1.6.1 [INFO] [stderr] Checking which v8.0.0 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Checking tar v0.4.44 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Compiling openssl-src v300.5.3+3.5.4 [INFO] [stderr] Compiling openssl-sys v0.9.109 [INFO] [stderr] Compiling libz-sys v1.1.22 [INFO] [stderr] Compiling libssh2-sys v0.3.1 [INFO] [stderr] Compiling libgit2-sys v0.18.2+1.9.1 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling zerovec-derive v0.11.1 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling tokio-macros v2.5.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling clap_derive v4.5.47 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.0 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tokio v1.47.1 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.0 [INFO] [stderr] Checking zerovec v0.11.4 [INFO] [stderr] Checking zerotrie v0.2.2 [INFO] [stderr] Checking clap v4.5.48 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking tinystr v0.8.1 [INFO] [stderr] Checking potential_utf v0.1.3 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking icu_collections v2.0.0 [INFO] [stderr] Checking icu_locale_core v2.0.0 [INFO] [stderr] Checking icu_provider v2.0.0 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking icu_properties v2.0.1 [INFO] [stderr] Checking icu_normalizer v2.0.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking tokio-util v0.7.16 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tower-http v0.6.6 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking hyper v1.7.0 [INFO] [stderr] Checking hyper-util v0.1.17 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking reqwest v0.12.23 [INFO] [stderr] Checking git2 v0.20.2 [INFO] [stderr] Checking ragu v0.1.24 (/opt/rustwide/workdir) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/registry/purescript_registry.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use tempfile; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> src/registry/purescript_registry.rs:5:1 [INFO] [stdout] | [INFO] [stdout] 5 | use tempfile; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/build/compiler.rs:95:16 [INFO] [stdout] | [INFO] [stdout] 95 | if options.censor_codes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!options.censor_codes.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: length comparison to zero [INFO] [stdout] --> src/build/compiler.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | if options.filter_codes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!options.filter_codes.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] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/compiler.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | output_dir: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 130 - output_dir: &PathBuf, [INFO] [stdout] 130 + output_dir: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/run_from_root.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | workspace_root: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 26 - workspace_root: &PathBuf, [INFO] [stdout] 26 + workspace_root: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/build/run_from_root.rs:54:67 [INFO] [stdout] | [INFO] [stdout] 54 | let base_dir = resolve_to_absolute(base_dir_path, &cwd)?; [INFO] [stdout] | ^^^^ help: change this to: `cwd` [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/build/run_from_root.rs:72:63 [INFO] [stdout] | [INFO] [stdout] 72 | let source = resolve_to_absolute(source_path, &cwd)?; [INFO] [stdout] | ^^^^ help: change this to: `cwd` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/run_from_root.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | workspace_root: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 123 - workspace_root: &PathBuf, [INFO] [stdout] 123 + workspace_root: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/build/run_from_root.rs:142:36 [INFO] [stdout] | [INFO] [stdout] 142 | make_relative(&normalized, &cwd) [INFO] [stdout] | ^^^^ help: change this to: `cwd` [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: length comparison to zero [INFO] [stdout] --> src/build/compiler.rs:95:16 [INFO] [stdout] | [INFO] [stdout] 95 | if options.censor_codes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!options.censor_codes.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: length comparison to zero [INFO] [stdout] --> src/build/compiler.rs:98:16 [INFO] [stdout] | [INFO] [stdout] 98 | if options.filter_codes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!options.filter_codes.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] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/compiler.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | output_dir: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 130 - output_dir: &PathBuf, [INFO] [stdout] 130 + output_dir: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/run_from_root.rs:26:21 [INFO] [stdout] | [INFO] [stdout] 26 | workspace_root: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 26 - workspace_root: &PathBuf, [INFO] [stdout] 26 + workspace_root: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/build/run_from_root.rs:54:67 [INFO] [stdout] | [INFO] [stdout] 54 | let base_dir = resolve_to_absolute(base_dir_path, &cwd)?; [INFO] [stdout] | ^^^^ help: change this to: `cwd` [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/build/run_from_root.rs:72:63 [INFO] [stdout] | [INFO] [stdout] 72 | let source = resolve_to_absolute(source_path, &cwd)?; [INFO] [stdout] | ^^^^ help: change this to: `cwd` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/build/run_from_root.rs:123:21 [INFO] [stdout] | [INFO] [stdout] 123 | workspace_root: &PathBuf, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 123 - workspace_root: &PathBuf, [INFO] [stdout] 123 + workspace_root: &Path, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/build/run_from_root.rs:142:36 [INFO] [stdout] | [INFO] [stdout] 142 | make_relative(&normalized, &cwd) [INFO] [stdout] | ^^^^ help: change this to: `cwd` [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 `.as_ref().map(|url| url.as_str())` on an `Option` value [INFO] [stdout] --> src/config/types.rs:160:28 [INFO] [stdout] | [INFO] [stdout] 160 | .and_then(|ps| ps.url.as_ref().map(|url| url.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `ps.url.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|registry| registry.as_str())` on an `Option` value [INFO] [stdout] --> src/config/types.rs:167:28 [INFO] [stdout] | [INFO] [stdout] 167 | .and_then(|ps| ps.registry.as_ref().map(|registry| registry.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `ps.registry.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/config/types.rs:202:32 [INFO] [stdout] | [INFO] [stdout] 202 | self.workspace_root == PathBuf::from(".") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"."` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/config/update.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | packages_to_remove: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 40 - packages_to_remove: &Vec, [INFO] [stdout] 40 + packages_to_remove: &[PackageName], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/config/update.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | / if let Yaml::Hash(ref mut package_hash) = package_section { [INFO] [stdout] 106 | | if let Some(deps) = package_hash.get_mut(&Yaml::String("dependencies".to_string())) [INFO] [stdout] 107 | | { [INFO] [stdout] 108 | | *deps = Yaml::Array( [INFO] [stdout] ... | [INFO] [stdout] 115 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/config/update.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | if let Some(package_section) = root_hash.get_mut(&Yaml::String("package".to_string())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ replace this binding [INFO] [stdout] 105 | if let Yaml::Hash(ref mut package_hash) = package_section { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/config/update.rs:111:34 [INFO] [stdout] | [INFO] [stdout] 111 | ... .map(|dep| Yaml::String(dep)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Yaml::String` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/validation.rs:125:34 [INFO] [stdout] | [INFO] [stdout] 125 | if !query.exists(&trans_dep.name()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `trans_dep.name()` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/config/mod.rs:51:53 [INFO] [stdout] | [INFO] [stdout] 51 | workspace_root: if cwd.to_path_buf() == PathBuf::from("") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `*""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init/src.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn template(name: &String, is_nested_package: bool) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - fn template(name: &String, is_nested_package: bool) -> String { [INFO] [stdout] 6 + fn template(name: &str, is_nested_package: bool) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init/test.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn template(name: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - fn template(name: &String) -> String { [INFO] [stdout] 6 + fn template(name: &str) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|url| url.as_str())` on an `Option` value [INFO] [stdout] --> src/config/types.rs:160:28 [INFO] [stdout] | [INFO] [stdout] 160 | .and_then(|ps| ps.url.as_ref().map(|url| url.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `ps.url.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] = note: `#[warn(clippy::option_as_ref_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.as_ref().map(|registry| registry.as_str())` on an `Option` value [INFO] [stdout] --> src/config/types.rs:167:28 [INFO] [stdout] | [INFO] [stdout] 167 | .and_then(|ps| ps.registry.as_ref().map(|registry| registry.as_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using as_deref: `ps.registry.as_deref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_as_ref_deref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/config/types.rs:202:32 [INFO] [stdout] | [INFO] [stdout] 202 | self.workspace_root == PathBuf::from(".") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `*"."` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/config/update.rs:40:25 [INFO] [stdout] | [INFO] [stdout] 40 | packages_to_remove: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 40 - packages_to_remove: &Vec, [INFO] [stdout] 40 + packages_to_remove: &[PackageName], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> src/install/git.rs:86:10 [INFO] [stdout] | [INFO] [stdout] 86 | .map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 ~ .inspect_err(|e| { [INFO] [stdout] 87 | // Clean up the directory if any step fails to prevent security risk [INFO] [stdout] 88 | if package_dir.exists() { [INFO] [stdout] 89 | let _ = fs::remove_dir_all(&package_dir); [INFO] [stdout] 90 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if let` can be collapsed into the outer `if let` [INFO] [stdout] --> src/config/update.rs:105:13 [INFO] [stdout] | [INFO] [stdout] 105 | / if let Yaml::Hash(ref mut package_hash) = package_section { [INFO] [stdout] 106 | | if let Some(deps) = package_hash.get_mut(&Yaml::String("dependencies".to_string())) [INFO] [stdout] 107 | | { [INFO] [stdout] 108 | | *deps = Yaml::Array( [INFO] [stdout] ... | [INFO] [stdout] 115 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] help: the outer pattern can be modified to include the inner pattern [INFO] [stdout] --> src/config/update.rs:104:21 [INFO] [stdout] | [INFO] [stdout] 104 | if let Some(package_section) = root_hash.get_mut(&Yaml::String("package".to_string())) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ replace this binding [INFO] [stdout] 105 | if let Yaml::Hash(ref mut package_hash) = package_section { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ with this pattern [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/config/update.rs:111:34 [INFO] [stdout] | [INFO] [stdout] 111 | ... .map(|dep| Yaml::String(dep)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Yaml::String` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/config/validation.rs:125:34 [INFO] [stdout] | [INFO] [stdout] 125 | if !query.exists(&trans_dep.name()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: change this to: `trans_dep.name()` [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/install/manager.rs:159:37 [INFO] [stdout] | [INFO] [stdout] 159 | Ok(package_info) => match package_info { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 160 | | Some(package) => { [INFO] [stdout] 161 | | print!("\r\x1B[K"); // Clear current line [INFO] [stdout] 162 | | print!( [INFO] [stdout] ... | [INFO] [stdout] 170 | | None => {} [INFO] [stdout] 171 | | }, [INFO] [stdout] | |_________________^ [INFO] [stdout] | [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] 159 ~ Ok(package_info) => if let Some(package) = package_info { [INFO] [stdout] 160 + print!("\r\x1B[K"); // Clear current line [INFO] [stdout] 161 + print!( [INFO] [stdout] 162 + "\rInstalled {} ({})", [INFO] [stdout] 163 + package.name().0.bold(), [INFO] [stdout] 164 + package.type_str() [INFO] [stdout] 165 + ); [INFO] [stdout] 166 + std::io::stdout().flush().unwrap(); // Ensure output is shown immediately [INFO] [stdout] 167 + installed.push(package); [INFO] [stdout] 168 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/install/manager.rs:262:37 [INFO] [stdout] | [INFO] [stdout] 262 | if !package_version_matches(&package, &package_dir)? { [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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 borrowed expression implements the required traits [INFO] [stdout] --> src/install/manager.rs:350:36 [INFO] [stdout] | [INFO] [stdout] 350 | for entry in std::fs::read_dir(&top_level_dir.path()).context(format!( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `top_level_dir.path()` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/install/manager.rs:395:38 [INFO] [stdout] | [INFO] [stdout] 395 | let package_dir = spago_dir.join(&folder_name); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `folder_name` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/install/manager.rs:399:33 [INFO] [stdout] | [INFO] [stdout] 399 | if !git_version_matches(&package, &package_dir)? { [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/config/mod.rs:51:53 [INFO] [stdout] | [INFO] [stdout] 51 | workspace_root: if cwd.to_path_buf() == PathBuf::from("") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: try: `*""` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/modules/mod.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | &module_part[..export_pos].trim() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `module_part[..export_pos].trim()` [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/modules/mod.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | &module_part[..where_pos].trim() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `module_part[..where_pos].trim()` [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/modules/mod.rs:133:14 [INFO] [stdout] | [INFO] [stdout] 133 | .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/package_info/info.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | / match &package_type { [INFO] [stdout] 20 | | &Package::Local(package) => { [INFO] [stdout] 21 | | println!( [INFO] [stdout] 22 | | "\n{} {} ({})\n", [INFO] [stdout] ... | [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 19 ~ match package_type { [INFO] [stdout] 20 ~ Package::Local(package) => { [INFO] [stdout] 21 | println!( [INFO] [stdout] ... [INFO] [stdout] 28 | } [INFO] [stdout] 29 ~ Package::Remote(package) => { [INFO] [stdout] 30 | println!( [INFO] [stdout] ... [INFO] [stdout] 37 | } [INFO] [stdout] 38 ~ Package::Registry(package) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init/src.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn template(name: &String, is_nested_package: bool) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - fn template(name: &String, is_nested_package: bool) -> String { [INFO] [stdout] 6 + fn template(name: &str, is_nested_package: bool) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/init/test.rs:6:19 [INFO] [stdout] | [INFO] [stdout] 6 | fn template(name: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 6 - fn template(name: &String) -> String { [INFO] [stdout] 6 + fn template(name: &str) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/package_sets/stats.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | packages.sort_by(|a, b| b.dep_count().cmp(&a.dep_count())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 44 - packages.sort_by(|a, b| b.dep_count().cmp(&a.dep_count())); [INFO] [stdout] 44 + packages.sort_by_key(|b| std::cmp::Reverse(b.dep_count())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/package_sets/stats.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | packages_with_dependents.sort_by(|a, b| b.1.cmp(&a.1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 - packages_with_dependents.sort_by(|a, b| b.1.cmp(&a.1)); [INFO] [stdout] 58 + packages_with_dependents.sort_by_key(|b| std::cmp::Reverse(b.1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `map_err` over `inspect_err` [INFO] [stdout] --> src/install/git.rs:86:10 [INFO] [stdout] | [INFO] [stdout] 86 | .map_err(|e| { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_inspect [INFO] [stdout] = note: `#[warn(clippy::manual_inspect)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 86 ~ .inspect_err(|e| { [INFO] [stdout] 87 | // Clean up the directory if any step fails to prevent security risk [INFO] [stdout] 88 | if package_dir.exists() { [INFO] [stdout] 89 | let _ = fs::remove_dir_all(&package_dir); [INFO] [stdout] 90 ~ } [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/install/manager.rs:159:37 [INFO] [stdout] | [INFO] [stdout] 159 | Ok(package_info) => match package_info { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 160 | | Some(package) => { [INFO] [stdout] 161 | | print!("\r\x1B[K"); // Clear current line [INFO] [stdout] 162 | | print!( [INFO] [stdout] ... | [INFO] [stdout] 170 | | None => {} [INFO] [stdout] 171 | | }, [INFO] [stdout] | |_________________^ [INFO] [stdout] | [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] 159 ~ Ok(package_info) => if let Some(package) = package_info { [INFO] [stdout] 160 + print!("\r\x1B[K"); // Clear current line [INFO] [stdout] 161 + print!( [INFO] [stdout] 162 + "\rInstalled {} ({})", [INFO] [stdout] 163 + package.name().0.bold(), [INFO] [stdout] 164 + package.type_str() [INFO] [stdout] 165 + ); [INFO] [stdout] 166 + std::io::stdout().flush().unwrap(); // Ensure output is shown immediately [INFO] [stdout] 167 + installed.push(package); [INFO] [stdout] 168 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/install/manager.rs:262:37 [INFO] [stdout] | [INFO] [stdout] 262 | if !package_version_matches(&package, &package_dir)? { [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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 borrowed expression implements the required traits [INFO] [stdout] --> src/install/manager.rs:350:36 [INFO] [stdout] | [INFO] [stdout] 350 | for entry in std::fs::read_dir(&top_level_dir.path()).context(format!( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: change this to: `top_level_dir.path()` [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] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/install/manager.rs:395:38 [INFO] [stdout] | [INFO] [stdout] 395 | let package_dir = spago_dir.join(&folder_name); [INFO] [stdout] | ^^^^^^^^^^^^ help: change this to: `folder_name` [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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/install/manager.rs:399:33 [INFO] [stdout] | [INFO] [stdout] 399 | if !git_version_matches(&package, &package_dir)? { [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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 want to iterate on a map's values [INFO] [stdout] --> src/registry/packages.rs:47:29 [INFO] [stdout] | [INFO] [stdout] 47 | for (_, package) in self.package_set { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 47 - for (_, package) in self.package_set { [INFO] [stdout] 47 + for package in self.package_set.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/registry/packages.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | for (_, package) in self.package_set { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 74 - for (_, package) in self.package_set { [INFO] [stdout] 74 + for package in self.package_set.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/registry/packages.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | / self.package_set [INFO] [stdout] 142 | | .iter() [INFO] [stdout] 143 | | .map(|(_, pkg)| { [INFO] [stdout] 144 | | let dependents_count = self.get_dependents_count(pkg.name()); [INFO] [stdout] 145 | | (pkg, dependents_count) [INFO] [stdout] 146 | | }) [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 141 ~ self.package_set.values().map(|pkg| { [INFO] [stdout] 142 + let dependents_count = self.get_dependents_count(pkg.name()); [INFO] [stdout] 143 + (pkg, dependents_count) [INFO] [stdout] 144 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/registry/purescript_registry.rs:137:32 [INFO] [stdout] | [INFO] [stdout] 137 | ... && !(e.file_name().to_str() == Some("README.md")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(e.file_name().to_str() != Some("README.md"))` [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/registry/purescript_registry.rs:177:34 [INFO] [stdout] | [INFO] [stdout] 177 | ... .or_insert_with(HashMap::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/modules/mod.rs:106:17 [INFO] [stdout] | [INFO] [stdout] 106 | &module_part[..export_pos].trim() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `module_part[..export_pos].trim()` [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/modules/mod.rs:108:17 [INFO] [stdout] | [INFO] [stdout] 108 | &module_part[..where_pos].trim() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `module_part[..where_pos].trim()` [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/modules/mod.rs:133:14 [INFO] [stdout] | [INFO] [stdout] 133 | .or_insert_with(Vec::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stdout] --> src/package_info/info.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | / match &package_type { [INFO] [stdout] 20 | | &Package::Local(package) => { [INFO] [stdout] 21 | | println!( [INFO] [stdout] 22 | | "\n{} {} ({})\n", [INFO] [stdout] ... | [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stdout] = note: `#[warn(clippy::match_ref_pats)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 19 ~ match package_type { [INFO] [stdout] 20 ~ Package::Local(package) => { [INFO] [stdout] 21 | println!( [INFO] [stdout] ... [INFO] [stdout] 28 | } [INFO] [stdout] 29 ~ Package::Remote(package) => { [INFO] [stdout] 30 | println!( [INFO] [stdout] ... [INFO] [stdout] 37 | } [INFO] [stdout] 38 ~ Package::Registry(package) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/package_sets/stats.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | packages.sort_by(|a, b| b.dep_count().cmp(&a.dep_count())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 44 - packages.sort_by(|a, b| b.dep_count().cmp(&a.dep_count())); [INFO] [stdout] 44 + packages.sort_by_key(|b| std::cmp::Reverse(b.dep_count())); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/package_sets/stats.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | packages_with_dependents.sort_by(|a, b| b.1.cmp(&a.1)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 58 - packages_with_dependents.sort_by(|a, b| b.1.cmp(&a.1)); [INFO] [stdout] 58 + packages_with_dependents.sort_by_key(|b| std::cmp::Reverse(b.1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/src_as_sources/import_parsing.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | while let Some((i, ch)) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i, ch) in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/src_as_sources/import_parsing.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | while let Some((i, ch)) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i, ch) in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/src_as_sources/mod.rs:104:47 [INFO] [stdout] | [INFO] [stdout] 104 | main_files.extend(get_files_from_glob(&TEST_SOURCES)?); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `TEST_SOURCES` [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 want to iterate on a map's values [INFO] [stdout] --> src/registry/packages.rs:47:29 [INFO] [stdout] | [INFO] [stdout] 47 | for (_, package) in self.package_set { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] = note: `#[warn(clippy::for_kv_map)]` on by default [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 47 - for (_, package) in self.package_set { [INFO] [stdout] 47 + for package in self.package_set.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to want to iterate on a map's values [INFO] [stdout] --> src/registry/packages.rs:74:29 [INFO] [stdout] | [INFO] [stdout] 74 | for (_, package) in self.package_set { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stdout] help: use the corresponding method [INFO] [stdout] | [INFO] [stdout] 74 - for (_, package) in self.package_set { [INFO] [stdout] 74 + for package in self.package_set.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: iterating on a map's values [INFO] [stdout] --> src/registry/packages.rs:141:9 [INFO] [stdout] | [INFO] [stdout] 141 | / self.package_set [INFO] [stdout] 142 | | .iter() [INFO] [stdout] 143 | | .map(|(_, pkg)| { [INFO] [stdout] 144 | | let dependents_count = self.get_dependents_count(pkg.name()); [INFO] [stdout] 145 | | (pkg, dependents_count) [INFO] [stdout] 146 | | }) [INFO] [stdout] | |______________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_kv_map [INFO] [stdout] = note: `#[warn(clippy::iter_kv_map)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 141 ~ self.package_set.values().map(|pkg| { [INFO] [stdout] 142 + let dependents_count = self.get_dependents_count(pkg.name()); [INFO] [stdout] 143 + (pkg, dependents_count) [INFO] [stdout] 144 + }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/workspace/mod.rs:55:35 [INFO] [stdout] | [INFO] [stdout] 55 | fix_dependency_issues(&package, &stats)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.not_found.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:38 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.to_install.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:68 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.to_uninstall.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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:132:22 [INFO] [stdout] | [INFO] [stdout] 132 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:137:22 [INFO] [stdout] | [INFO] [stdout] 137 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:146:22 [INFO] [stdout] | [INFO] [stdout] 146 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/workspace/mod.rs:169:5 [INFO] [stdout] | [INFO] [stdout] 169 | / if !commands_only && (!broken_only || not_found.is_some()) { [INFO] [stdout] 170 | | if to_install.is_some() || to_uninstall.is_some() || not_found.is_some() { [INFO] [stdout] 171 | | println!(""); [INFO] [stdout] 172 | | println!("Package: {}", package.0); [INFO] [stdout] 173 | | } [INFO] [stdout] 174 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if !commands_only && (!broken_only || not_found.is_some()) [INFO] [stdout] 170 ~ && (to_install.is_some() || to_uninstall.is_some() || not_found.is_some()) { [INFO] [stdout] 171 | println!(""); [INFO] [stdout] 172 | println!("Package: {}", package.0); [INFO] [stdout] 173 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/workspace/mod.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/workspace/mod.rs:203:13 [INFO] [stdout] | [INFO] [stdout] 203 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:207:17 [INFO] [stdout] | [INFO] [stdout] 207 | / not_found [INFO] [stdout] 208 | | .iter() [INFO] [stdout] 209 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 207 ~ not_found [INFO] [stdout] 208 + .iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/workspace/mod.rs:223:27 [INFO] [stdout] | [INFO] [stdout] 223 | let has_install = to_install.map_or(false, |set| !set.is_empty()); [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_some_and` instead [INFO] [stdout] | [INFO] [stdout] 223 - let has_install = to_install.map_or(false, |set| !set.is_empty()); [INFO] [stdout] 223 + let has_install = to_install.is_some_and(|set| !set.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/workspace/mod.rs:224:29 [INFO] [stdout] | [INFO] [stdout] 224 | let has_uninstall = to_uninstall.map_or(false, |set| !set.is_empty()); [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] 224 - let has_uninstall = to_uninstall.map_or(false, |set| !set.is_empty()); [INFO] [stdout] 224 + let has_uninstall = to_uninstall.is_some_and(|set| !set.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/workspace/mod.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | "ragu check-deps -f", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 250 ~ "{}ragu check-deps -f{}", [INFO] [stdout] 251 ~ "Run ".dimmed(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:265:26 [INFO] [stdout] | [INFO] [stdout] 265 | let to_install = to_install [INFO] [stdout] | __________________________^ [INFO] [stdout] 266 | | .into_iter() [INFO] [stdout] 267 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 265 ~ let to_install = to_install [INFO] [stdout] 266 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:266:14 [INFO] [stdout] | [INFO] [stdout] 266 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/registry/purescript_registry.rs:137:32 [INFO] [stdout] | [INFO] [stdout] 137 | ... && !(e.file_name().to_str() == Some("README.md")) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(e.file_name().to_str() != Some("README.md"))` [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: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/registry/purescript_registry.rs:177:34 [INFO] [stdout] | [INFO] [stdout] 177 | ... .or_insert_with(HashMap::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::path::PathBuf` [INFO] [stdout] --> src/workspace/mod.rs:270:14 [INFO] [stdout] | [INFO] [stdout] 270 | &PathBuf::from(Path::join(package.path.as_path(), "spago.yaml")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `Path::join(package.path.as_path(), "spago.yaml")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:276:28 [INFO] [stdout] | [INFO] [stdout] 276 | let to_uninstall = to_uninstall [INFO] [stdout] | ____________________________^ [INFO] [stdout] 277 | | .into_iter() [INFO] [stdout] 278 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 276 ~ let to_uninstall = to_uninstall [INFO] [stdout] 277 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:277:14 [INFO] [stdout] | [INFO] [stdout] 277 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::path::PathBuf` [INFO] [stdout] --> src/workspace/mod.rs:282:14 [INFO] [stdout] | [INFO] [stdout] 282 | &PathBuf::from(Path::join(package.path.as_path(), "spago.yaml")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `Path::join(package.path.as_path(), "spago.yaml")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:288:25 [INFO] [stdout] | [INFO] [stdout] 288 | let not_found = not_found [INFO] [stdout] | _________________________^ [INFO] [stdout] 289 | | .into_iter() [INFO] [stdout] 290 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 288 ~ let not_found = not_found [INFO] [stdout] 289 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:289:14 [INFO] [stdout] | [INFO] [stdout] 289 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module has the same name as its containing module [INFO] [stdout] --> src/sources/tests.rs:2:1 [INFO] [stdout] | [INFO] [stdout] 2 | / mod tests { [INFO] [stdout] 3 | | use crate::config::{PackageConfig, SpagoConfig, WorkspaceConfig}; [INFO] [stdout] 4 | | use crate::registry::{LocalPackage, Package, PackageName, PackageSet, PackageSetPackage}; [INFO] [stdout] 5 | | use crate::sources::{ [INFO] [stdout] ... | [INFO] [stdout] 382 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stdout] = note: `#[warn(clippy::module_inception)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/src_as_sources/import_parsing.rs:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | while let Some((i, ch)) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i, ch) in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/src_as_sources/import_parsing.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | while let Some((i, ch)) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i, ch) in chars` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `push_str()` using a single-character string literal [INFO] [stdout] --> src/src_as_sources/import_parsing.rs:503:9 [INFO] [stdout] | [INFO] [stdout] 503 | input.push_str(")"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: consider using `push` with a character literal: `input.push(')')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_add_str [INFO] [stdout] = note: `#[warn(clippy::single_char_add_str)]` 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/src_as_sources/mod.rs:104:47 [INFO] [stdout] | [INFO] [stdout] 104 | main_files.extend(get_files_from_glob(&TEST_SOURCES)?); [INFO] [stdout] | ^^^^^^^^^^^^^ help: change this to: `TEST_SOURCES` [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/workspace/mod.rs:55:35 [INFO] [stdout] | [INFO] [stdout] 55 | fix_dependency_issues(&package, &stats)?; [INFO] [stdout] | ^^^^^^^^ help: change this to: `package` [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: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.not_found.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:38 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.to_install.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/workspace/mod.rs:62:68 [INFO] [stdout] | [INFO] [stdout] 62 | stats.not_found.len() > 0 || stats.to_install.len() > 0 || stats.to_uninstall.len() > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stats.to_uninstall.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] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:132:22 [INFO] [stdout] | [INFO] [stdout] 132 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:137:22 [INFO] [stdout] | [INFO] [stdout] 137 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert_with` to construct default value [INFO] [stdout] --> src/workspace/mod.rs:146:22 [INFO] [stdout] | [INFO] [stdout] 146 | .or_insert_with(HashSet::new) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/workspace/mod.rs:169:5 [INFO] [stdout] | [INFO] [stdout] 169 | / if !commands_only && (!broken_only || not_found.is_some()) { [INFO] [stdout] 170 | | if to_install.is_some() || to_uninstall.is_some() || not_found.is_some() { [INFO] [stdout] 171 | | println!(""); [INFO] [stdout] 172 | | println!("Package: {}", package.0); [INFO] [stdout] 173 | | } [INFO] [stdout] 174 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 169 ~ if !commands_only && (!broken_only || not_found.is_some()) [INFO] [stdout] 170 ~ && (to_install.is_some() || to_uninstall.is_some() || not_found.is_some()) { [INFO] [stdout] 171 | println!(""); [INFO] [stdout] 172 | println!("Package: {}", package.0); [INFO] [stdout] 173 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/workspace/mod.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] = note: `#[warn(clippy::println_empty_string)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty string literal in `println!` [INFO] [stdout] --> src/workspace/mod.rs:203:13 [INFO] [stdout] | [INFO] [stdout] 203 | println!(""); [INFO] [stdout] | ^^^^^^^^^--^ [INFO] [stdout] | | [INFO] [stdout] | help: remove the empty string [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:207:17 [INFO] [stdout] | [INFO] [stdout] 207 | / not_found [INFO] [stdout] 208 | | .iter() [INFO] [stdout] 209 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 207 ~ not_found [INFO] [stdout] 208 + .iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/workspace/mod.rs:223:27 [INFO] [stdout] | [INFO] [stdout] 223 | let has_install = to_install.map_or(false, |set| !set.is_empty()); [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_some_and` instead [INFO] [stdout] | [INFO] [stdout] 223 - let has_install = to_install.map_or(false, |set| !set.is_empty()); [INFO] [stdout] 223 + let has_install = to_install.is_some_and(|set| !set.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/workspace/mod.rs:224:29 [INFO] [stdout] | [INFO] [stdout] 224 | let has_uninstall = to_uninstall.map_or(false, |set| !set.is_empty()); [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] 224 - let has_uninstall = to_uninstall.map_or(false, |set| !set.is_empty()); [INFO] [stdout] 224 + let has_uninstall = to_uninstall.is_some_and(|set| !set.is_empty()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/workspace/mod.rs:252:17 [INFO] [stdout] | [INFO] [stdout] 252 | "ragu check-deps -f", [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stdout] = note: `#[warn(clippy::print_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 250 ~ "{}ragu check-deps -f{}", [INFO] [stdout] 251 ~ "Run ".dimmed(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:265:26 [INFO] [stdout] | [INFO] [stdout] 265 | let to_install = to_install [INFO] [stdout] | __________________________^ [INFO] [stdout] 266 | | .into_iter() [INFO] [stdout] 267 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 265 ~ let to_install = to_install [INFO] [stdout] 266 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:266:14 [INFO] [stdout] | [INFO] [stdout] 266 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::path::PathBuf` [INFO] [stdout] --> src/workspace/mod.rs:270:14 [INFO] [stdout] | [INFO] [stdout] 270 | &PathBuf::from(Path::join(package.path.as_path(), "spago.yaml")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `Path::join(package.path.as_path(), "spago.yaml")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:276:28 [INFO] [stdout] | [INFO] [stdout] 276 | let to_uninstall = to_uninstall [INFO] [stdout] | ____________________________^ [INFO] [stdout] 277 | | .into_iter() [INFO] [stdout] 278 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 276 ~ let to_uninstall = to_uninstall [INFO] [stdout] 277 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:277:14 [INFO] [stdout] | [INFO] [stdout] 277 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `std::path::PathBuf` [INFO] [stdout] --> src/workspace/mod.rs:282:14 [INFO] [stdout] | [INFO] [stdout] 282 | &PathBuf::from(Path::join(package.path.as_path(), "spago.yaml")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `Path::join(package.path.as_path(), "spago.yaml")` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/workspace/mod.rs:288:25 [INFO] [stdout] | [INFO] [stdout] 288 | let not_found = not_found [INFO] [stdout] | _________________________^ [INFO] [stdout] 289 | | .into_iter() [INFO] [stdout] 290 | | .map(|p| p.clone()) [INFO] [stdout] | |_______________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 288 ~ let not_found = not_found [INFO] [stdout] 289 + .into_iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `HashSet` [INFO] [stdout] --> src/workspace/mod.rs:289:14 [INFO] [stdout] | [INFO] [stdout] 289 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 07s [INFO] running `Command { std: "docker" "inspect" "851f8c13645d3e30e47775ab4b3ef4de87f4328e119cd092f417ccbfc2e47638", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "851f8c13645d3e30e47775ab4b3ef4de87f4328e119cd092f417ccbfc2e47638", kill_on_drop: false }` [INFO] [stdout] 851f8c13645d3e30e47775ab4b3ef4de87f4328e119cd092f417ccbfc2e47638