[INFO] crate reql 0.0.26 is already in cache [INFO] extracting crate reql 0.0.26 into work/ex/clippy-test-run/sources/stable/reg/reql/0.0.26 [INFO] extracting crate reql 0.0.26 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reql/0.0.26 [INFO] validating manifest of reql-0.0.26 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 reql-0.0.26 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 reql-0.0.26 [INFO] finished frobbing reql-0.0.26 [INFO] frobbed toml for reql-0.0.26 written to work/ex/clippy-test-run/sources/stable/reg/reql/0.0.26/Cargo.toml [INFO] started frobbing reql-0.0.26 [INFO] finished frobbing reql-0.0.26 [INFO] frobbed toml for reql-0.0.26 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/reql/0.0.26/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 reql-0.0.26 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/reql/0.0.26:/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] 9a7a11db6c2b2877b1b1d21986c48d4fa98d93488617b24e884997bc1dc381ed [INFO] running `"docker" "start" "-a" "9a7a11db6c2b2877b1b1d21986c48d4fa98d93488617b24e884997bc1dc381ed"` [INFO] [stderr] Compiling linked-hash-map v0.5.1 [INFO] [stderr] Checking protobuf v1.5.1 [INFO] [stderr] Checking r2d2 v0.8.3 [INFO] [stderr] Compiling memchr v2.1.3 [INFO] [stderr] Compiling derive-error v0.0.4 [INFO] [stderr] Checking uuid v0.6.5 [INFO] [stderr] Checking scram v0.4.0 [INFO] [stderr] Compiling yaml-rust v0.4.2 [INFO] [stderr] Compiling nom v4.1.1 [INFO] [stderr] Checking reql-types v0.0.4 [INFO] [stderr] Compiling serde_yaml v0.8.8 [INFO] [stderr] Compiling reql v0.0.26 (/opt/crater/workdir) [INFO] [stderr] Checking ql2 v1.1.2 [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/commands/io/pool.rs:41:29 [INFO] [stderr] | [INFO] [stderr] 41 | stream: stream, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [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/commands/io/mod.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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/commands/io/mod.rs:104:17 [INFO] [stderr] | [INFO] [stderr] 104 | cfg: cfg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cfg` [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/commands/io/mod.rs:105:17 [INFO] [stderr] | [INFO] [stderr] 105 | tx: tx, [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [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/commands/io/mod.rs:113:16 [INFO] [stderr] | [INFO] [stderr] 113 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [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/commands/io/mod.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | cluster: cluster, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `cluster` [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/commands/io/mod.rs:219:25 [INFO] [stderr] | [INFO] [stderr] 219 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/commands/io/mod.rs:254:13 [INFO] [stderr] | [INFO] [stderr] 254 | addresses: addresses, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `addresses` [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/commands/io/pool.rs:41:29 [INFO] [stderr] | [INFO] [stderr] 41 | stream: stream, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `stream` [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/commands/io/mod.rs:103:17 [INFO] [stderr] | [INFO] [stderr] 103 | pool: pool, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `pool` [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/commands/io/mod.rs:104:17 [INFO] [stderr] | [INFO] [stderr] 104 | cfg: cfg, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `cfg` [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/commands/io/mod.rs:105:17 [INFO] [stderr] | [INFO] [stderr] 105 | tx: tx, [INFO] [stderr] | ^^^^^^ help: replace it with: `tx` [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/commands/io/mod.rs:113:16 [INFO] [stderr] | [INFO] [stderr] 113 | rx: rx, [INFO] [stderr] | ^^^^^^ help: replace it with: `rx` [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/commands/io/mod.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | cluster: cluster, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `cluster` [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/commands/io/mod.rs:219:25 [INFO] [stderr] | [INFO] [stderr] 219 | opts: opts, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `opts` [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/commands/io/mod.rs:254:13 [INFO] [stderr] | [INFO] [stderr] 254 | addresses: addresses, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `addresses` [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: unneeded return statement [INFO] [stderr] --> src/commands/io/request.rs:283:17 [INFO] [stderr] | [INFO] [stderr] 283 | return Err(error)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(error)?` [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/commands/io/request.rs:283:17 [INFO] [stderr] | [INFO] [stderr] 283 | return Err(error)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(error)?` [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] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/commands/io/request.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | drop(&mut conn); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_ref)] on by default [INFO] [stderr] note: argument has type &mut r2d2::PooledConnection [INFO] [stderr] --> src/commands/io/request.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | drop(&mut conn); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:52:66 [INFO] [stderr] | [INFO] [stderr] 52 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:85:62 [INFO] [stderr] | [INFO] [stderr] 85 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:105:66 [INFO] [stderr] | [INFO] [stderr] 105 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_query` doesn't need a mutable reference [INFO] [stderr] --> src/commands/io/request.rs:117:72 [INFO] [stderr] | [INFO] [stderr] 117 | if let Err(error) = write_query(&mut conn, &mut query) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:120:66 [INFO] [stderr] | [INFO] [stderr] 120 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/commands/io/request.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | / let mut msg = String::new(); [INFO] [stderr] 194 | | if result.e.is_some() || has_generic_error { [INFO] [stderr] 195 | | msg = if let Value::Array(error) = result.r.clone() { [INFO] [stderr] 196 | | if error.len() == 1 { [INFO] [stderr] ... | [INFO] [stderr] 207 | | }; [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 193 | let msg = if result.e.is_some() || has_generic_error { if let Value::Array(error) = result.r.clone() { [INFO] [stderr] 194 | if error.len() == 1 { [INFO] [stderr] 195 | if let Some(Value::String(msg)) = error.into_iter().next() { [INFO] [stderr] 196 | msg [INFO] [stderr] 197 | } else { [INFO] [stderr] 198 | return Err(ResponseError::Db(result.r))?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let _ = self.stream.write_u32::(Version::V1_0 as u32)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | let _ = self.stream.write_all(&msg[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:90:17 [INFO] [stderr] | [INFO] [stderr] 90 | let _ = self.stream.write_all(&msg[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | let _ = self.stream.flush()?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/commands/io/handshake.rs:105:21 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn is_valid(&mut self) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/commands/io/handshake.rs:151:26 [INFO] [stderr] | [INFO] [stderr] 151 | if !resp.starts_with("{") { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/commands/io/mod.rs:73:27 [INFO] [stderr] | [INFO] [stderr] 73 | Some(conn) => conn.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `conn` [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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/commands/io/mod.rs:262:20 [INFO] [stderr] | [INFO] [stderr] 262 | if let Ok(_) = TcpStream::connect(address) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 263 | | self.latency = start.elapsed(); [INFO] [stderr] 264 | | break; [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________- help: try this: `if TcpStream::connect(address).is_ok()` [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_err()` [INFO] [stderr] --> src/commands/util.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if let Err(_) = cmd.term { [INFO] [stderr] | _____- ^^^^^^ [INFO] [stderr] 75 | | return cmd; [INFO] [stderr] 76 | | } [INFO] [stderr] | |_____- help: try this: `if cmd.term.is_err()` [INFO] [stderr] | [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: you should consider adding a `Default` implementation for `Arg` [INFO] [stderr] --> src/commands/args.rs:184:5 [INFO] [stderr] | [INFO] [stderr] 184 | / pub fn new() -> Arg { [INFO] [stderr] 185 | | Arg { [INFO] [stderr] 186 | | string: String::new(), [INFO] [stderr] 187 | | term: Ok(Term::new()), [INFO] [stderr] 188 | | pool: None, [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [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] 172 | impl Default for Arg { [INFO] [stderr] 173 | fn default() -> Self { [INFO] [stderr] 174 | Self::new() [INFO] [stderr] 175 | } [INFO] [stderr] 176 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Client` [INFO] [stderr] --> /opt/crater/target/debug/build/reql-72ffc00278d40636/out/commands.rs:14:17 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Client { [INFO] [stderr] 15 | | util::new_client() [INFO] [stderr] 16 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 2 | impl Default for Client { [INFO] [stderr] 3 | fn default() -> Self { [INFO] [stderr] 4 | Self::new() [INFO] [stderr] 5 | } [INFO] [stderr] 6 | } [INFO] [stderr] 7 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: calls to `std::mem::drop` with a reference instead of an owned value. Dropping a reference does nothing. [INFO] [stderr] --> src/commands/io/request.rs:47:21 [INFO] [stderr] | [INFO] [stderr] 47 | drop(&mut conn); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::drop_ref)] on by default [INFO] [stderr] note: argument has type &mut r2d2::PooledConnection [INFO] [stderr] --> src/commands/io/request.rs:47:26 [INFO] [stderr] | [INFO] [stderr] 47 | drop(&mut conn); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#drop_ref [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:52:66 [INFO] [stderr] | [INFO] [stderr] 52 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:85:62 [INFO] [stderr] | [INFO] [stderr] 85 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:105:66 [INFO] [stderr] | [INFO] [stderr] 105 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: The function/method `write_query` doesn't need a mutable reference [INFO] [stderr] --> src/commands/io/request.rs:117:72 [INFO] [stderr] | [INFO] [stderr] 117 | if let Err(error) = write_query(&mut conn, &mut query) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/commands/io/request.rs:120:66 [INFO] [stderr] | [INFO] [stderr] 120 | let _ = self.tx.clone().send(Err(error.into())).wait(); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider removing `.into()`: `error` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/types.rs:54:33 [INFO] [stderr] | [INFO] [stderr] 54 | obj.set_key(name.into()); [INFO] [stderr] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/commands/io/request.rs:193:17 [INFO] [stderr] | [INFO] [stderr] 193 | / let mut msg = String::new(); [INFO] [stderr] 194 | | if result.e.is_some() || has_generic_error { [INFO] [stderr] 195 | | msg = if let Value::Array(error) = result.r.clone() { [INFO] [stderr] 196 | | if error.len() == 1 { [INFO] [stderr] ... | [INFO] [stderr] 207 | | }; [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 193 | let msg = if result.e.is_some() || has_generic_error { if let Value::Array(error) = result.r.clone() { [INFO] [stderr] 194 | if error.len() == 1 { [INFO] [stderr] 195 | if let Some(Value::String(msg)) = error.into_iter().next() { [INFO] [stderr] 196 | msg [INFO] [stderr] 197 | } else { [INFO] [stderr] 198 | return Err(ResponseError::Db(result.r))?; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/types.rs:111:48 [INFO] [stderr] | [INFO] [stderr] 111 | args = args.trim_right_matches(",").to_string(); [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/types.rs:120:48 [INFO] [stderr] | [INFO] [stderr] 120 | args = args.trim_right_matches(",").to_string(); [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/types.rs:151:44 [INFO] [stderr] | [INFO] [stderr] 151 | args = args.trim_right_matches(",").to_string(); [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: useless use of `format!` [INFO] [stderr] --> src/types.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | res.push(format!("{}", self.encode_pairs(&opts, encoding_opts))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.encode_pairs(&opts, encoding_opts).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/types.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | fn encode_pairs(&mut self, data: &Vec, encoding_opts: bool) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[TermPair]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/types.rs:173:40 [INFO] [stderr] | [INFO] [stderr] 173 | opts = opts.trim_right_matches(",").to_string(); [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: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | let _ = self.stream.write_u32::(Version::V1_0 as u32)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | let _ = self.stream.write_all(&msg[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:90:17 [INFO] [stderr] | [INFO] [stderr] 90 | let _ = self.stream.write_all(&msg[..])?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/commands/io/handshake.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | let _ = self.stream.flush()?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/commands/io/handshake.rs:105:21 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn is_valid(&mut self) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] error: Could not compile `reql`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/commands/io/handshake.rs:151:26 [INFO] [stderr] | [INFO] [stderr] 151 | if !resp.starts_with("{") { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/commands/io/mod.rs:73:27 [INFO] [stderr] | [INFO] [stderr] 73 | Some(conn) => conn.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `conn` [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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/commands/io/mod.rs:262:20 [INFO] [stderr] | [INFO] [stderr] 262 | if let Ok(_) = TcpStream::connect(address) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 263 | | self.latency = start.elapsed(); [INFO] [stderr] 264 | | break; [INFO] [stderr] 265 | | } [INFO] [stderr] | |_____________- help: try this: `if TcpStream::connect(address).is_ok()` [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_err()` [INFO] [stderr] --> src/commands/util.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if let Err(_) = cmd.term { [INFO] [stderr] | _____- ^^^^^^ [INFO] [stderr] 75 | | return cmd; [INFO] [stderr] 76 | | } [INFO] [stderr] | |_____- help: try this: `if cmd.term.is_err()` [INFO] [stderr] | [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: you should consider adding a `Default` implementation for `Arg` [INFO] [stderr] --> src/commands/args.rs:184:5 [INFO] [stderr] | [INFO] [stderr] 184 | / pub fn new() -> Arg { [INFO] [stderr] 185 | | Arg { [INFO] [stderr] 186 | | string: String::new(), [INFO] [stderr] 187 | | term: Ok(Term::new()), [INFO] [stderr] 188 | | pool: None, [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [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] 172 | impl Default for Arg { [INFO] [stderr] 173 | fn default() -> Self { [INFO] [stderr] 174 | Self::new() [INFO] [stderr] 175 | } [INFO] [stderr] 176 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Client` [INFO] [stderr] --> /opt/crater/target/debug/build/reql-72ffc00278d40636/out/commands.rs:14:17 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Client { [INFO] [stderr] 15 | | util::new_client() [INFO] [stderr] 16 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 2 | impl Default for Client { [INFO] [stderr] 3 | fn default() -> Self { [INFO] [stderr] 4 | Self::new() [INFO] [stderr] 5 | } [INFO] [stderr] 6 | } [INFO] [stderr] 7 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/types.rs:54:33 [INFO] [stderr] | [INFO] [stderr] 54 | obj.set_key(name.into()); [INFO] [stderr] | ^^^^^^^^^^^ help: consider removing `.into()`: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/types.rs:111:48 [INFO] [stderr] | [INFO] [stderr] 111 | args = args.trim_right_matches(",").to_string(); [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/types.rs:120:48 [INFO] [stderr] | [INFO] [stderr] 120 | args = args.trim_right_matches(",").to_string(); [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/types.rs:151:44 [INFO] [stderr] | [INFO] [stderr] 151 | args = args.trim_right_matches(",").to_string(); [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: useless use of `format!` [INFO] [stderr] --> src/types.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | res.push(format!("{}", self.encode_pairs(&opts, encoding_opts))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.encode_pairs(&opts, encoding_opts).to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [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/types.rs:168:38 [INFO] [stderr] | [INFO] [stderr] 168 | fn encode_pairs(&mut self, data: &Vec, encoding_opts: bool) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[TermPair]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/types.rs:173:40 [INFO] [stderr] | [INFO] [stderr] 173 | opts = opts.trim_right_matches(",").to_string(); [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `reql`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "9a7a11db6c2b2877b1b1d21986c48d4fa98d93488617b24e884997bc1dc381ed"` [INFO] running `"docker" "rm" "-f" "9a7a11db6c2b2877b1b1d21986c48d4fa98d93488617b24e884997bc1dc381ed"` [INFO] [stdout] 9a7a11db6c2b2877b1b1d21986c48d4fa98d93488617b24e884997bc1dc381ed