[INFO] updating cached repository rharel/rust-squid-downloader [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/rharel/rust-squid-downloader [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/rharel/rust-squid-downloader" "work/ex/clippy-test-run/sources/stable/gh/rharel/rust-squid-downloader"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/rharel/rust-squid-downloader'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/rharel/rust-squid-downloader" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rharel/rust-squid-downloader"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rharel/rust-squid-downloader'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 324a2bc9f11432545bca211bfeddee688aa78bf2 [INFO] sha for GitHub repo rharel/rust-squid-downloader: 324a2bc9f11432545bca211bfeddee688aa78bf2 [INFO] validating manifest of rharel/rust-squid-downloader 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 rharel/rust-squid-downloader 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 rharel/rust-squid-downloader [INFO] finished frobbing rharel/rust-squid-downloader [INFO] frobbed toml for rharel/rust-squid-downloader written to work/ex/clippy-test-run/sources/stable/gh/rharel/rust-squid-downloader/Cargo.toml [INFO] started frobbing rharel/rust-squid-downloader [INFO] finished frobbing rharel/rust-squid-downloader [INFO] frobbed toml for rharel/rust-squid-downloader written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/rharel/rust-squid-downloader/Cargo.toml [INFO] crate rharel/rust-squid-downloader 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 rharel/rust-squid-downloader against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/rharel/rust-squid-downloader:/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] d52db3b4b611a1b4003f8d04f3e00e3afdc8226c3412298e328e1f22febae7af [INFO] running `"docker" "start" "-a" "d52db3b4b611a1b4003f8d04f3e00e3afdc8226c3412298e328e1f22febae7af"` [INFO] [stderr] Checking squid-downloader v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/download.rs:508:13 [INFO] [stderr] | [INFO] [stderr] 508 | / return Err(Error::Io(io::Error::new [INFO] [stderr] 509 | | ( [INFO] [stderr] 510 | | io::ErrorKind::NotFound, [INFO] [stderr] 511 | | "The specified path is either not a directory or does not exist." [INFO] [stderr] 512 | | ))); [INFO] [stderr] | |________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 508 | Err(Error::Io(io::Error::new [INFO] [stderr] 509 | ( [INFO] [stderr] 510 | io::ErrorKind::NotFound, [INFO] [stderr] 511 | "The specified path is either not a directory or does not exist." [INFO] [stderr] 512 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/download.rs:632:15 [INFO] [stderr] | [INFO] [stderr] 632 | while byte_range_start <= content_byte_count - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 632 | while byte_range_start < content_byte_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/download.rs:716:19 [INFO] [stderr] | [INFO] [stderr] 716 | while byte_range_start <= content_byte_count - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 716 | while byte_range_start < content_byte_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/download.rs:508:13 [INFO] [stderr] | [INFO] [stderr] 508 | / return Err(Error::Io(io::Error::new [INFO] [stderr] 509 | | ( [INFO] [stderr] 510 | | io::ErrorKind::NotFound, [INFO] [stderr] 511 | | "The specified path is either not a directory or does not exist." [INFO] [stderr] 512 | | ))); [INFO] [stderr] | |________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 508 | Err(Error::Io(io::Error::new [INFO] [stderr] 509 | ( [INFO] [stderr] 510 | io::ErrorKind::NotFound, [INFO] [stderr] 511 | "The specified path is either not a directory or does not exist." [INFO] [stderr] 512 | ))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/download.rs:632:15 [INFO] [stderr] | [INFO] [stderr] 632 | while byte_range_start <= content_byte_count - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 632 | while byte_range_start < content_byte_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/download.rs:716:19 [INFO] [stderr] | [INFO] [stderr] 716 | while byte_range_start <= content_byte_count - 1 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 716 | while byte_range_start < content_byte_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/download.rs:423:14 [INFO] [stderr] | [INFO] [stderr] 423 | .ok_or(Error::MissingResponseHeader("Content-Length".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::MissingResponseHeader("Content-Length".to_string()))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/download.rs:475:28 [INFO] [stderr] | [INFO] [stderr] 475 | if !path.ends_with("/") { path.push_str("/"); } [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/download.rs:524:50 [INFO] [stderr] | [INFO] [stderr] 524 | fn extract_content_length(&mut self, header: &header::ContentLength) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider passing by value instead: `header::ContentLength` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/download.rs:546:13 [INFO] [stderr] | [INFO] [stderr] 546 | / if let &header::DispositionParam::Filename(_, _, ref bytes) = item [INFO] [stderr] 547 | | { [INFO] [stderr] 548 | | self.target_file_name = String::from_utf8(bytes.clone()).ok(); [INFO] [stderr] 549 | | return true; [INFO] [stderr] 550 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 546 | if let header::DispositionParam::Filename(_, _, ref bytes) = *item [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:587:33 [INFO] [stderr] | [INFO] [stderr] 587 | content_byte_range: 0..(byte_range_end + 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:650:36 [INFO] [stderr] | [INFO] [stderr] 650 | content_byte_range: byte_range_start..(byte_range_end + 1), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `byte_range_start..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:816:45 [INFO] [stderr] | [INFO] [stderr] 816 | content_byte_range: byte_range_start..(byte_range_end + 1), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `byte_range_start..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/download.rs:423:14 [INFO] [stderr] | [INFO] [stderr] 423 | .ok_or(Error::MissingResponseHeader("Content-Length".to_string())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::MissingResponseHeader("Content-Length".to_string()))` [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: single-character string constant used as pattern [INFO] [stderr] --> src/download.rs:475:28 [INFO] [stderr] | [INFO] [stderr] 475 | if !path.ends_with("/") { path.push_str("/"); } [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/download.rs:524:50 [INFO] [stderr] | [INFO] [stderr] 524 | fn extract_content_length(&mut self, header: &header::ContentLength) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider passing by value instead: `header::ContentLength` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/download.rs:546:13 [INFO] [stderr] | [INFO] [stderr] 546 | / if let &header::DispositionParam::Filename(_, _, ref bytes) = item [INFO] [stderr] 547 | | { [INFO] [stderr] 548 | | self.target_file_name = String::from_utf8(bytes.clone()).ok(); [INFO] [stderr] 549 | | return true; [INFO] [stderr] 550 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 546 | if let header::DispositionParam::Filename(_, _, ref bytes) = *item [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:587:33 [INFO] [stderr] | [INFO] [stderr] 587 | content_byte_range: 0..(byte_range_end + 1) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:650:36 [INFO] [stderr] | [INFO] [stderr] 650 | content_byte_range: byte_range_start..(byte_range_end + 1), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `byte_range_start..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/download.rs:816:45 [INFO] [stderr] | [INFO] [stderr] 816 | content_byte_range: byte_range_start..(byte_range_end + 1), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `byte_range_start..=byte_range_end` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / fn begin_download<'a>(task: &'a mut download::Task, be_verbose: bool) [INFO] [stderr] 50 | | -> Result<&'a str, download::Error> [INFO] [stderr] 51 | | { [INFO] [stderr] 52 | | if be_verbose [INFO] [stderr] ... | [INFO] [stderr] 91 | | result [INFO] [stderr] 92 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / fn begin_download<'a>(task: &'a mut download::Task, be_verbose: bool) [INFO] [stderr] 50 | | -> Result<&'a str, download::Error> [INFO] [stderr] 51 | | { [INFO] [stderr] 52 | | if be_verbose [INFO] [stderr] ... | [INFO] [stderr] 91 | | result [INFO] [stderr] 92 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.14s [INFO] running `"docker" "inspect" "d52db3b4b611a1b4003f8d04f3e00e3afdc8226c3412298e328e1f22febae7af"` [INFO] running `"docker" "rm" "-f" "d52db3b4b611a1b4003f8d04f3e00e3afdc8226c3412298e328e1f22febae7af"` [INFO] [stdout] d52db3b4b611a1b4003f8d04f3e00e3afdc8226c3412298e328e1f22febae7af