[INFO] crate rget 0.3.1 is already in cache [INFO] extracting crate rget 0.3.1 into work/ex/clippy-test-run/sources/stable/reg/rget/0.3.1 [INFO] extracting crate rget 0.3.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rget/0.3.1 [INFO] validating manifest of rget-0.3.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 rget-0.3.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 rget-0.3.1 [INFO] finished frobbing rget-0.3.1 [INFO] frobbed toml for rget-0.3.1 written to work/ex/clippy-test-run/sources/stable/reg/rget/0.3.1/Cargo.toml [INFO] started frobbing rget-0.3.1 [INFO] finished frobbing rget-0.3.1 [INFO] frobbed toml for rget-0.3.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/rget/0.3.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 rget-0.3.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/rget/0.3.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] 86ad9512f377ab2522ebf0f3d0a61ebe3baa2e37bcaeba0393007821ea9f28b7 [INFO] running `"docker" "start" "-a" "86ad9512f377ab2522ebf0f3d0a61ebe3baa2e37bcaeba0393007821ea9f28b7"` [INFO] [stderr] Checking rget v0.3.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/network.rs:44:10 [INFO] [stderr] | [INFO] [stderr] 44 | parallel: parallel, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `parallel` [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/network.rs:45:10 [INFO] [stderr] | [INFO] [stderr] 45 | output: output [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `output` [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/network.rs:318:10 [INFO] [stderr] | [INFO] [stderr] 318 | parallel: parallel [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `parallel` [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/partial.rs:25:10 [INFO] [stderr] | [INFO] [stderr] 25 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/partial.rs:37:10 [INFO] [stderr] | [INFO] [stderr] 37 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/partial.rs:38:10 [INFO] [stderr] | [INFO] [stderr] 38 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/partial.rs:46:10 [INFO] [stderr] | [INFO] [stderr] 46 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/error.rs:38:10 [INFO] [stderr] | [INFO] [stderr] 38 | reason: reason [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reason` [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/network.rs:44:10 [INFO] [stderr] | [INFO] [stderr] 44 | parallel: parallel, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `parallel` [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/network.rs:45:10 [INFO] [stderr] | [INFO] [stderr] 45 | output: output [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `output` [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/network.rs:318:10 [INFO] [stderr] | [INFO] [stderr] 318 | parallel: parallel [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `parallel` [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/partial.rs:25:10 [INFO] [stderr] | [INFO] [stderr] 25 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/partial.rs:37:10 [INFO] [stderr] | [INFO] [stderr] 37 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/partial.rs:38:10 [INFO] [stderr] | [INFO] [stderr] 38 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/partial.rs:46:10 [INFO] [stderr] | [INFO] [stderr] 46 | path: path [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/error.rs:38:10 [INFO] [stderr] | [INFO] [stderr] 38 | reason: reason [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `reason` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/network.rs:227:7 [INFO] [stderr] | [INFO] [stderr] 227 | result [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/network.rs:188:20 [INFO] [stderr] | [INFO] [stderr] 188 | let result = match request.send() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 189 | | Ok(mut resp) => { [INFO] [stderr] 190 | | pb.message("Connected: "); [INFO] [stderr] 191 | | // FIXME: is this right/all? [INFO] [stderr] ... | [INFO] [stderr] 224 | | } [INFO] [stderr] 225 | | }; [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/network.rs:227:7 [INFO] [stderr] | [INFO] [stderr] 227 | result [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/network.rs:188:20 [INFO] [stderr] | [INFO] [stderr] 188 | let result = match request.send() { [INFO] [stderr] | ____________________^ [INFO] [stderr] 189 | | Ok(mut resp) => { [INFO] [stderr] 190 | | pb.message("Connected: "); [INFO] [stderr] 191 | | // FIXME: is this right/all? [INFO] [stderr] ... | [INFO] [stderr] 224 | | } [INFO] [stderr] 225 | | }; [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: length comparison to zero [INFO] [stderr] --> src/network.rs:131:10 [INFO] [stderr] | [INFO] [stderr] 131 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/network.rs:144:4 [INFO] [stderr] | [INFO] [stderr] 144 | / fn download_callback(part: u64, [INFO] [stderr] 145 | | mut pb: ProgressBar, [INFO] [stderr] 146 | | client: Arc, [INFO] [stderr] 147 | | url: Url, [INFO] [stderr] ... | [INFO] [stderr] 227 | | result [INFO] [stderr] 228 | | } [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/network.rs:131:10 [INFO] [stderr] | [INFO] [stderr] 131 | if errors.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!errors.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/network.rs:144:4 [INFO] [stderr] | [INFO] [stderr] 144 | / fn download_callback(part: u64, [INFO] [stderr] 145 | | mut pb: ProgressBar, [INFO] [stderr] 146 | | client: Arc, [INFO] [stderr] 147 | | url: Url, [INFO] [stderr] ... | [INFO] [stderr] 227 | | result [INFO] [stderr] 228 | | } [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/util.rs:13:49 [INFO] [stderr] | [INFO] [stderr] 13 | let mut file_ext = path.as_ref().extension().unwrap_or(OsStr::new("")).to_os_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| OsStr::new(""))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `output::StdOutputManager` [INFO] [stderr] --> src/output.rs:23:4 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> StdOutputManager { [INFO] [stderr] 24 | | StdOutputManager { [INFO] [stderr] 25 | | stdout: term::stdout().unwrap(), [INFO] [stderr] 26 | | stderr: term::stderr().unwrap() [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for output::StdOutputManager { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/util.rs:13:49 [INFO] [stderr] | [INFO] [stderr] 13 | let mut file_ext = path.as_ref().extension().unwrap_or(OsStr::new("")).to_os_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| OsStr::new(""))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `output::StdOutputManager` [INFO] [stderr] --> src/output.rs:23:4 [INFO] [stderr] | [INFO] [stderr] 23 | / pub fn new() -> StdOutputManager { [INFO] [stderr] 24 | | StdOutputManager { [INFO] [stderr] 25 | | stdout: term::stdout().unwrap(), [INFO] [stderr] 26 | | stderr: term::stderr().unwrap() [INFO] [stderr] 27 | | } [INFO] [stderr] 28 | | } [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for output::StdOutputManager { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:19:26 [INFO] [stderr] | [INFO] [stderr] 19 | const DEFAULT_PARALLEL: &'static str = "4"; [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:19:26 [INFO] [stderr] | [INFO] [stderr] 19 | const DEFAULT_PARALLEL: &'static str = "4"; [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/main.rs:46:11 [INFO] [stderr] | [INFO] [stderr] 46 | if let Some(_) = matches.subcommand_matches("validate") { [INFO] [stderr] | ____- ^^^^^^^ [INFO] [stderr] 47 | | unimplemented!(); [INFO] [stderr] 48 | | } else { [INFO] [stderr] 49 | | let mut downloader = Downloader::new(parallel); [INFO] [stderr] ... | [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |____- help: try this: `if matches.subcommand_matches("validate").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/main.rs:46:11 [INFO] [stderr] | [INFO] [stderr] 46 | if let Some(_) = matches.subcommand_matches("validate") { [INFO] [stderr] | ____- ^^^^^^^ [INFO] [stderr] 47 | | unimplemented!(); [INFO] [stderr] 48 | | } else { [INFO] [stderr] 49 | | let mut downloader = Downloader::new(parallel); [INFO] [stderr] ... | [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |____- help: try this: `if matches.subcommand_matches("validate").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.80s [INFO] running `"docker" "inspect" "86ad9512f377ab2522ebf0f3d0a61ebe3baa2e37bcaeba0393007821ea9f28b7"` [INFO] running `"docker" "rm" "-f" "86ad9512f377ab2522ebf0f3d0a61ebe3baa2e37bcaeba0393007821ea9f28b7"` [INFO] [stdout] 86ad9512f377ab2522ebf0f3d0a61ebe3baa2e37bcaeba0393007821ea9f28b7