[INFO] updating cached repository jonkgrimes/nbtscanner [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jonkgrimes/nbtscanner [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jonkgrimes/nbtscanner" "work/ex/clippy-test-run/sources/stable/gh/jonkgrimes/nbtscanner"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jonkgrimes/nbtscanner'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jonkgrimes/nbtscanner" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jonkgrimes/nbtscanner"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jonkgrimes/nbtscanner'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f4b930d23248a9cca1c902702a1915420dfd28d1 [INFO] sha for GitHub repo jonkgrimes/nbtscanner: f4b930d23248a9cca1c902702a1915420dfd28d1 [INFO] validating manifest of jonkgrimes/nbtscanner 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 jonkgrimes/nbtscanner 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 jonkgrimes/nbtscanner [INFO] finished frobbing jonkgrimes/nbtscanner [INFO] frobbed toml for jonkgrimes/nbtscanner written to work/ex/clippy-test-run/sources/stable/gh/jonkgrimes/nbtscanner/Cargo.toml [INFO] started frobbing jonkgrimes/nbtscanner [INFO] finished frobbing jonkgrimes/nbtscanner [INFO] frobbed toml for jonkgrimes/nbtscanner written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jonkgrimes/nbtscanner/Cargo.toml [INFO] crate jonkgrimes/nbtscanner 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 jonkgrimes/nbtscanner 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/gh/jonkgrimes/nbtscanner:/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] 9cc09f7416238828542803d2648ada0a5251020b3d300cbfdf9e290b89503c45 [INFO] running `"docker" "start" "-a" "9cc09f7416238828542803d2648ada0a5251020b3d300cbfdf9e290b89503c45"` [INFO] [stderr] Checking assert_matches v1.1.0 [INFO] [stderr] Checking nbtscanner v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/nbt_packet.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | ip: ip, [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [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/nbt_packet.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/nbt_packet.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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/lib.rs:27:18 [INFO] [stderr] | [INFO] [stderr] 27 | Config { verbose: verbose } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `verbose` [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/nbt_packet.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | ip: ip, [INFO] [stderr] | ^^^^^^ help: replace it with: `ip` [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/nbt_packet.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/nbt_packet.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | length: length, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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/lib.rs:27:18 [INFO] [stderr] | [INFO] [stderr] 27 | Config { verbose: verbose } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `verbose` [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: unused variable: `actual` [INFO] [stderr] --> src/nbt_packet.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | let actual = NetBiosPacket::from(Ipv4Addr::from([127, 0, 0, 1]), data, 175 as usize); [INFO] [stderr] | ^^^^^^ help: consider using `_actual` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expected` [INFO] [stderr] --> src/nbt_packet.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | let expected = "SHARING"; [INFO] [stderr] | ^^^^^^^^ help: consider using `_expected` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `actual` [INFO] [stderr] --> src/nbt_packet.rs:257:13 [INFO] [stderr] | [INFO] [stderr] 257 | let actual = NetBiosPacket::from(Ipv4Addr::from([127, 0, 0, 1]), data, 175 as usize); [INFO] [stderr] | ^^^^^^ help: consider using `_actual` instead [INFO] [stderr] [INFO] [stderr] warning: field is never used: `id` [INFO] [stderr] --> src/thread_pool.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | id: usize, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/nbt_packet.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 23 | | values.push_str(&format!("0x{:01$X}, ", byte, 2)); [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/nbt_packet.rs:20:30 [INFO] [stderr] | [INFO] [stderr] 20 | if elem % 4 == 0 { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 21 | | values.push_str(&format!("0x{:01$X}, ", byte, 2)); [INFO] [stderr] 22 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/nbt_packet.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | elem = elem + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `elem += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.data[RESPONSE_BASE_LEN - 1]` [INFO] [stderr] --> src/nbt_packet.rs:81:26 [INFO] [stderr] | [INFO] [stderr] 81 | let name_count = (&self.data[RESPONSE_BASE_LEN - 1] & 0xFF) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the loop variable `n` is used to index `name_bytes` [INFO] [stderr] --> src/nbt_packet.rs:83:18 [INFO] [stderr] | [INFO] [stderr] 83 | for n in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 83 | for (n, ) in name_bytes.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.data[offset]` [INFO] [stderr] --> src/nbt_packet.rs:85:29 [INFO] [stderr] | [INFO] [stderr] 85 | name_bytes[n] = &self.data[offset] & 0xFF; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/thread_pool.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | self.sender.send(Message::Terminate); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/thread_pool.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | / loop { [INFO] [stderr] 88 | | let message = match receiver.lock().unwrap().recv() { [INFO] [stderr] 89 | | Ok(message) => message, [INFO] [stderr] 90 | | Err(_) => { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_____________^ help: try: `while let Ok(message) = receiver.lock().unwrap().recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/lib.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | / socket [INFO] [stderr] 55 | | .connect((ip, NET_BIOS_PORT)) [INFO] [stderr] 56 | | .ok() [INFO] [stderr] 57 | | .expect("Couldn't connect to remote server"); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | let packet = NetBiosPacket::from(ip, buf.clone(), number_of_bytes); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `buf` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `nbtscanner`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: field is never used: `id` [INFO] [stderr] --> src/thread_pool.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | id: usize, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/nbt_packet.rs:22:20 [INFO] [stderr] | [INFO] [stderr] 22 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 23 | | values.push_str(&format!("0x{:01$X}, ", byte, 2)); [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/nbt_packet.rs:20:30 [INFO] [stderr] | [INFO] [stderr] 20 | if elem % 4 == 0 { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 21 | | values.push_str(&format!("0x{:01$X}, ", byte, 2)); [INFO] [stderr] 22 | | } else { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/nbt_packet.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | elem = elem + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `elem += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.data[RESPONSE_BASE_LEN - 1]` [INFO] [stderr] --> src/nbt_packet.rs:81:26 [INFO] [stderr] | [INFO] [stderr] 81 | let name_count = (&self.data[RESPONSE_BASE_LEN - 1] & 0xFF) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the loop variable `n` is used to index `name_bytes` [INFO] [stderr] --> src/nbt_packet.rs:83:18 [INFO] [stderr] | [INFO] [stderr] 83 | for n in 0..6 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 83 | for (n, ) in name_bytes.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.data[offset]` [INFO] [stderr] --> src/nbt_packet.rs:85:29 [INFO] [stderr] | [INFO] [stderr] 85 | name_bytes[n] = &self.data[offset] & 0xFF; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/thread_pool.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | self.sender.send(Message::Terminate); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/thread_pool.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | / loop { [INFO] [stderr] 88 | | let message = match receiver.lock().unwrap().recv() { [INFO] [stderr] 89 | | Ok(message) => message, [INFO] [stderr] 90 | | Err(_) => { [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_____________^ help: try: `while let Ok(message) = receiver.lock().unwrap().recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/lib.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | / socket [INFO] [stderr] 55 | | .connect((ip, NET_BIOS_PORT)) [INFO] [stderr] 56 | | .ok() [INFO] [stderr] 57 | | .expect("Couldn't connect to remote server"); [INFO] [stderr] | |____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:75:58 [INFO] [stderr] | [INFO] [stderr] 75 | let packet = NetBiosPacket::from(ip, buf.clone(), number_of_bytes); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `buf` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `nbtscanner`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "9cc09f7416238828542803d2648ada0a5251020b3d300cbfdf9e290b89503c45"` [INFO] running `"docker" "rm" "-f" "9cc09f7416238828542803d2648ada0a5251020b3d300cbfdf9e290b89503c45"` [INFO] [stdout] 9cc09f7416238828542803d2648ada0a5251020b3d300cbfdf9e290b89503c45