[INFO] updating cached repository yrjok/Raspberry-Pi-Drive-Server [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/yrjok/Raspberry-Pi-Drive-Server [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/yrjok/Raspberry-Pi-Drive-Server" "work/ex/clippy-test-run/sources/stable/gh/yrjok/Raspberry-Pi-Drive-Server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/yrjok/Raspberry-Pi-Drive-Server'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/yrjok/Raspberry-Pi-Drive-Server" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yrjok/Raspberry-Pi-Drive-Server"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yrjok/Raspberry-Pi-Drive-Server'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 669e64ff33128689b940b66221a59a2b84eeef2c [INFO] sha for GitHub repo yrjok/Raspberry-Pi-Drive-Server: 669e64ff33128689b940b66221a59a2b84eeef2c [INFO] validating manifest of yrjok/Raspberry-Pi-Drive-Server 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 yrjok/Raspberry-Pi-Drive-Server 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 yrjok/Raspberry-Pi-Drive-Server [INFO] finished frobbing yrjok/Raspberry-Pi-Drive-Server [INFO] frobbed toml for yrjok/Raspberry-Pi-Drive-Server written to work/ex/clippy-test-run/sources/stable/gh/yrjok/Raspberry-Pi-Drive-Server/Cargo.toml [INFO] started frobbing yrjok/Raspberry-Pi-Drive-Server [INFO] finished frobbing yrjok/Raspberry-Pi-Drive-Server [INFO] frobbed toml for yrjok/Raspberry-Pi-Drive-Server written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/yrjok/Raspberry-Pi-Drive-Server/Cargo.toml [INFO] crate yrjok/Raspberry-Pi-Drive-Server 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 yrjok/Raspberry-Pi-Drive-Server 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-6/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/yrjok/Raspberry-Pi-Drive-Server:/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] c3a5263c2908e4fc5293f4d9ffd09643551254a4684c313792ff8b9ad208c040 [INFO] running `"docker" "start" "-a" "c3a5263c2908e4fc5293f4d9ffd09643551254a4684c313792ff8b9ad208c040"` [INFO] [stderr] Checking rapid_server v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `process` [INFO] [stderr] --> src/main.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{process, thread}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `process`, `thread` [INFO] [stderr] --> src/handlers.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{process, thread}; [INFO] [stderr] | ^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/handlers.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/handlers.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | / if self.current_path.pop() { [INFO] [stderr] 105 | | if self.current_path < base_path { [INFO] [stderr] 106 | | self.current_path = base_path; [INFO] [stderr] 107 | | } [INFO] [stderr] 108 | | } [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] 104 | if self.current_path.pop() && self.current_path < base_path { [INFO] [stderr] 105 | self.current_path = base_path; [INFO] [stderr] 106 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `process` [INFO] [stderr] --> src/main.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{process, thread}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `process`, `thread` [INFO] [stderr] --> src/handlers.rs:1:11 [INFO] [stderr] | [INFO] [stderr] 1 | use std::{process, thread}; [INFO] [stderr] | ^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs` [INFO] [stderr] --> src/handlers.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::fs; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/handlers.rs:104:13 [INFO] [stderr] | [INFO] [stderr] 104 | / if self.current_path.pop() { [INFO] [stderr] 105 | | if self.current_path < base_path { [INFO] [stderr] 106 | | self.current_path = base_path; [INFO] [stderr] 107 | | } [INFO] [stderr] 108 | | } [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] 104 | if self.current_path.pop() && self.current_path < base_path { [INFO] [stderr] 105 | self.current_path = base_path; [INFO] [stderr] 106 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/handlers.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | Err(message) => return Err("Failed to read request"), [INFO] [stderr] | ^^^^^^^ help: consider using `_message` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | let mut server = Server { running: true }; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handlers.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | let mut result: Result; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handlers.rs:81:23 [INFO] [stderr] | [INFO] [stderr] 81 | if let Ok(mut entries) = self.current_path.read_dir() { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `message` [INFO] [stderr] --> src/handlers.rs:36:25 [INFO] [stderr] | [INFO] [stderr] 36 | Err(message) => return Err("Failed to read request"), [INFO] [stderr] | ^^^^^^^ help: consider using `_message` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | let mut server = Server { running: true }; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `address` [INFO] [stderr] --> src/handlers.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | address: SocketAddr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/handlers.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | let mut result: Result; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/handlers.rs:43:24 [INFO] [stderr] | [INFO] [stderr] 43 | if let Err(_) = writer.write_all(response.as_bytes()) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 44 | | return Err("Failed to send error message to client.") [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________________- help: try this: `if writer.write_all(response.as_bytes()).is_err()` [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: variable does not need to be mutable [INFO] [stderr] --> src/handlers.rs:81:23 [INFO] [stderr] | [INFO] [stderr] 81 | if let Ok(mut entries) = self.current_path.read_dir() { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/handlers.rs:52:38 [INFO] [stderr] | [INFO] [stderr] 52 | let command = Command::parse(String::from(request.to_lowercase()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `request.to_lowercase()` [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/handlers.rs:68:16 [INFO] [stderr] | [INFO] [stderr] 68 | if let Err(_) = writer.write_all(response.as_bytes()) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 69 | | return Err("Failed to send response to client.") [INFO] [stderr] 70 | | } [INFO] [stderr] | |_________- help: try this: `if writer.write_all(response.as_bytes()).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: field is never used: `address` [INFO] [stderr] --> src/handlers.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | address: SocketAddr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/handlers.rs:43:24 [INFO] [stderr] | [INFO] [stderr] 43 | if let Err(_) = writer.write_all(response.as_bytes()) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 44 | | return Err("Failed to send error message to client.") [INFO] [stderr] 45 | | } [INFO] [stderr] | |_________________- help: try this: `if writer.write_all(response.as_bytes()).is_err()` [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: this creates an owned instance just for comparison [INFO] [stderr] --> src/handlers.rs:102:19 [INFO] [stderr] | [INFO] [stderr] 102 | if dir == String::from("..") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `".."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/handlers.rs:52:38 [INFO] [stderr] | [INFO] [stderr] 52 | let command = Command::parse(String::from(request.to_lowercase()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `request.to_lowercase()` [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/handlers.rs:68:16 [INFO] [stderr] | [INFO] [stderr] 68 | if let Err(_) = writer.write_all(response.as_bytes()) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 69 | | return Err("Failed to send response to client.") [INFO] [stderr] 70 | | } [INFO] [stderr] | |_________- help: try this: `if writer.write_all(response.as_bytes()).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] warning: length comparison to zero [INFO] [stderr] --> src/handlers.rs:143:12 [INFO] [stderr] | [INFO] [stderr] 143 | if args.len() == 0 { return Err("Input is empty.")} [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/main.rs:15:25 [INFO] [stderr] | [INFO] [stderr] 15 | if let Some(host) = env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | path = String::from(host); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `host` [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] error: Variable in the condition are not mutated in the loop body. This either leads to an infinite or to a never running loop. [INFO] [stderr] --> src/main.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | while self.running { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::while_immutable_condition)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_immutable_condition [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/handlers.rs:102:19 [INFO] [stderr] | [INFO] [stderr] 102 | if dir == String::from("..") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `".."` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/handlers.rs:143:12 [INFO] [stderr] | [INFO] [stderr] 143 | if args.len() == 0 { return Err("Input is empty.")} [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.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: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/main.rs:15:25 [INFO] [stderr] | [INFO] [stderr] 15 | if let Some(host) = env::args().skip(1).next() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/main.rs:16:16 [INFO] [stderr] | [INFO] [stderr] 16 | path = String::from(host); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `host` [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] error: Variable in the condition are not mutated in the loop body. This either leads to an infinite or to a never running loop. [INFO] [stderr] --> src/main.rs:28:19 [INFO] [stderr] | [INFO] [stderr] 28 | while self.running { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::while_immutable_condition)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_immutable_condition [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `rapid_server`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: Could not compile `rapid_server`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "c3a5263c2908e4fc5293f4d9ffd09643551254a4684c313792ff8b9ad208c040"` [INFO] running `"docker" "rm" "-f" "c3a5263c2908e4fc5293f4d9ffd09643551254a4684c313792ff8b9ad208c040"` [INFO] [stdout] c3a5263c2908e4fc5293f4d9ffd09643551254a4684c313792ff8b9ad208c040