[INFO] crate susanoo 0.0.6 is already in cache [INFO] extracting crate susanoo 0.0.6 into work/ex/clippy-test-run/sources/stable/reg/susanoo/0.0.6 [INFO] extracting crate susanoo 0.0.6 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/susanoo/0.0.6 [INFO] validating manifest of susanoo-0.0.6 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 susanoo-0.0.6 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 susanoo-0.0.6 [INFO] finished frobbing susanoo-0.0.6 [INFO] frobbed toml for susanoo-0.0.6 written to work/ex/clippy-test-run/sources/stable/reg/susanoo/0.0.6/Cargo.toml [INFO] started frobbing susanoo-0.0.6 [INFO] finished frobbing susanoo-0.0.6 [INFO] frobbed toml for susanoo-0.0.6 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/susanoo/0.0.6/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 susanoo-0.0.6 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/susanoo/0.0.6:/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] 3b7e3639a95f677a834cd2afbb4f9741e891f802320629bea390e2cc2a7e1250 [INFO] running `"docker" "start" "-a" "3b7e3639a95f677a834cd2afbb4f9741e891f802320629bea390e2cc2a7e1250"` [INFO] [stderr] Checking cookie v0.10.1 [INFO] [stderr] Checking susanoo v0.0.6 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/router/regex.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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/router/regex.rs:175:13 [INFO] [stderr] | [INFO] [stderr] 175 | method: method, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `method` [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: module has the same name as its containing module [INFO] [stderr] --> src/request/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | mod request; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/response/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod response; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/request/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | mod request; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/response/mod.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | mod response; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/error.rs:121:23 [INFO] [stderr] | [INFO] [stderr] 121 | let handler = self.inner.get(&err.status).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.inner[&err.status]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/request/from_body.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | type Result = AndThen, fn(Vec) -> Result>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `response::response::Response` [INFO] [stderr] --> src/response/response.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Self { [INFO] [stderr] 12 | | Response { [INFO] [stderr] 13 | | raw: hyper::Response::new(), [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/router/regex.rs:113:14 [INFO] [stderr] | [INFO] [stderr] 113 | .or_insert(Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::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: single-character string constant used as pattern [INFO] [stderr] --> src/router/regex.rs:241:29 [INFO] [stderr] | [INFO] [stderr] 241 | .trim_right_matches("/"); [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/router/regex.rs:240:29 [INFO] [stderr] | [INFO] [stderr] 240 | .trim_right_matches("$") [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: single-character string constant used as pattern [INFO] [stderr] --> src/router/regex.rs:239:28 [INFO] [stderr] | [INFO] [stderr] 239 | .trim_left_matches("^") [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn try_get<'a, T: Send + Sync + 'static>(&'a self) -> Option<&'a T> { [INFO] [stderr] 14 | | let type_id = TypeId::of::(); [INFO] [stderr] 15 | | self.inner.get(&type_id).and_then(|v| v.downcast_ref::()) [INFO] [stderr] 16 | | } [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/storage.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn get<'a, T: Send + Sync + 'static>(&'a self) -> &'a T { [INFO] [stderr] 22 | | self.try_get() [INFO] [stderr] 23 | | .expect("Any value of given type has yet set.") [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/storage.rs:57:34 [INFO] [stderr] | [INFO] [stderr] 57 | self.0 = (self.0 << 8) | (byte as u64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(byte)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/error.rs:121:23 [INFO] [stderr] | [INFO] [stderr] 121 | let handler = self.inner.get(&err.status).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.inner[&err.status]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/request/from_body.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | type Result = AndThen, fn(Vec) -> Result>; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `response::response::Response` [INFO] [stderr] --> src/response/response.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> Self { [INFO] [stderr] 12 | | Response { [INFO] [stderr] 13 | | raw: hyper::Response::new(), [INFO] [stderr] 14 | | } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/router/regex.rs:113:14 [INFO] [stderr] | [INFO] [stderr] 113 | .or_insert(Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::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: single-character string constant used as pattern [INFO] [stderr] --> src/router/regex.rs:241:29 [INFO] [stderr] | [INFO] [stderr] 241 | .trim_right_matches("/"); [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/router/regex.rs:240:29 [INFO] [stderr] | [INFO] [stderr] 240 | .trim_right_matches("$") [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: single-character string constant used as pattern [INFO] [stderr] --> src/router/regex.rs:239:28 [INFO] [stderr] | [INFO] [stderr] 239 | .trim_left_matches("^") [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/storage.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn try_get<'a, T: Send + Sync + 'static>(&'a self) -> Option<&'a T> { [INFO] [stderr] 14 | | let type_id = TypeId::of::(); [INFO] [stderr] 15 | | self.inner.get(&type_id).and_then(|v| v.downcast_ref::()) [INFO] [stderr] 16 | | } [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/storage.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / pub fn get<'a, T: Send + Sync + 'static>(&'a self) -> &'a T { [INFO] [stderr] 22 | | self.try_get() [INFO] [stderr] 23 | | .expect("Any value of given type has yet set.") [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/storage.rs:57:34 [INFO] [stderr] | [INFO] [stderr] 57 | self.0 = (self.0 << 8) | (byte as u64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(byte)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 8.03s [INFO] running `"docker" "inspect" "3b7e3639a95f677a834cd2afbb4f9741e891f802320629bea390e2cc2a7e1250"` [INFO] running `"docker" "rm" "-f" "3b7e3639a95f677a834cd2afbb4f9741e891f802320629bea390e2cc2a7e1250"` [INFO] [stdout] 3b7e3639a95f677a834cd2afbb4f9741e891f802320629bea390e2cc2a7e1250