[INFO] updating cached repository binarycleric/bettis [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/binarycleric/bettis [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/binarycleric/bettis" "work/ex/clippy-test-run/sources/stable/gh/binarycleric/bettis"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/binarycleric/bettis'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/binarycleric/bettis" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/binarycleric/bettis"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/binarycleric/bettis'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b1705b98d92f181e0669796bd8be28f1e3b80370 [INFO] sha for GitHub repo binarycleric/bettis: b1705b98d92f181e0669796bd8be28f1e3b80370 [INFO] validating manifest of binarycleric/bettis 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 binarycleric/bettis 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 binarycleric/bettis [INFO] finished frobbing binarycleric/bettis [INFO] frobbed toml for binarycleric/bettis written to work/ex/clippy-test-run/sources/stable/gh/binarycleric/bettis/Cargo.toml [INFO] started frobbing binarycleric/bettis [INFO] finished frobbing binarycleric/bettis [INFO] frobbed toml for binarycleric/bettis written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/binarycleric/bettis/Cargo.toml [INFO] crate binarycleric/bettis 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 binarycleric/bettis against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/binarycleric/bettis:/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 -Dclippy::into_iter_on_array" "-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] 9e8844caf0e8680a2a95e96b3ff1e9161424e8f31397925a3eb9a809e65be52d [INFO] running `"docker" "start" "-a" "9e8844caf0e8680a2a95e96b3ff1e9161424e8f31397925a3eb9a809e65be52d"` [INFO] [stderr] Checking rand_core v0.1.0 [INFO] [stderr] Checking resp v1.0.2 [INFO] [stderr] Checking bencher v0.1.5 [INFO] [stderr] Checking simple_logger v0.5.0 [INFO] [stderr] Checking bettis v0.1.0 (/opt/crater/workdir) [INFO] [stderr] Checking rand v0.5.0-pre.1 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/tcp.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | ipaddr: ipaddr, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `ipaddr` [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/tcp.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | port: port, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/tcp.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | Self { stream: stream } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [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/command/command.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | command_name: command_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `command_name` [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/command/command.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | values: values, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/set.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/select.rs:13:16 [INFO] [stderr] | [INFO] [stderr] 13 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/get.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/del.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/incr.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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/command/commands/decr.rs:12:16 [INFO] [stderr] | [INFO] [stderr] 12 | Self { values: values } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `values` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/storage/mod.rs:9:28 [INFO] [stderr] | [INFO] [stderr] 9 | const INVALID_INCR_ERROR: &'static str = "ERR value is not an integer or out of range"; [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: module has the same name as its containing module [INFO] [stderr] --> src/command/mod.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | mod command; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | const SELECT_COMMAND: &'static str = "select"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:16:21 [INFO] [stderr] | [INFO] [stderr] 16 | const SET_COMMAND: &'static str = "set"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:17:21 [INFO] [stderr] | [INFO] [stderr] 17 | const GET_COMMAND: &'static str = "get"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:18:21 [INFO] [stderr] | [INFO] [stderr] 18 | const DEL_COMMAND: &'static str = "del"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:19:22 [INFO] [stderr] | [INFO] [stderr] 19 | const INCR_COMMAND: &'static str = "incr"; [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/command/commands/mod.rs:20:22 [INFO] [stderr] | [INFO] [stderr] 20 | const DECR_COMMAND: &'static str = "decr"; [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/tcp.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | self.stream.write(&response.encode()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `storage::Database` [INFO] [stderr] --> src/storage/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Self { [INFO] [stderr] 18 | | Self { [INFO] [stderr] 19 | | value_map: HashMap::new(), [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | } [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] 12 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/storage/mod.rs:40:17 [INFO] [stderr] | [INFO] [stderr] 40 | / if let &DataValue::Integer(ref int) = value { [INFO] [stderr] 41 | | new_value = int.clone() + 1; [INFO] [stderr] 42 | | } else { [INFO] [stderr] 43 | | return Err(DataValue::Error(INVALID_INCR_ERROR.to_string())); [INFO] [stderr] 44 | | } [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] 40 | if let DataValue::Integer(ref int) = *value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/storage/mod.rs:41:33 [INFO] [stderr] | [INFO] [stderr] 41 | new_value = int.clone() + 1; [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*int` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/storage/mod.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | / if let &DataValue::Integer(ref int) = value { [INFO] [stderr] 61 | | new_value = int.clone() - 1; [INFO] [stderr] 62 | | } else { [INFO] [stderr] 63 | | return Err(DataValue::Error(INVALID_INCR_ERROR.to_string())); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 60 | if let DataValue::Integer(ref int) = *value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/storage/mod.rs:61:33 [INFO] [stderr] | [INFO] [stderr] 61 | new_value = int.clone() - 1; [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*int` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/command/command.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | values = array.get(1..).unwrap().clone().to_vec(); [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] 48 | values = &(*array.get(1..).unwrap()).clone().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 48 | values = &[resp::Value]::clone(array.get(1..).unwrap()).to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a slice. Using `[]` is more clear and more concise [INFO] [stderr] --> src/command/command.rs:48:22 [INFO] [stderr] | [INFO] [stderr] 48 | values = array.get(1..).unwrap().clone().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `array[1..]` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/command/commands/mod.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | / pub fn from_str<'a>(string: &'a str) -> Self { [INFO] [stderr] 33 | | match string { [INFO] [stderr] 34 | | SELECT_COMMAND => Available::Select, [INFO] [stderr] 35 | | SET_COMMAND => Available::Set, [INFO] [stderr] ... | [INFO] [stderr] 41 | | } [INFO] [stderr] 42 | | } [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/command/mod.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | fn hash_key(values: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[resp::Value]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/command/mod.rs:20:29 [INFO] [stderr] | [INFO] [stderr] 20 | fn single_value(values: &Vec) -> resp::Value { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[resp::Value]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [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/lib.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | / pub fn bulk_string<'a>(string: &'a str) -> RespValue { [INFO] [stderr] 19 | | RespValue::Bulk(string.to_string()) [INFO] [stderr] 20 | | } [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] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `bettis`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "9e8844caf0e8680a2a95e96b3ff1e9161424e8f31397925a3eb9a809e65be52d"` [INFO] running `"docker" "rm" "-f" "9e8844caf0e8680a2a95e96b3ff1e9161424e8f31397925a3eb9a809e65be52d"` [INFO] [stdout] 9e8844caf0e8680a2a95e96b3ff1e9161424e8f31397925a3eb9a809e65be52d