[INFO] updating cached repository mikong/hanbaiki [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mikong/hanbaiki [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mikong/hanbaiki" "work/ex/clippy-test-run/sources/stable/gh/mikong/hanbaiki"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mikong/hanbaiki'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mikong/hanbaiki" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mikong/hanbaiki"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mikong/hanbaiki'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d3c3803ad74d2ec6014cbfc0020431c610f709b2 [INFO] sha for GitHub repo mikong/hanbaiki: d3c3803ad74d2ec6014cbfc0020431c610f709b2 [INFO] validating manifest of mikong/hanbaiki 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 mikong/hanbaiki 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 mikong/hanbaiki [INFO] finished frobbing mikong/hanbaiki [INFO] frobbed toml for mikong/hanbaiki written to work/ex/clippy-test-run/sources/stable/gh/mikong/hanbaiki/Cargo.toml [INFO] started frobbing mikong/hanbaiki [INFO] finished frobbing mikong/hanbaiki [INFO] frobbed toml for mikong/hanbaiki written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mikong/hanbaiki/Cargo.toml [INFO] crate mikong/hanbaiki 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 mikong/hanbaiki 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-2/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/mikong/hanbaiki:/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] 2b46027e58b83ba72c6f4ab217f4b0bf12967b81ce4b484e1662e10b476d31b9 [INFO] running `"docker" "start" "-a" "2b46027e58b83ba72c6f4ab217f4b0bf12967b81ce4b484e1662e10b476d31b9"` [INFO] [stderr] Compiling version_check v0.1.4 [INFO] [stderr] Checking hanbaiki v0.1.1 (/opt/crater/workdir) [INFO] [stderr] error[E0602]: unknown lint: `clippy::into_iter_on_array` [INFO] [stderr] | [INFO] [stderr] = note: requested on the command line with `-D clippy::into_iter_on_array` [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] For more information about this error, try `rustc --explain E0602`. [INFO] [stderr] error: Could not compile `version_check`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / if substate == SubState::CheckLF { [INFO] [stderr] 134 | | if self.check_lf()?.is_some() { [INFO] [stderr] 135 | | self.stack.pop(); [INFO] [stderr] 136 | | return Ok(Some(())); [INFO] [stderr] 137 | | } [INFO] [stderr] 138 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 133 | if substate == SubState::CheckLF && self.check_lf()?.is_some() { [INFO] [stderr] 134 | self.stack.pop(); [INFO] [stderr] 135 | return Ok(Some(())); [INFO] [stderr] 136 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:163:9 [INFO] [stderr] | [INFO] [stderr] 163 | / if substate == SubState::CheckLF { [INFO] [stderr] 164 | | if self.check_lf()?.is_some() { [INFO] [stderr] 165 | | self.stack.pop(); [INFO] [stderr] 166 | | return Ok(Some(())); [INFO] [stderr] 167 | | } [INFO] [stderr] 168 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 163 | if substate == SubState::CheckLF && self.check_lf()?.is_some() { [INFO] [stderr] 164 | self.stack.pop(); [INFO] [stderr] 165 | return Ok(Some(())); [INFO] [stderr] 166 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / if substate == SubState::CheckLF { [INFO] [stderr] 191 | | if self.check_lf()?.is_some() { [INFO] [stderr] 192 | | self.stack.pop(); [INFO] [stderr] 193 | | return Ok(Some(())); [INFO] [stderr] 194 | | } [INFO] [stderr] 195 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 190 | if substate == SubState::CheckLF && self.check_lf()?.is_some() { [INFO] [stderr] 191 | self.stack.pop(); [INFO] [stderr] 192 | return Ok(Some(())); [INFO] [stderr] 193 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | / if substate == SubState::CheckLF { [INFO] [stderr] 216 | | if self.check_lf()?.is_some() { [INFO] [stderr] 217 | | substate = SubState::BuildString; [INFO] [stderr] 218 | | self.transition_to(State::GetBulkString(substate, size)); [INFO] [stderr] 219 | | } [INFO] [stderr] 220 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 215 | if substate == SubState::CheckLF && self.check_lf()?.is_some() { [INFO] [stderr] 216 | substate = SubState::BuildString; [INFO] [stderr] 217 | self.transition_to(State::GetBulkString(substate, size)); [INFO] [stderr] 218 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | / if substate == SubState::BuildString { [INFO] [stderr] 223 | | if self.build_string(size as usize)?.is_some() { [INFO] [stderr] 224 | | self.stack.pop(); [INFO] [stderr] 225 | | return Ok(Some(())); [INFO] [stderr] 226 | | } [INFO] [stderr] 227 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 222 | if substate == SubState::BuildString && self.build_string(size as usize)?.is_some() { [INFO] [stderr] 223 | self.stack.pop(); [INFO] [stderr] 224 | return Ok(Some(())); [INFO] [stderr] 225 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/respreader.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | / if substate == SubState::CheckLF { [INFO] [stderr] 251 | | if self.check_lf()?.is_some() { [INFO] [stderr] 252 | | substate = SubState::GetElements; [INFO] [stderr] 253 | | self.get_array_change(|sm| { [INFO] [stderr] ... | [INFO] [stderr] 256 | | } [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 250 | if substate == SubState::CheckLF && self.check_lf()?.is_some() { [INFO] [stderr] 251 | substate = SubState::GetElements; [INFO] [stderr] 252 | self.get_array_change(|sm| { [INFO] [stderr] 253 | sm.substate = substate; [INFO] [stderr] 254 | }); [INFO] [stderr] 255 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Get` [INFO] [stderr] --> src/respreader.rs:351:1 [INFO] [stderr] | [INFO] [stderr] 351 | / enum State { [INFO] [stderr] 352 | | GetType, [INFO] [stderr] 353 | | GetSimpleString(SubState, usize), [INFO] [stderr] 354 | | GetError(SubState, usize), [INFO] [stderr] ... | [INFO] [stderr] 357 | | GetArray(GetArray), [INFO] [stderr] 358 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `respreader::RespReader` [INFO] [stderr] --> src/respreader.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> Self { [INFO] [stderr] 21 | | RespReader { [INFO] [stderr] 22 | | message: vec![], [INFO] [stderr] 23 | | index: 0, [INFO] [stderr] ... | [INFO] [stderr] 26 | | } [INFO] [stderr] 27 | | } [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] 19 | impl Default for respreader::RespReader { [INFO] [stderr] 20 | fn default() -> Self { [INFO] [stderr] 21 | Self::new() [INFO] [stderr] 22 | } [INFO] [stderr] 23 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:7:29 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn to_simple_string(s: &str) -> 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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:11:21 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn to_error(s: &str) -> Result { [INFO] [stderr] | ^ [INFO] [stderr] | [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:15:26 [INFO] [stderr] | [INFO] [stderr] 15 | fn to_simple_message(prefix: &str, s: &str) -> Result { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [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/respwriter.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | if s.contains("\r") || s.contains("\n") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\r'` [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/respwriter.rs:17:43 [INFO] [stderr] | [INFO] [stderr] 17 | if s.contains("\r") || s.contains("\n") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:25:23 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn to_integer(i: usize) -> String { [INFO] [stderr] | ^ [INFO] [stderr] | [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:29:27 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn to_bulk_string(s: &str) -> String { [INFO] [stderr] | ^ [INFO] [stderr] | [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/respwriter.rs:37:21 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn to_array(strings: &[&str]) -> String { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/server.rs:78:25 [INFO] [stderr] | [INFO] [stderr] 78 | write_stream.write(response.as_bytes())?; [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: length comparison to zero [INFO] [stderr] --> src/server.rs:99:8 [INFO] [stderr] | [INFO] [stderr] 99 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/server.rs:132:20 [INFO] [stderr] | [INFO] [stderr] 132 | if let Some(_) = data.remove(&v[1].take().to_string()) { [INFO] [stderr] | _____________- ^^^^^^^ [INFO] [stderr] 133 | | Response::build_ok() [INFO] [stderr] 134 | | } else { [INFO] [stderr] 135 | | Response::build_error("ERROR: Key not found") [INFO] [stderr] 136 | | } [INFO] [stderr] | |_____________- help: try this: `if data.remove(&v[1].take().to_string()).is_some()` [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: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/value.rs:28:22 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn to_string(self) -> String { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [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: redundant closure found [INFO] [stderr] --> src/value.rs:47:35 [INFO] [stderr] | [INFO] [stderr] 47 | let v = v.into_iter().map(|s| Value::BulkString(s)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::BulkString` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `hanbaiki`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "2b46027e58b83ba72c6f4ab217f4b0bf12967b81ce4b484e1662e10b476d31b9"` [INFO] running `"docker" "rm" "-f" "2b46027e58b83ba72c6f4ab217f4b0bf12967b81ce4b484e1662e10b476d31b9"` [INFO] [stdout] 2b46027e58b83ba72c6f4ab217f4b0bf12967b81ce4b484e1662e10b476d31b9