[INFO] updating cached repository timmyjose/nogo [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/timmyjose/nogo [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/timmyjose/nogo" "work/ex/clippy-test-run/sources/stable/gh/timmyjose/nogo"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/timmyjose/nogo'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/timmyjose/nogo" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/timmyjose/nogo"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/timmyjose/nogo'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 31caf284d5447ace1b3cedbdc33a29c4dda0309e [INFO] sha for GitHub repo timmyjose/nogo: 31caf284d5447ace1b3cedbdc33a29c4dda0309e [INFO] validating manifest of timmyjose/nogo 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 timmyjose/nogo 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 timmyjose/nogo [INFO] finished frobbing timmyjose/nogo [INFO] frobbed toml for timmyjose/nogo written to work/ex/clippy-test-run/sources/stable/gh/timmyjose/nogo/Cargo.toml [INFO] started frobbing timmyjose/nogo [INFO] finished frobbing timmyjose/nogo [INFO] frobbed toml for timmyjose/nogo written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/timmyjose/nogo/Cargo.toml [INFO] crate timmyjose/nogo 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 timmyjose/nogo 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-1/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/timmyjose/nogo:/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] 7d965533f9cb430444a6b2b8ead34c4aacb2720c2526aa7c4bc6ac996b8ca045 [INFO] running `"docker" "start" "-a" "7d965533f9cb430444a6b2b8ead34c4aacb2720c2526aa7c4bc6ac996b8ca045"` [INFO] [stderr] Checking nogo v1.0.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error_handling/mod.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/game_logic/mod.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:194:24 [INFO] [stderr] | [INFO] [stderr] 194 | let (l, r, u, d) = ((x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | let (l, r, u, d) = ((x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:217:31 [INFO] [stderr] | [INFO] [stderr] 217 | let (l, r, u, d) = ((r, c - 1), (r, c + 1), (r - 1, c), (r + 1, c)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game_logic/mod.rs:272:17 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/game_logic/mod.rs:272:23 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/game_logic/mod.rs:272:29 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `t` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:499:9 [INFO] [stderr] | [INFO] [stderr] 499 | let b = ir * gw + ic; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:501:13 [INFO] [stderr] | [INFO] [stderr] 501 | let mut m = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:502:13 [INFO] [stderr] | [INFO] [stderr] 502 | let mut n; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:507:18 [INFO] [stderr] | [INFO] [stderr] 507 | let (mut x, mut y) = match m % 5 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 9th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:507:25 [INFO] [stderr] | [INFO] [stderr] 507 | let (mut x, mut y) = match m % 5 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error_handling/mod.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/game_logic/mod.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:194:24 [INFO] [stderr] | [INFO] [stderr] 194 | let (l, r, u, d) = ((x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | let (l, r, u, d) = ((x, y - 1), (x, y + 1), (x - 1, y), (x + 1, y)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:217:31 [INFO] [stderr] | [INFO] [stderr] 217 | let (l, r, u, d) = ((r, c - 1), (r, c + 1), (r - 1, c), (r + 1, c)); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game_logic/mod.rs:272:17 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/game_logic/mod.rs:272:23 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/game_logic/mod.rs:272:29 [INFO] [stderr] | [INFO] [stderr] 272 | Point { x: x, y: y, t: t } [INFO] [stderr] | ^^^^ help: replace it with: `t` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:499:9 [INFO] [stderr] | [INFO] [stderr] 499 | let b = ir * gw + ic; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:501:13 [INFO] [stderr] | [INFO] [stderr] 501 | let mut m = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:502:13 [INFO] [stderr] | [INFO] [stderr] 502 | let mut n; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 8th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:507:18 [INFO] [stderr] | [INFO] [stderr] 507 | let (mut x, mut y) = match m % 5 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 9th binding whose name is just one char [INFO] [stderr] --> src/game_logic/mod.rs:507:25 [INFO] [stderr] | [INFO] [stderr] 507 | let (mut x, mut y) = match m % 5 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/mod.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | / return Err(eh::construct_error("incorrect type for player 0", [INFO] [stderr] 146 | | eh::NogoErrorKind::IncorrectTypes)); [INFO] [stderr] | |_______________________________________________________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 145 | Err(eh::construct_error("incorrect type for player 0", [INFO] [stderr] 146 | eh::NogoErrorKind::IncorrectTypes)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/game_logic/mod.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | const MOD_FACTOR: i32 = 10000003; [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_003` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/mod.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | / return Err(eh::construct_error("incorrect type for player 0", [INFO] [stderr] 146 | | eh::NogoErrorKind::IncorrectTypes)); [INFO] [stderr] | |_______________________________________________________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 145 | Err(eh::construct_error("incorrect type for player 0", [INFO] [stderr] 146 | eh::NogoErrorKind::IncorrectTypes)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/game_logic/mod.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | const MOD_FACTOR: i32 = 10000003; [INFO] [stderr] | ^^^^^^^^ help: consider: `10_000_003` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/io/mod.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / writeln!(io::stderr(), [INFO] [stderr] 24 | | "Usage: nogo p1type p2type [height width | filename]") [INFO] [stderr] 25 | | .unwrap(); [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/mod.rs:59:24 [INFO] [stderr] | [INFO] [stderr] 59 | if path.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!path.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/mod.rs:131:16 [INFO] [stderr] | [INFO] [stderr] 131 | (metadata: &Vec<&str>) [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/mod.rs:154:12 [INFO] [stderr] | [INFO] [stderr] 154 | (data: &Vec<&String>) [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[&String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/error_handling/validation/mod.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | / fn validate_player_type<'a>(pt: &'a str) -> eh::Result<'a, gl::PlayerType> { [INFO] [stderr] 39 | | match pt { [INFO] [stderr] 40 | | "c" | "C" => Ok(gl::PlayerType::COMPUTER), [INFO] [stderr] 41 | | "h" | "H" => Ok(gl::PlayerType::HUMAN), [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/error_handling/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | writeln!(io::stderr(), "Error: {}", error.description()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game_logic/mod.rs:117:41 [INFO] [stderr] | [INFO] [stderr] 117 | state.all_points.insert(point.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `point` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:233:34 [INFO] [stderr] | [INFO] [stderr] 233 | fn find_point(&self, needle: &(i32, i32), haystack: &HashSet) -> bool { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/game_logic/mod.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | self.components.iter().find(|&&p| (p.x, p.y) == (t.0, t.1)).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&&p| (p.x, p.y) == (t.0, t.1)).is_some()` with `any(|&&p| (p.x, p.y) == (t.0, t.1))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:304:18 [INFO] [stderr] | [INFO] [stderr] 304 | fn game_loop(p1: &PlayerType, p2: &PlayerType, start_player: char, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:304:35 [INFO] [stderr] | [INFO] [stderr] 304 | fn game_loop(p1: &PlayerType, p2: &PlayerType, start_player: char, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:402:21 [INFO] [stderr] | [INFO] [stderr] 402 | fn create_board(p1: &PlayerType, p2: &PlayerType, h: i32, w: i32) -> NogoBoard { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:402:38 [INFO] [stderr] | [INFO] [stderr] 402 | fn create_board(p1: &PlayerType, p2: &PlayerType, h: i32, w: i32) -> NogoBoard { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:457:37 [INFO] [stderr] | [INFO] [stderr] 457 | fn update_board(p_id: char, p_type: &PlayerType, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game_logic/mod.rs:475:27 [INFO] [stderr] | [INFO] [stderr] 475 | board.update_occupied(point.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/io/mod.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / writeln!(io::stderr(), [INFO] [stderr] 24 | | "Usage: nogo p1type p2type [height width | filename]") [INFO] [stderr] 25 | | .unwrap(); [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/mod.rs:59:24 [INFO] [stderr] | [INFO] [stderr] 59 | if path.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!path.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/mod.rs:131:16 [INFO] [stderr] | [INFO] [stderr] 131 | (metadata: &Vec<&str>) [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/io/mod.rs:154:12 [INFO] [stderr] | [INFO] [stderr] 154 | (data: &Vec<&String>) [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[&String]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/error_handling/validation/mod.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | / fn validate_player_type<'a>(pt: &'a str) -> eh::Result<'a, gl::PlayerType> { [INFO] [stderr] 39 | | match pt { [INFO] [stderr] 40 | | "c" | "C" => Ok(gl::PlayerType::COMPUTER), [INFO] [stderr] 41 | | "h" | "H" => Ok(gl::PlayerType::HUMAN), [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use of `writeln!(stderr(), ...).unwrap()`. Consider using `eprintln!` instead [INFO] [stderr] --> src/error_handling/mod.rs:154:5 [INFO] [stderr] | [INFO] [stderr] 154 | writeln!(io::stderr(), "Error: {}", error.description()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game_logic/mod.rs:117:41 [INFO] [stderr] | [INFO] [stderr] 117 | state.all_points.insert(point.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `point` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:233:34 [INFO] [stderr] | [INFO] [stderr] 233 | fn find_point(&self, needle: &(i32, i32), haystack: &HashSet) -> bool { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `(i32, i32)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/game_logic/mod.rs:254:9 [INFO] [stderr] | [INFO] [stderr] 254 | self.components.iter().find(|&&p| (p.x, p.y) == (t.0, t.1)).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|&&p| (p.x, p.y) == (t.0, t.1)).is_some()` with `any(|&&p| (p.x, p.y) == (t.0, t.1))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:304:18 [INFO] [stderr] | [INFO] [stderr] 304 | fn game_loop(p1: &PlayerType, p2: &PlayerType, start_player: char, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:304:35 [INFO] [stderr] | [INFO] [stderr] 304 | fn game_loop(p1: &PlayerType, p2: &PlayerType, start_player: char, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:402:21 [INFO] [stderr] | [INFO] [stderr] 402 | fn create_board(p1: &PlayerType, p2: &PlayerType, h: i32, w: i32) -> NogoBoard { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:402:38 [INFO] [stderr] | [INFO] [stderr] 402 | fn create_board(p1: &PlayerType, p2: &PlayerType, h: i32, w: i32) -> NogoBoard { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game_logic/mod.rs:457:37 [INFO] [stderr] | [INFO] [stderr] 457 | fn update_board(p_id: char, p_type: &PlayerType, board: &mut NogoBoard) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `PlayerType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game_logic/mod.rs:475:27 [INFO] [stderr] | [INFO] [stderr] 475 | board.update_occupied(point.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `point` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.72s [INFO] running `"docker" "inspect" "7d965533f9cb430444a6b2b8ead34c4aacb2720c2526aa7c4bc6ac996b8ca045"` [INFO] running `"docker" "rm" "-f" "7d965533f9cb430444a6b2b8ead34c4aacb2720c2526aa7c4bc6ac996b8ca045"` [INFO] [stdout] 7d965533f9cb430444a6b2b8ead34c4aacb2720c2526aa7c4bc6ac996b8ca045