[INFO] updating cached repository scottlamb/http-serve [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/scottlamb/http-serve [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/scottlamb/http-serve" "work/ex/clippy-test-run/sources/stable/gh/scottlamb/http-serve"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/scottlamb/http-serve'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/scottlamb/http-serve" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scottlamb/http-serve"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scottlamb/http-serve'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 90ef56f61902ee1a1267cd473c3e45e39cb0cfa9 [INFO] sha for GitHub repo scottlamb/http-serve: 90ef56f61902ee1a1267cd473c3e45e39cb0cfa9 [INFO] validating manifest of scottlamb/http-serve 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 scottlamb/http-serve 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 scottlamb/http-serve [INFO] finished frobbing scottlamb/http-serve [INFO] frobbed toml for scottlamb/http-serve written to work/ex/clippy-test-run/sources/stable/gh/scottlamb/http-serve/Cargo.toml [INFO] started frobbing scottlamb/http-serve [INFO] finished frobbing scottlamb/http-serve [INFO] frobbed toml for scottlamb/http-serve written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/scottlamb/http-serve/Cargo.toml [INFO] crate scottlamb/http-serve 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 scottlamb/http-serve 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/gh/scottlamb/http-serve:/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] d4030b3cb115cf86ed16e2677642b039f961507a6732a4182e9d0e730a3f3cab [INFO] running `"docker" "start" "-a" "d4030b3cb115cf86ed16e2677642b039f961507a6732a4182e9d0e730a3f3cab"` [INFO] [stderr] Checking same-file v1.0.4 [INFO] [stderr] Checking httpdate v0.3.2 [INFO] [stderr] Checking leak v0.1.2 [INFO] [stderr] Checking want v0.0.6 [INFO] [stderr] Checking criterion-plot v0.2.5 [INFO] [stderr] Checking encoding_rs v0.8.10 [INFO] [stderr] Checking memchr v2.1.1 [INFO] [stderr] Checking openssl-sys v0.9.39 [INFO] [stderr] Checking criterion-stats v0.2.5 [INFO] [stderr] Checking itertools-num v0.1.2 [INFO] [stderr] Compiling syn v0.15.16 [INFO] [stderr] Checking flate2 v1.0.4 [INFO] [stderr] Checking walkdir v2.2.6 [INFO] [stderr] Checking libflate v0.1.18 [INFO] [stderr] Checking aho-corasick v0.6.9 [INFO] [stderr] Checking csv-core v0.1.4 [INFO] [stderr] Checking simplelog v0.5.3 [INFO] [stderr] Checking openssl v0.10.15 [INFO] [stderr] Checking hyper v0.12.13 [INFO] [stderr] Checking csv v1.0.2 [INFO] [stderr] Checking regex v1.0.5 [INFO] [stderr] Checking handlebars v0.32.4 [INFO] [stderr] Checking env_logger v0.5.13 [INFO] [stderr] Checking native-tls v0.2.2 [INFO] [stderr] Compiling synstructure v0.10.1 [INFO] [stderr] Compiling serde_derive v1.0.80 [INFO] [stderr] Checking hyper-tls v0.3.1 [INFO] [stderr] Checking http-serve v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/file.rs:69:17 [INFO] [stderr] | [INFO] [stderr] 69 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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] Compiling failure_derive v0.1.3 [INFO] [stderr] Checking reqwest v0.9.4 [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/etag.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | return Some(etag); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(etag)` [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/range.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | return ResolvedRanges::NotSatisfiable; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ResolvedRanges::NotSatisfiable` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serving.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | const ERR: &'static str = "Unparseable If-Unmodified-Since"; [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/serving.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | const ERR: &'static str = "Unparseable If-Modified-Since"; [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/chunker.rs:92:20 [INFO] [stderr] | [INFO] [stderr] 92 | if let Err(_) = self.sender.unbounded_send(Ok(full_buf.into())) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 93 | | // If this error is returned, no further writes will succeed either. [INFO] [stderr] 94 | | // Therefore, it's acceptable to just drop the full_buf (now e.into_inner()) [INFO] [stderr] 95 | | // rather than put it back as self.buf; it won't cause us to write a stream with [INFO] [stderr] ... | [INFO] [stderr] 100 | | )); [INFO] [stderr] 101 | | } [INFO] [stderr] | |_____________- help: try this: `if self.sender.unbounded_send(Ok(full_buf.into())).is_err()` [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: large size difference between variants [INFO] [stderr] --> src/gzip.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | Gzipped(::flate2::write::GzEncoder>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 40 | Gzipped(Box<::flate2::write::GzEncoder>>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:238:21 [INFO] [stderr] | [INFO] [stderr] 238 | gzip_level: match should_gzip(req.headers()) { [INFO] [stderr] | _____________________^ [INFO] [stderr] 239 | | true => 6, [INFO] [stderr] 240 | | false => 0, [INFO] [stderr] 241 | | }, [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if should_gzip(req.headers()) { 6 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:278:17 [INFO] [stderr] | [INFO] [stderr] 278 | let w = match self.gzip_level > 0 { [INFO] [stderr] | _________________^ [INFO] [stderr] 279 | | true => BodyWriter::gzipped(w, flate2::Compression::new(self.gzip_level)), [INFO] [stderr] 280 | | false => BodyWriter::raw(w), [INFO] [stderr] 281 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.gzip_level > 0 { BodyWriter::gzipped(w, flate2::Compression::new(self.gzip_level)) } else { BodyWriter::raw(w) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] Checking failure v0.1.3 [INFO] [stderr] Checking criterion v0.2.5 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> examples/serve_file.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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/file.rs:69:17 [INFO] [stderr] | [INFO] [stderr] 69 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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: unneeded return statement [INFO] [stderr] --> src/etag.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | return Some(etag); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(etag)` [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/range.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | return ResolvedRanges::NotSatisfiable; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ResolvedRanges::NotSatisfiable` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/serving.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | const ERR: &'static str = "Unparseable If-Unmodified-Since"; [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/serving.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | const ERR: &'static str = "Unparseable If-Modified-Since"; [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/chunker.rs:92:20 [INFO] [stderr] | [INFO] [stderr] 92 | if let Err(_) = self.sender.unbounded_send(Ok(full_buf.into())) { [INFO] [stderr] | _____________- ^^^^^^ [INFO] [stderr] 93 | | // If this error is returned, no further writes will succeed either. [INFO] [stderr] 94 | | // Therefore, it's acceptable to just drop the full_buf (now e.into_inner()) [INFO] [stderr] 95 | | // rather than put it back as self.buf; it won't cause us to write a stream with [INFO] [stderr] ... | [INFO] [stderr] 100 | | )); [INFO] [stderr] 101 | | } [INFO] [stderr] | |_____________- help: try this: `if self.sender.unbounded_send(Ok(full_buf.into())).is_err()` [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: large size difference between variants [INFO] [stderr] --> src/gzip.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | Gzipped(::flate2::write::GzEncoder>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 40 | Gzipped(Box<::flate2::write::GzEncoder>>), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:238:21 [INFO] [stderr] | [INFO] [stderr] 238 | gzip_level: match should_gzip(req.headers()) { [INFO] [stderr] | _____________________^ [INFO] [stderr] 239 | | true => 6, [INFO] [stderr] 240 | | false => 0, [INFO] [stderr] 241 | | }, [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if should_gzip(req.headers()) { 6 } else { 0 }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib.rs:278:17 [INFO] [stderr] | [INFO] [stderr] 278 | let w = match self.gzip_level > 0 { [INFO] [stderr] | _________________^ [INFO] [stderr] 279 | | true => BodyWriter::gzipped(w, flate2::Compression::new(self.gzip_level)), [INFO] [stderr] 280 | | false => BodyWriter::raw(w), [INFO] [stderr] 281 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if self.gzip_level > 0 { BodyWriter::gzipped(w, flate2::Compression::new(self.gzip_level)) } else { BodyWriter::raw(w) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 45 [INFO] [stderr] --> tests/entity-acceptance.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | / fn serve_without_etag() { [INFO] [stderr] 115 | | let _ = env_logger::try_init(); [INFO] [stderr] 116 | | let client = reqwest::Client::new(); [INFO] [stderr] 117 | | let mut buf = Vec::new(); [INFO] [stderr] ... | [INFO] [stderr] 293 | | assert_eq!(BODY, &buf[..]); [INFO] [stderr] 294 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> benches/file.rs:80:55 [INFO] [stderr] | [INFO] [stderr] 80 | fn serve_full_entity(b: &mut criterion::Bencher, kib: &usize) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `usize` [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] Finished dev [unoptimized + debuginfo] target(s) in 44.60s [INFO] running `"docker" "inspect" "d4030b3cb115cf86ed16e2677642b039f961507a6732a4182e9d0e730a3f3cab"` [INFO] running `"docker" "rm" "-f" "d4030b3cb115cf86ed16e2677642b039f961507a6732a4182e9d0e730a3f3cab"` [INFO] [stdout] d4030b3cb115cf86ed16e2677642b039f961507a6732a4182e9d0e730a3f3cab