[INFO] crate dotfiles-manager 0.0.1 is already in cache [INFO] extracting crate dotfiles-manager 0.0.1 into work/ex/clippy-test-run/sources/stable/reg/dotfiles-manager/0.0.1 [INFO] extracting crate dotfiles-manager 0.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dotfiles-manager/0.0.1 [INFO] validating manifest of dotfiles-manager-0.0.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of dotfiles-manager-0.0.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing dotfiles-manager-0.0.1 [INFO] finished frobbing dotfiles-manager-0.0.1 [INFO] frobbed toml for dotfiles-manager-0.0.1 written to work/ex/clippy-test-run/sources/stable/reg/dotfiles-manager/0.0.1/Cargo.toml [INFO] started frobbing dotfiles-manager-0.0.1 [INFO] finished frobbing dotfiles-manager-0.0.1 [INFO] frobbed toml for dotfiles-manager-0.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/dotfiles-manager/0.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting dotfiles-manager-0.0.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/dotfiles-manager/0.0.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 37219d08300befe95feb89d4e68af0b2e51a8b1a5cfd71f283cf8a5e6aa146ed [INFO] running `"docker" "start" "-a" "37219d08300befe95feb89d4e68af0b2e51a8b1a5cfd71f283cf8a5e6aa146ed"` [INFO] [stderr] Checking dotfiles-manager v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | target_dir: target_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | add_args: add_args, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `add_args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/runner.rs:38:18 [INFO] [stderr] | [INFO] [stderr] 38 | Runner { args: args } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/file_ops.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | FS { force: force } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `force` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | dir: dir, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `dir` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:108:9 [INFO] [stderr] | [INFO] [stderr] 108 | target_dir: target_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | hostname: hostname, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `hostname` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/args.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | add_args: add_args, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `add_args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/runner.rs:38:18 [INFO] [stderr] | [INFO] [stderr] 38 | Runner { args: args } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `args` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/file_ops.rs:11:14 [INFO] [stderr] | [INFO] [stderr] 11 | FS { force: force } [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `force` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | / if !args.no_confirm && !args.test { [INFO] [stderr] 58 | | if !ask("Continue?") { [INFO] [stderr] 59 | | println!(":: Aborting installation of {:?}", package1); [INFO] [stderr] 60 | | continue; [INFO] [stderr] 61 | | } [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 57 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 58 | println!(":: Aborting installation of {:?}", package1); [INFO] [stderr] 59 | continue; [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:215:13 [INFO] [stderr] | [INFO] [stderr] 215 | / if !args.no_confirm && !args.test { [INFO] [stderr] 216 | | if !ask("Continue?") { [INFO] [stderr] 217 | | println!(":: Aborting removal of {:?}", package1); [INFO] [stderr] 218 | | continue; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 215 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 216 | println!(":: Aborting removal of {:?}", package1); [INFO] [stderr] 217 | continue; [INFO] [stderr] 218 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:302:25 [INFO] [stderr] | [INFO] [stderr] 302 | / if !path.starts_with(&package_base) { [INFO] [stderr] 303 | | if !args.force { [INFO] [stderr] 304 | | println!( [INFO] [stderr] 305 | | ":: Existing file does not point to package base, not removing.\n --> {:?}", [INFO] [stderr] ... | [INFO] [stderr] 309 | | } [INFO] [stderr] 310 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 302 | if !path.starts_with(&package_base) && !args.force { [INFO] [stderr] 303 | println!( [INFO] [stderr] 304 | ":: Existing file does not point to package base, not removing.\n --> {:?}", [INFO] [stderr] 305 | &dest [INFO] [stderr] 306 | ); [INFO] [stderr] 307 | continue; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:461:13 [INFO] [stderr] | [INFO] [stderr] 461 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:463:13 [INFO] [stderr] | [INFO] [stderr] 463 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:401:9 [INFO] [stderr] | [INFO] [stderr] 401 | / if !args.no_confirm && !args.test { [INFO] [stderr] 402 | | if !ask("Continue?") { [INFO] [stderr] 403 | | println!(":: Aborting add operation."); [INFO] [stderr] 404 | | return true; [INFO] [stderr] 405 | | } [INFO] [stderr] 406 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 401 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 402 | println!(":: Aborting add operation."); [INFO] [stderr] 403 | return true; [INFO] [stderr] 404 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hooks.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:69:26 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(_) => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | return dir.as_ref().is_dir(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dir.as_ref().is_dir()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | return fs::create_dir_all(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::create_dir_all(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | return fs::remove_dir_all(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::remove_dir_all(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | return fs::remove_file(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::remove_file(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | return fs::rename(old, new); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::rename(old, new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | return path.exists(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `path.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/args.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/args.rs:328:20 [INFO] [stderr] | [INFO] [stderr] 328 | assert_eq!((&add_args).host_specific, true); [INFO] [stderr] | ^^^^^^^^^^^ help: try this: `add_args.host_specific` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ref_in_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/args.rs:329:20 [INFO] [stderr] | [INFO] [stderr] 329 | assert_eq!((&add_args).filename, file); [INFO] [stderr] | ^^^^^^^^^^^ help: try this: `add_args.filename` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/args.rs:330:20 [INFO] [stderr] | [INFO] [stderr] 330 | assert_eq!((&add_args).package, "zsh"); [INFO] [stderr] | ^^^^^^^^^^^ help: try this: `add_args.package` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: Creating a reference that is immediately dereferenced. [INFO] [stderr] --> src/args.rs:368:20 [INFO] [stderr] | [INFO] [stderr] 368 | assert_eq!((&add_args).host_specific, false); [INFO] [stderr] | ^^^^^^^^^^^ help: try this: `add_args.host_specific` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ref_in_deref [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | / if !args.no_confirm && !args.test { [INFO] [stderr] 58 | | if !ask("Continue?") { [INFO] [stderr] 59 | | println!(":: Aborting installation of {:?}", package1); [INFO] [stderr] 60 | | continue; [INFO] [stderr] 61 | | } [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 57 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 58 | println!(":: Aborting installation of {:?}", package1); [INFO] [stderr] 59 | continue; [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:215:13 [INFO] [stderr] | [INFO] [stderr] 215 | / if !args.no_confirm && !args.test { [INFO] [stderr] 216 | | if !ask("Continue?") { [INFO] [stderr] 217 | | println!(":: Aborting removal of {:?}", package1); [INFO] [stderr] 218 | | continue; [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 215 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 216 | println!(":: Aborting removal of {:?}", package1); [INFO] [stderr] 217 | continue; [INFO] [stderr] 218 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:302:25 [INFO] [stderr] | [INFO] [stderr] 302 | / if !path.starts_with(&package_base) { [INFO] [stderr] 303 | | if !args.force { [INFO] [stderr] 304 | | println!( [INFO] [stderr] 305 | | ":: Existing file does not point to package base, not removing.\n --> {:?}", [INFO] [stderr] ... | [INFO] [stderr] 309 | | } [INFO] [stderr] 310 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 302 | if !path.starts_with(&package_base) && !args.force { [INFO] [stderr] 303 | println!( [INFO] [stderr] 304 | ":: Existing file does not point to package base, not removing.\n --> {:?}", [INFO] [stderr] 305 | &dest [INFO] [stderr] 306 | ); [INFO] [stderr] 307 | continue; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:461:13 [INFO] [stderr] | [INFO] [stderr] 461 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/runner.rs:463:13 [INFO] [stderr] | [INFO] [stderr] 463 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/runner.rs:401:9 [INFO] [stderr] | [INFO] [stderr] 401 | / if !args.no_confirm && !args.test { [INFO] [stderr] 402 | | if !ask("Continue?") { [INFO] [stderr] 403 | | println!(":: Aborting add operation."); [INFO] [stderr] 404 | | return true; [INFO] [stderr] 405 | | } [INFO] [stderr] 406 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 401 | if !args.no_confirm && !args.test && !ask("Continue?") { [INFO] [stderr] 402 | println!(":: Aborting add operation."); [INFO] [stderr] 403 | return true; [INFO] [stderr] 404 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/hooks.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:69:26 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(_) => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | return dir.as_ref().is_dir(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dir.as_ref().is_dir()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | return fs::create_dir_all(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::create_dir_all(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:90:9 [INFO] [stderr] | [INFO] [stderr] 90 | return fs::remove_dir_all(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::remove_dir_all(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:94:9 [INFO] [stderr] | [INFO] [stderr] 94 | return fs::remove_file(dir); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::remove_file(dir)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | return fs::rename(old, new); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `fs::rename(old, new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/file_ops.rs:140:9 [INFO] [stderr] | [INFO] [stderr] 140 | return path.exists(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `path.exists()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/args.rs:58:19 [INFO] [stderr] | [INFO] [stderr] 58 | match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/args.rs:291:37 [INFO] [stderr] | [INFO] [stderr] 291 | assert_eq!(args.target_dir, env::home_dir().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/args.rs:59:31 [INFO] [stderr] | [INFO] [stderr] 59 | Some(path) => PathBuf::from(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | / let mut host_files: Vec = vec![]; [INFO] [stderr] 111 | | [INFO] [stderr] 112 | | if f.dir_exists(&host_files_base) { [INFO] [stderr] 113 | | [INFO] [stderr] ... | [INFO] [stderr] 132 | | host_files = f.get_files_to_symlink(&host_files_base); [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let host_files = if f.dir_exists(&host_files_base) { ..; f.get_files_to_symlink(&host_files_base) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/runner.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / if !dests.contains_key(&dest) { [INFO] [stderr] 153 | | dests.insert(dest, file.clone()); [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________________^ help: consider using: `dests.entry(dest).or_insert(file.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | / let mut host_files: Vec = vec![]; [INFO] [stderr] 249 | | [INFO] [stderr] 250 | | if f.dir_exists(&host_files_base) { [INFO] [stderr] 251 | | [INFO] [stderr] ... | [INFO] [stderr] 266 | | host_files = f.get_files_to_symlink(&host_files_base); [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let host_files = if f.dir_exists(&host_files_base) { ..; f.get_files_to_symlink(&host_files_base) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:320:21 [INFO] [stderr] | [INFO] [stderr] 320 | / let res; [INFO] [stderr] 321 | | if dest.is_dir() { [INFO] [stderr] 322 | | res = f.remove_dir_all(&dest); [INFO] [stderr] 323 | | } else { [INFO] [stderr] 324 | | res = f.remove_file(&dest); [INFO] [stderr] 325 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let res = if dest.is_dir() { f.remove_dir_all(&dest) } else { f.remove_file(&dest) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/runner.rs:363:24 [INFO] [stderr] | [INFO] [stderr] 363 | let add_args = match &self.args.add_args { [INFO] [stderr] | ________________________^ [INFO] [stderr] 364 | | &Some(ref args) => args, [INFO] [stderr] 365 | | _ => panic!("should never happen"), [INFO] [stderr] 366 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 363 | let add_args = match self.args.add_args { [INFO] [stderr] 364 | Some(ref args) => args, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:417:21 [INFO] [stderr] | [INFO] [stderr] 417 | / let res; [INFO] [stderr] 418 | | if target.is_dir() { [INFO] [stderr] 419 | | res = f.remove_dir_all(&target); [INFO] [stderr] 420 | | } else { [INFO] [stderr] 421 | | res = f.remove_file(&target); [INFO] [stderr] 422 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let res = if target.is_dir() { f.remove_dir_all(&target) } else { f.remove_file(&target) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/runner.rs:460:9 [INFO] [stderr] | [INFO] [stderr] 460 | / if success { [INFO] [stderr] 461 | | return true; [INFO] [stderr] 462 | | } else { [INFO] [stderr] 463 | | return false; [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `return success` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/hooks.rs:59:20 [INFO] [stderr] | [INFO] [stderr] 59 | let path = hooks_files.get(file_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&hooks_files[file_name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | / match fs::canonicalize(&link) { [INFO] [stderr] 22 | | Ok(_) => { [INFO] [stderr] 23 | | if link.is_file() { [INFO] [stderr] 24 | | println!(":: Removing existing file: {:?}", link); [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => (), [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 21 | if let Ok(_) = fs::canonicalize(&link) { [INFO] [stderr] 22 | if link.is_file() { [INFO] [stderr] 23 | println!(":: Removing existing file: {:?}", link); [INFO] [stderr] 24 | [INFO] [stderr] 25 | if !simulate { [INFO] [stderr] 26 | let result = fs::remove_file(&link); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:28:29 [INFO] [stderr] | [INFO] [stderr] 28 | / match result { [INFO] [stderr] 29 | | Err(msg) => { [INFO] [stderr] 30 | | println!(":: Failed to remove file: {}", msg); [INFO] [stderr] 31 | | return false; [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | _ => (), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | if let Err(msg) = result { [INFO] [stderr] 29 | println!(":: Failed to remove file: {}", msg); [INFO] [stderr] 30 | return false; [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:41:29 [INFO] [stderr] | [INFO] [stderr] 41 | / match result { [INFO] [stderr] 42 | | Err(msg) => { [INFO] [stderr] 43 | | println!(":: Failed to remove directory: {}", msg); [INFO] [stderr] 44 | | return false; [INFO] [stderr] 45 | | } [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 41 | if let Err(msg) = result { [INFO] [stderr] 42 | println!(":: Failed to remove directory: {}", msg); [INFO] [stderr] 43 | return false; [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | / match fs::canonicalize(&link) { [INFO] [stderr] 55 | | Ok(file) => { [INFO] [stderr] 56 | | if &file == target { [INFO] [stderr] 57 | | println!(":: Skipping existing link: {:?}", link); [INFO] [stderr] ... | [INFO] [stderr] 61 | | _ => (), [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 54 | if let Ok(file) = fs::canonicalize(&link) { [INFO] [stderr] 55 | if &file == target { [INFO] [stderr] 56 | println!(":: Skipping existing link: {:?}", link); [INFO] [stderr] 57 | return true; [INFO] [stderr] 58 | } [INFO] [stderr] 59 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/args.rs:59:31 [INFO] [stderr] | [INFO] [stderr] 59 | Some(path) => PathBuf::from(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `path` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/args.rs:189:17 [INFO] [stderr] | [INFO] [stderr] 189 | assert!(args.hostname.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.hostname.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | / let mut host_files: Vec = vec![]; [INFO] [stderr] 111 | | [INFO] [stderr] 112 | | if f.dir_exists(&host_files_base) { [INFO] [stderr] 113 | | [INFO] [stderr] ... | [INFO] [stderr] 132 | | host_files = f.get_files_to_symlink(&host_files_base); [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let host_files = if f.dir_exists(&host_files_base) { ..; f.get_files_to_symlink(&host_files_base) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/runner.rs:152:17 [INFO] [stderr] | [INFO] [stderr] 152 | / if !dests.contains_key(&dest) { [INFO] [stderr] 153 | | dests.insert(dest, file.clone()); [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________________^ help: consider using: `dests.entry(dest).or_insert(file.clone())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:248:13 [INFO] [stderr] | [INFO] [stderr] 248 | / let mut host_files: Vec = vec![]; [INFO] [stderr] 249 | | [INFO] [stderr] 250 | | if f.dir_exists(&host_files_base) { [INFO] [stderr] 251 | | [INFO] [stderr] ... | [INFO] [stderr] 266 | | host_files = f.get_files_to_symlink(&host_files_base); [INFO] [stderr] 267 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let host_files = if f.dir_exists(&host_files_base) { ..; f.get_files_to_symlink(&host_files_base) } else { < [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] ) };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:320:21 [INFO] [stderr] | [INFO] [stderr] 320 | / let res; [INFO] [stderr] 321 | | if dest.is_dir() { [INFO] [stderr] 322 | | res = f.remove_dir_all(&dest); [INFO] [stderr] 323 | | } else { [INFO] [stderr] 324 | | res = f.remove_file(&dest); [INFO] [stderr] 325 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let res = if dest.is_dir() { f.remove_dir_all(&dest) } else { f.remove_file(&dest) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/runner.rs:363:24 [INFO] [stderr] | [INFO] [stderr] 363 | let add_args = match &self.args.add_args { [INFO] [stderr] | ________________________^ [INFO] [stderr] 364 | | &Some(ref args) => args, [INFO] [stderr] 365 | | _ => panic!("should never happen"), [INFO] [stderr] 366 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 363 | let add_args = match self.args.add_args { [INFO] [stderr] 364 | Some(ref args) => args, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/runner.rs:417:21 [INFO] [stderr] | [INFO] [stderr] 417 | / let res; [INFO] [stderr] 418 | | if target.is_dir() { [INFO] [stderr] 419 | | res = f.remove_dir_all(&target); [INFO] [stderr] 420 | | } else { [INFO] [stderr] 421 | | res = f.remove_file(&target); [INFO] [stderr] 422 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let res = if target.is_dir() { f.remove_dir_all(&target) } else { f.remove_file(&target) };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/runner.rs:460:9 [INFO] [stderr] | [INFO] [stderr] 460 | / if success { [INFO] [stderr] 461 | | return true; [INFO] [stderr] 462 | | } else { [INFO] [stderr] 463 | | return false; [INFO] [stderr] 464 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `return success` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/hooks.rs:59:20 [INFO] [stderr] | [INFO] [stderr] 59 | let path = hooks_files.get(file_name).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&hooks_files[file_name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | / match fs::canonicalize(&link) { [INFO] [stderr] 22 | | Ok(_) => { [INFO] [stderr] 23 | | if link.is_file() { [INFO] [stderr] 24 | | println!(":: Removing existing file: {:?}", link); [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => (), [INFO] [stderr] 52 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 21 | if let Ok(_) = fs::canonicalize(&link) { [INFO] [stderr] 22 | if link.is_file() { [INFO] [stderr] 23 | println!(":: Removing existing file: {:?}", link); [INFO] [stderr] 24 | [INFO] [stderr] 25 | if !simulate { [INFO] [stderr] 26 | let result = fs::remove_file(&link); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:28:29 [INFO] [stderr] | [INFO] [stderr] 28 | / match result { [INFO] [stderr] 29 | | Err(msg) => { [INFO] [stderr] 30 | | println!(":: Failed to remove file: {}", msg); [INFO] [stderr] 31 | | return false; [INFO] [stderr] 32 | | } [INFO] [stderr] 33 | | _ => (), [INFO] [stderr] 34 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 28 | if let Err(msg) = result { [INFO] [stderr] 29 | println!(":: Failed to remove file: {}", msg); [INFO] [stderr] 30 | return false; [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:41:29 [INFO] [stderr] | [INFO] [stderr] 41 | / match result { [INFO] [stderr] 42 | | Err(msg) => { [INFO] [stderr] 43 | | println!(":: Failed to remove directory: {}", msg); [INFO] [stderr] 44 | | return false; [INFO] [stderr] 45 | | } [INFO] [stderr] 46 | | _ => (), [INFO] [stderr] 47 | | } [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 41 | if let Err(msg) = result { [INFO] [stderr] 42 | println!(":: Failed to remove directory: {}", msg); [INFO] [stderr] 43 | return false; [INFO] [stderr] 44 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/file_ops.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | / match fs::canonicalize(&link) { [INFO] [stderr] 55 | | Ok(file) => { [INFO] [stderr] 56 | | if &file == target { [INFO] [stderr] 57 | | println!(":: Skipping existing link: {:?}", link); [INFO] [stderr] ... | [INFO] [stderr] 61 | | _ => (), [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 54 | if let Ok(file) = fs::canonicalize(&link) { [INFO] [stderr] 55 | if &file == target { [INFO] [stderr] 56 | println!(":: Skipping existing link: {:?}", link); [INFO] [stderr] 57 | return true; [INFO] [stderr] 58 | } [INFO] [stderr] 59 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.91s [INFO] running `"docker" "inspect" "37219d08300befe95feb89d4e68af0b2e51a8b1a5cfd71f283cf8a5e6aa146ed"` [INFO] running `"docker" "rm" "-f" "37219d08300befe95feb89d4e68af0b2e51a8b1a5cfd71f283cf8a5e6aa146ed"` [INFO] [stdout] 37219d08300befe95feb89d4e68af0b2e51a8b1a5cfd71f283cf8a5e6aa146ed