[INFO] updating cached repository zikani03/git-down [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/zikani03/git-down [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/zikani03/git-down" "work/ex/clippy-test-run/sources/stable/gh/zikani03/git-down"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/zikani03/git-down'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/zikani03/git-down" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zikani03/git-down"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zikani03/git-down'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 8612a59cb8e4beaf467ec900dd5b4afdbfe36da0 [INFO] sha for GitHub repo zikani03/git-down: 8612a59cb8e4beaf467ec900dd5b4afdbfe36da0 [INFO] validating manifest of zikani03/git-down 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 zikani03/git-down 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 zikani03/git-down [INFO] finished frobbing zikani03/git-down [INFO] frobbed toml for zikani03/git-down written to work/ex/clippy-test-run/sources/stable/gh/zikani03/git-down/Cargo.toml [INFO] started frobbing zikani03/git-down [INFO] finished frobbing zikani03/git-down [INFO] frobbed toml for zikani03/git-down written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/zikani03/git-down/Cargo.toml [INFO] crate zikani03/git-down has a lockfile. skipping [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 zikani03/git-down against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/zikani03/git-down:/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] 70cba7ec23ccd42abbba5fb83e9eb85c55ce6e086fe5ce056ab35ee1f3a0c344 [INFO] running `"docker" "start" "-a" "70cba7ec23ccd42abbba5fb83e9eb85c55ce6e086fe5ce056ab35ee1f3a0c344"` [INFO] [stderr] Checking git-down v0.2.0-beta (/opt/crater/workdir) [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | const COLON: &'static str = ":"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | const DOT_GIT: &'static str = ".git"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | git_dir [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:133:19 [INFO] [stderr] | [INFO] [stderr] 133 | let git_dir = GitDir { [INFO] [stderr] | ___________________^ [INFO] [stderr] 134 | | repo_name: parts[1].to_string(), [INFO] [stderr] 135 | | repo_url: url, [INFO] [stderr] 136 | | dirs: parse_dirs(parts[2]) [INFO] [stderr] 137 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | const COLON: &'static str = ":"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | const DOT_GIT: &'static str = ".git"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/main.rs:138:5 [INFO] [stderr] | [INFO] [stderr] 138 | git_dir [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/main.rs:133:19 [INFO] [stderr] | [INFO] [stderr] 133 | let git_dir = GitDir { [INFO] [stderr] | ___________________^ [INFO] [stderr] 134 | | repo_name: parts[1].to_string(), [INFO] [stderr] 135 | | repo_url: url, [INFO] [stderr] 136 | | dirs: parse_dirs(parts[2]) [INFO] [stderr] 137 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: value assigned to `pos` is never read [INFO] [stderr] --> src/main.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | let mut pos = 0; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `pos` is never read [INFO] [stderr] --> src/main.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | let mut pos = 0; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | Err(_) => { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / if exit_code.success() { [INFO] [stderr] 94 | | true [INFO] [stderr] 95 | | } else { [INFO] [stderr] 96 | | false [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `exit_code.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / match source_uri.rfind(COLON) { [INFO] [stderr] 104 | | Some(n) => { [INFO] [stderr] 105 | | colon_pos = n; [INFO] [stderr] 106 | | }, [INFO] [stderr] 107 | | None => (), [INFO] [stderr] 108 | | }; [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] 103 | if let Some(n) = source_uri.rfind(COLON) { [INFO] [stderr] 104 | colon_pos = n; [INFO] [stderr] 105 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:119:22 [INFO] [stderr] | [INFO] [stderr] 119 | fn from_shortcut_url<'a>(shortcut_composite: &str) -> GitDir { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | Err(_) => { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | / if exit_code.success() { [INFO] [stderr] 94 | | true [INFO] [stderr] 95 | | } else { [INFO] [stderr] 96 | | false [INFO] [stderr] 97 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `exit_code.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:103:5 [INFO] [stderr] | [INFO] [stderr] 103 | / match source_uri.rfind(COLON) { [INFO] [stderr] 104 | | Some(n) => { [INFO] [stderr] 105 | | colon_pos = n; [INFO] [stderr] 106 | | }, [INFO] [stderr] 107 | | None => (), [INFO] [stderr] 108 | | }; [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] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | fn from_url<'a>(url_composite: &str) -> GitDir { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:162:31 [INFO] [stderr] | [INFO] [stderr] 162 | let pos_slash = url.rfind("/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:180:39 [INFO] [stderr] | [INFO] [stderr] 180 | let dirs: Vec<_> = dir_spec.split("+") [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:225:10 [INFO] [stderr] | [INFO] [stderr] 225 | .expect(&format!("Failed to copy files to directory. Find the files here: {}.", [INFO] [stderr] | __________^ [INFO] [stderr] 226 | | source.display())); [INFO] [stderr] | |___________________________________________^ help: try this: `unwrap_or_else(|_| panic!("Failed to copy files to directory. Find the files here: {}.", source.display()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 103 | if let Some(n) = source_uri.rfind(COLON) { [INFO] [stderr] 104 | colon_pos = n; [INFO] [stderr] 105 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:119:22 [INFO] [stderr] | [INFO] [stderr] 119 | fn from_shortcut_url<'a>(shortcut_composite: &str) -> GitDir { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:142:13 [INFO] [stderr] | [INFO] [stderr] 142 | fn from_url<'a>(url_composite: &str) -> GitDir { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:162:31 [INFO] [stderr] | [INFO] [stderr] 162 | let pos_slash = url.rfind("/"); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:180:39 [INFO] [stderr] | [INFO] [stderr] 180 | let dirs: Vec<_> = dir_spec.split("+") [INFO] [stderr] | ^^^ help: try using a char instead: `'+'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:242:18 [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(repo.clone()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:225:10 [INFO] [stderr] | [INFO] [stderr] 225 | .expect(&format!("Failed to copy files to directory. Find the files here: {}.", [INFO] [stderr] | __________^ [INFO] [stderr] 226 | | source.display())); [INFO] [stderr] | [INFO] [stderr] | |___________________________________________^ help: try this: `unwrap_or_else(|_| panic!("Failed to copy files to directory. Find the files here: {}.", source.display()))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(&(*repo).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/main.rs:242:18 [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(repo.clone()); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(&(*repo).clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(&str::clone(repo)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 242 | url.push_str(&str::clone(repo)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `git-down`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `git-down`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "70cba7ec23ccd42abbba5fb83e9eb85c55ce6e086fe5ce056ab35ee1f3a0c344"` [INFO] running `"docker" "rm" "-f" "70cba7ec23ccd42abbba5fb83e9eb85c55ce6e086fe5ce056ab35ee1f3a0c344"` [INFO] [stdout] 70cba7ec23ccd42abbba5fb83e9eb85c55ce6e086fe5ce056ab35ee1f3a0c344