[INFO] cloning repository https://github.com/leslieyip02/chess [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/leslieyip02/chess" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleslieyip02%2Fchess", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleslieyip02%2Fchess'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0a5b24c002dd00f3da5e4a4c2ef6c8b24bb1bc6a [INFO] linting leslieyip02/chess against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleslieyip02%2Fchess" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/leslieyip02/chess [INFO] finished tweaking git repo https://github.com/leslieyip02/chess [INFO] tweaked toml for git repo https://github.com/leslieyip02/chess written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/leslieyip02/chess on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/leslieyip02/chess already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] b522604049e967a97348d20b1fb8fd6e896f2ec543ff0b9c55d57476428905f7 [INFO] running `Command { std: "docker" "start" "-a" "b522604049e967a97348d20b1fb8fd6e896f2ec543ff0b9c55d57476428905f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "b522604049e967a97348d20b1fb8fd6e896f2ec543ff0b9c55d57476428905f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b522604049e967a97348d20b1fb8fd6e896f2ec543ff0b9c55d57476428905f7", kill_on_drop: false }` [INFO] [stdout] b522604049e967a97348d20b1fb8fd6e896f2ec543ff0b9c55d57476428905f7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 69fc2881a34eb45dc8c52639893db31d1d37d48115445fb2167923c0985a68cc [INFO] running `Command { std: "docker" "start" "-a" "69fc2881a34eb45dc8c52639893db31d1d37d48115445fb2167923c0985a68cc", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.139 [INFO] [stderr] Checking getrandom v0.2.8 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking chess v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Board` [INFO] [stdout] --> src/board.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | / pub fn new() -> Board { [INFO] [stdout] 49 | | let mut board = Self::empty(); [INFO] [stdout] ... | [INFO] [stdout] 68 | | return board; [INFO] [stdout] 69 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 37 + impl Default for Board { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 68 - return board; [INFO] [stdout] 68 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pieces` [INFO] [stdout] --> src/board.rs:57:22 [INFO] [stdout] | [INFO] [stdout] 57 | for x in 0..NUM_COLS.min(pieces.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 57 - for x in 0..NUM_COLS.min(pieces.len()) { [INFO] [stdout] 57 + for (x, ) in pieces.iter().enumerate().take(NUM_COLS.min(pieces.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pawns` [INFO] [stdout] --> src/board.rs:63:22 [INFO] [stdout] | [INFO] [stdout] 63 | for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 63 - for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] 63 + for (x, ) in pawns.iter().enumerate().take(NUM_COLS.min(pawns.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return board; [INFO] [stdout] 123 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pawns` [INFO] [stdout] --> src/board.rs:118:22 [INFO] [stdout] | [INFO] [stdout] 118 | for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 118 - for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] 118 + for (x, ) in pawns.iter().enumerate().take(NUM_COLS.min(pawns.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 133 - return board; [INFO] [stdout] 133 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:224:9 [INFO] [stdout] | [INFO] [stdout] 224 | return input; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 - return input; [INFO] [stdout] 224 + input [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 236 - return None; [INFO] [stdout] 236 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:272:42 [INFO] [stdout] | [INFO] [stdout] 272 | let promotion = Self::promote_to(&input); [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:273:33 [INFO] [stdout] | [INFO] [stdout] 273 | let id = Self::piece_id(&input)?; [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:438:9 [INFO] [stdout] | [INFO] [stdout] 438 | / return match possible_move { [INFO] [stdout] 439 | | Some((piece, target)) => { [INFO] [stdout] 440 | | // check if the move will put the king in check with a test board [INFO] [stdout] 441 | | let mut test_board = self.clone(); [INFO] [stdout] ... | [INFO] [stdout] 455 | | None => Err(Error::InvalidArgument), [INFO] [stdout] 456 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 438 ~ match possible_move { [INFO] [stdout] 439 + Some((piece, target)) => { [INFO] [stdout] 440 + // check if the move will put the king in check with a test board [INFO] [stdout] 441 + let mut test_board = self.clone(); [INFO] [stdout] 442 + test_board.grid[piece.position.y][piece.position.x] = None; [INFO] [stdout] 443 + test_board.place_piece(target.x, target.y, piece.icon, white, piece.moves); [INFO] [stdout] 444 + match MoveChecker::in_check(&test_board, white) { [INFO] [stdout] 445 + true => Err(Error::InvalidMove { [INFO] [stdout] 446 + message: String::from("puts the king in check"), [INFO] [stdout] 447 + }), [INFO] [stdout] 448 + false => Ok(MoveType::Normal { [INFO] [stdout] 449 + piece: piece.clone(), [INFO] [stdout] 450 + target, [INFO] [stdout] 451 + promotion, [INFO] [stdout] 452 + }), [INFO] [stdout] 453 + } [INFO] [stdout] 454 + } [INFO] [stdout] 455 + None => Err(Error::InvalidArgument), [INFO] [stdout] 456 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Board` [INFO] [stdout] --> src/board.rs:48:5 [INFO] [stdout] | [INFO] [stdout] 48 | / pub fn new() -> Board { [INFO] [stdout] 49 | | let mut board = Self::empty(); [INFO] [stdout] ... | [INFO] [stdout] 68 | | return board; [INFO] [stdout] 69 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 37 + impl Default for Board { [INFO] [stdout] 38 + fn default() -> Self { [INFO] [stdout] 39 + Self::new() [INFO] [stdout] 40 + } [INFO] [stdout] 41 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:356:46 [INFO] [stdout] | [INFO] [stdout] 356 | return match MoveChecker::castle(&self, kingside, white) { [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/board.rs:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | / match MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] 374 | | Some((x, y)) => { [INFO] [stdout] 375 | | let from = Coordinate::new(x, y)?; [INFO] [stdout] 376 | | let capture = Coordinate::new(target.x, y)?; [INFO] [stdout] ... | [INFO] [stdout] 394 | | None => (), [INFO] [stdout] 395 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 373 ~ if let Some((x, y)) = MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] 374 + let from = Coordinate::new(x, y)?; [INFO] [stdout] 375 + let capture = Coordinate::new(target.x, y)?; [INFO] [stdout] 376 + [INFO] [stdout] 377 + // check if the move will put the king in check with a test board [INFO] [stdout] 378 + let mut test_board = self.clone(); [INFO] [stdout] 379 + test_board.grid[from.y][from.x] = None; [INFO] [stdout] 380 ~ test_board.place_piece(target.x, target.y, '♙', white, 0); [INFO] [stdout] 381 + test_board.grid[capture.y][capture.x] = None; [INFO] [stdout] 382 + return match MoveChecker::in_check(&test_board, white) { [INFO] [stdout] 383 + true => Err(Error::InvalidMove { [INFO] [stdout] 384 + message: String::from("puts the king in check"), [INFO] [stdout] 385 + }), [INFO] [stdout] 386 + false => Ok(MoveType::EnPassant { [INFO] [stdout] 387 + from, [INFO] [stdout] 388 + target, [INFO] [stdout] 389 + capture, [INFO] [stdout] 390 + }), [INFO] [stdout] 391 + }; [INFO] [stdout] 392 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:373:43 [INFO] [stdout] | [INFO] [stdout] 373 | match MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 68 - return board; [INFO] [stdout] 68 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:411:49 [INFO] [stdout] | [INFO] [stdout] 411 | ... && checker.can_move(&self, piece, &target) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pieces` [INFO] [stdout] --> src/board.rs:57:22 [INFO] [stdout] | [INFO] [stdout] 57 | for x in 0..NUM_COLS.min(pieces.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 57 - for x in 0..NUM_COLS.min(pieces.len()) { [INFO] [stdout] 57 + for (x, ) in pieces.iter().enumerate().take(NUM_COLS.min(pieces.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pawns` [INFO] [stdout] --> src/board.rs:63:22 [INFO] [stdout] | [INFO] [stdout] 63 | for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 63 - for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] 63 + for (x, ) in pawns.iter().enumerate().take(NUM_COLS.min(pawns.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:123:9 [INFO] [stdout] | [INFO] [stdout] 123 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return board; [INFO] [stdout] 123 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:535:17 [INFO] [stdout] | [INFO] [stdout] 535 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 535 ~ true [INFO] [stdout] 536 | } [INFO] [stdout] ... [INFO] [stdout] 544 | } [INFO] [stdout] 545 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 543 ~ false [INFO] [stdout] 544 | } [INFO] [stdout] 545 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:560:9 [INFO] [stdout] | [INFO] [stdout] 560 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 560 - return false; [INFO] [stdout] 560 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `x` is used to index `pawns` [INFO] [stdout] --> src/board.rs:118:22 [INFO] [stdout] | [INFO] [stdout] 118 | for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 118 - for x in 0..NUM_COLS.min(pawns.len()) { [INFO] [stdout] 118 + for (x, ) in pawns.iter().enumerate().take(NUM_COLS.min(pawns.len())) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:133:9 [INFO] [stdout] | [INFO] [stdout] 133 | return board; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 133 - return board; [INFO] [stdout] 133 + board [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - return false; [INFO] [stdout] 74 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | / match &board.grid[y1 as usize][x1 as usize] { [INFO] [stdout] 62 | | Some(piece) => { [INFO] [stdout] ... | [INFO] [stdout] 71 | | None => (), [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 61 ~ if let Some(piece) = &board.grid[y1 as usize][x1 as usize] { [INFO] [stdout] 62 + // if reached target position, [INFO] [stdout] 63 + // check if it's a capture or it's blocked [INFO] [stdout] 64 + if x1 == x2 && y1 == y2 { [INFO] [stdout] 65 + return piece.white == white; [INFO] [stdout] 66 + } [INFO] [stdout] 67 + [INFO] [stdout] 68 + return true; [INFO] [stdout] 69 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | return target.x < NUM_COLS && target.y < NUM_ROWS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 80 - return target.x < NUM_COLS && target.y < NUM_ROWS; [INFO] [stdout] 80 + target.x < NUM_COLS && target.y < NUM_ROWS [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/pieces/moves.rs:111:20 [INFO] [stdout] | [INFO] [stdout] 111 | if !(dx == dy) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `(dx != dy)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 116 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:123:17 [INFO] [stdout] | [INFO] [stdout] 123 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 124 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | return (dx == 1 && dy == 2) || (dx == 2 && dy == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 127 ~ (dx == 1 && dy == 2) || (dx == 2 && dy == 1) [INFO] [stdout] 128 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:163:17 [INFO] [stdout] | [INFO] [stdout] 163 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 163 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 164 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:171:17 [INFO] [stdout] | [INFO] [stdout] 171 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 171 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 172 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:224:9 [INFO] [stdout] | [INFO] [stdout] 224 | return input; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 - return input; [INFO] [stdout] 224 + input [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/pieces/moves.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | / if piece.white == target.white { [INFO] [stdout] 93 | | return false; [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 91 ~ Some(target) [INFO] [stdout] 92 ~ if piece.white == target.white => { [INFO] [stdout] 93 | return false; [INFO] [stdout] 94 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 91 | | Some(target) => { [INFO] [stdout] 92 | | if piece.white == target.white { [INFO] [stdout] 93 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 96 | | None => (), [INFO] [stdout] 97 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 90 ~ if let Some(target) = &board.grid[target.y][target.x] { [INFO] [stdout] 91 + if piece.white == target.white { [INFO] [stdout] 92 + return false; [INFO] [stdout] 93 + } [INFO] [stdout] 94 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 236 - return None; [INFO] [stdout] 236 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/pieces/moves.rs:144:28 [INFO] [stdout] | [INFO] [stdout] 144 | return match &board.grid[target.y][target.x] { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 145 | | Some(_) => true, [INFO] [stdout] 146 | | None => false, [INFO] [stdout] 147 | | }; [INFO] [stdout] | |_____________________^ help: try: `board.grid[target.y][target.x].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:158:17 [INFO] [stdout] | [INFO] [stdout] 158 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 159 | | Some(_) => return false, [INFO] [stdout] 160 | | None => (), [INFO] [stdout] 161 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(_) = &board.grid[target.y][target.x] { return false }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:224:9 [INFO] [stdout] | [INFO] [stdout] 224 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 - return false; [INFO] [stdout] 224 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:272:42 [INFO] [stdout] | [INFO] [stdout] 272 | let promotion = Self::promote_to(&input); [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:273:33 [INFO] [stdout] | [INFO] [stdout] 273 | let id = Self::piece_id(&input)?; [INFO] [stdout] | ^^^^^^ help: change this to: `input` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:49 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^ help: change this to: `board` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:57 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^ help: change this to: `piece` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:65 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 262 - return true; [INFO] [stdout] 262 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/pieces/moves.rs:243:86 [INFO] [stdout] | [INFO] [stdout] 243 | ... let target = format!("{}{}", (x as u8) as char, y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:438:9 [INFO] [stdout] | [INFO] [stdout] 438 | / return match possible_move { [INFO] [stdout] 439 | | Some((piece, target)) => { [INFO] [stdout] 440 | | // check if the move will put the king in check with a test board [INFO] [stdout] 441 | | let mut test_board = self.clone(); [INFO] [stdout] ... | [INFO] [stdout] 455 | | None => Err(Error::InvalidArgument), [INFO] [stdout] 456 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 438 ~ match possible_move { [INFO] [stdout] 439 + Some((piece, target)) => { [INFO] [stdout] 440 + // check if the move will put the king in check with a test board [INFO] [stdout] 441 + let mut test_board = self.clone(); [INFO] [stdout] 442 + test_board.grid[piece.position.y][piece.position.x] = None; [INFO] [stdout] 443 + test_board.place_piece(target.x, target.y, piece.icon, white, piece.moves); [INFO] [stdout] 444 + match MoveChecker::in_check(&test_board, white) { [INFO] [stdout] 445 + true => Err(Error::InvalidMove { [INFO] [stdout] 446 + message: String::from("puts the king in check"), [INFO] [stdout] 447 + }), [INFO] [stdout] 448 + false => Ok(MoveType::Normal { [INFO] [stdout] 449 + piece: piece.clone(), [INFO] [stdout] 450 + target, [INFO] [stdout] 451 + promotion, [INFO] [stdout] 452 + }), [INFO] [stdout] 453 + } [INFO] [stdout] 454 + } [INFO] [stdout] 455 + None => Err(Error::InvalidArgument), [INFO] [stdout] 456 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | return Some((king.position.x, rook.position.x)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 356 - return Some((king.position.x, rook.position.x)); [INFO] [stdout] 356 + Some((king.position.x, rook.position.x)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:356:46 [INFO] [stdout] | [INFO] [stdout] 356 | return match MoveChecker::castle(&self, kingside, white) { [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/pieces/moves.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 284 | / if king.is_none() { [INFO] [stdout] 285 | | return None; [INFO] [stdout] 286 | | } [INFO] [stdout] | |_________^ help: replace it with: `king?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/board.rs:373:13 [INFO] [stdout] | [INFO] [stdout] 373 | / match MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] 374 | | Some((x, y)) => { [INFO] [stdout] 375 | | let from = Coordinate::new(x, y)?; [INFO] [stdout] 376 | | let capture = Coordinate::new(target.x, y)?; [INFO] [stdout] ... | [INFO] [stdout] 394 | | None => (), [INFO] [stdout] 395 | | }; [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 373 ~ if let Some((x, y)) = MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] 374 + let from = Coordinate::new(x, y)?; [INFO] [stdout] 375 + let capture = Coordinate::new(target.x, y)?; [INFO] [stdout] 376 + [INFO] [stdout] 377 + // check if the move will put the king in check with a test board [INFO] [stdout] 378 + let mut test_board = self.clone(); [INFO] [stdout] 379 + test_board.grid[from.y][from.x] = None; [INFO] [stdout] 380 ~ test_board.place_piece(target.x, target.y, '♙', white, 0); [INFO] [stdout] 381 + test_board.grid[capture.y][capture.x] = None; [INFO] [stdout] 382 + return match MoveChecker::in_check(&test_board, white) { [INFO] [stdout] 383 + true => Err(Error::InvalidMove { [INFO] [stdout] 384 + message: String::from("puts the king in check"), [INFO] [stdout] 385 + }), [INFO] [stdout] 386 + false => Ok(MoveType::EnPassant { [INFO] [stdout] 387 + from, [INFO] [stdout] 388 + target, [INFO] [stdout] 389 + capture, [INFO] [stdout] 390 + }), [INFO] [stdout] 391 + }; [INFO] [stdout] 392 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:373:43 [INFO] [stdout] | [INFO] [stdout] 373 | match MoveChecker::en_passant(&self, from, &target, white) { [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/pieces/moves.rs:308:9 [INFO] [stdout] | [INFO] [stdout] 308 | / if rook.is_none() { [INFO] [stdout] 309 | | return None; [INFO] [stdout] 310 | | } [INFO] [stdout] | |_________^ help: replace it with: `rook?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/pieces/moves.rs:331:20 [INFO] [stdout] | [INFO] [stdout] 331 | let left = files.iter().min().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*files.iter().min().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/pieces/moves.rs:332:21 [INFO] [stdout] | [INFO] [stdout] 332 | let right = files.iter().max().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*files.iter().max().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:338:13 [INFO] [stdout] | [INFO] [stdout] 338 | / match &board.grid[rank][i] { [INFO] [stdout] 339 | | Some(_) => return None, [INFO] [stdout] 340 | | None => (), [INFO] [stdout] 341 | | }; [INFO] [stdout] | |_____________^ help: try: `if let Some(_) = &board.grid[rank][i] { return None }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/board.rs:411:49 [INFO] [stdout] | [INFO] [stdout] 411 | ... && checker.can_move(&self, piece, &target) [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:447:9 [INFO] [stdout] | [INFO] [stdout] 447 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 447 - return None; [INFO] [stdout] 447 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:373:9 [INFO] [stdout] | [INFO] [stdout] 373 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 374 | | Some(_) => return None, [INFO] [stdout] 375 | | None => (), [INFO] [stdout] 376 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_) = &board.grid[target.y][target.x] { return None }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/pieces/moves.rs:410:17 [INFO] [stdout] | [INFO] [stdout] 410 | / if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] 411 | | // check if there is a pawn to do the en passant [INFO] [stdout] 412 | | match from { [INFO] [stdout] 413 | | Some(x) => match &board.grid[rank][x] { [INFO] [stdout] ... | [INFO] [stdout] 441 | | }; [INFO] [stdout] 442 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 408 ~ Some(piece) [INFO] [stdout] 409 | // check the piece to capture is a pawn [INFO] [stdout] 410 ~ if piece.id == Id::Pawn && piece.moves == 1 => { [INFO] [stdout] 411 | // check if there is a pawn to do the en passant [INFO] [stdout] ... [INFO] [stdout] 441 | }; [INFO] [stdout] 442 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:407:9 [INFO] [stdout] | [INFO] [stdout] 407 | / match &board.grid[square.y][square.x] { [INFO] [stdout] 408 | | Some(piece) => { [INFO] [stdout] 409 | | // check the piece to capture is a pawn [INFO] [stdout] 410 | | if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] ... | [INFO] [stdout] 444 | | None => (), [INFO] [stdout] 445 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 407 ~ if let Some(piece) = &board.grid[square.y][square.x] { [INFO] [stdout] 408 + // check the piece to capture is a pawn [INFO] [stdout] 409 + if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] 410 + // check if there is a pawn to do the en passant [INFO] [stdout] 411 + match from { [INFO] [stdout] 412 + Some(x) => match &board.grid[rank][x] { [INFO] [stdout] 413 + Some(piece) => return Some((piece.position.x, piece.position.y)), [INFO] [stdout] 414 + None => return None, [INFO] [stdout] 415 + }, [INFO] [stdout] 416 + // if no file specified, check if any are valid [INFO] [stdout] 417 + None => { [INFO] [stdout] 418 + if square.x > 0 { [INFO] [stdout] 419 + let left = square.x - 1; [INFO] [stdout] 420 + match &board.grid[rank][left] { [INFO] [stdout] 421 + Some(piece) => { [INFO] [stdout] 422 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 423 + } [INFO] [stdout] 424 + None => (), [INFO] [stdout] 425 + } [INFO] [stdout] 426 + } [INFO] [stdout] 427 + [INFO] [stdout] 428 + if square.x < NUM_COLS - 1 { [INFO] [stdout] 429 + let right = square.x + 1; [INFO] [stdout] 430 + match &board.grid[rank][right] { [INFO] [stdout] 431 + Some(piece) => { [INFO] [stdout] 432 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 433 + } [INFO] [stdout] 434 + None => (), [INFO] [stdout] 435 + } [INFO] [stdout] 436 + } [INFO] [stdout] 437 + [INFO] [stdout] 438 + return None; [INFO] [stdout] 439 + } [INFO] [stdout] 440 + }; [INFO] [stdout] 441 + } [INFO] [stdout] 442 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:535:17 [INFO] [stdout] | [INFO] [stdout] 535 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 535 ~ true [INFO] [stdout] 536 | } [INFO] [stdout] ... [INFO] [stdout] 544 | } [INFO] [stdout] 545 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:543:17 [INFO] [stdout] | [INFO] [stdout] 543 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 543 ~ false [INFO] [stdout] 544 | } [INFO] [stdout] 545 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:421:33 [INFO] [stdout] | [INFO] [stdout] 421 | / ... match &board.grid[rank][left] { [INFO] [stdout] 422 | | ... Some(piece) => { [INFO] [stdout] 423 | | ... return Some((piece.position.x, piece.position.y)) [INFO] [stdout] ... | [INFO] [stdout] 426 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 421 ~ if let Some(piece) = &board.grid[rank][left] { [INFO] [stdout] 422 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 423 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:431:33 [INFO] [stdout] | [INFO] [stdout] 431 | / ... match &board.grid[rank][right] { [INFO] [stdout] 432 | | ... Some(piece) => { [INFO] [stdout] 433 | | ... return Some((piece.position.x, piece.position.y)) [INFO] [stdout] ... | [INFO] [stdout] 436 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 431 ~ if let Some(piece) = &board.grid[rank][right] { [INFO] [stdout] 432 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 433 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/board.rs:560:9 [INFO] [stdout] | [INFO] [stdout] 560 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 560 - return false; [INFO] [stdout] 560 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/pieces/moves.rs:327:21 [INFO] [stdout] | [INFO] [stdout] 327 | let files = vec![king.position.x, rook.position.x, king_target, rook_target]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[king.position.x, rook.position.x, king_target, rook_target]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 74 - return false; [INFO] [stdout] 74 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | / match &board.grid[y1 as usize][x1 as usize] { [INFO] [stdout] 62 | | Some(piece) => { [INFO] [stdout] ... | [INFO] [stdout] 71 | | None => (), [INFO] [stdout] 72 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 61 ~ if let Some(piece) = &board.grid[y1 as usize][x1 as usize] { [INFO] [stdout] 62 + // if reached target position, [INFO] [stdout] 63 + // check if it's a capture or it's blocked [INFO] [stdout] 64 + if x1 == x2 && y1 == y2 { [INFO] [stdout] 65 + return piece.white == white; [INFO] [stdout] 66 + } [INFO] [stdout] 67 + [INFO] [stdout] 68 + return true; [INFO] [stdout] 69 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:80:9 [INFO] [stdout] | [INFO] [stdout] 80 | return target.x < NUM_COLS && target.y < NUM_ROWS; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 80 - return target.x < NUM_COLS && target.y < NUM_ROWS; [INFO] [stdout] 80 + target.x < NUM_COLS && target.y < NUM_ROWS [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/pieces/moves.rs:111:20 [INFO] [stdout] | [INFO] [stdout] 111 | if !(dx == dy) { [INFO] [stdout] | ^^^^^^^^^^^ help: try: `(dx != dy)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:115:17 [INFO] [stdout] | [INFO] [stdout] 115 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 115 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 116 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:123:17 [INFO] [stdout] | [INFO] [stdout] 123 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 124 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:127:17 [INFO] [stdout] | [INFO] [stdout] 127 | return (dx == 1 && dy == 2) || (dx == 2 && dy == 1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 127 ~ (dx == 1 && dy == 2) || (dx == 2 && dy == 1) [INFO] [stdout] 128 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:163:17 [INFO] [stdout] | [INFO] [stdout] 163 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 163 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 164 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:171:17 [INFO] [stdout] | [INFO] [stdout] 171 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 171 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 172 | } [INFO] [stdout] ... [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:179:17 [INFO] [stdout] | [INFO] [stdout] 179 | return !Self::blocked(board, &piece.position, target, piece.white); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 ~ !Self::blocked(board, &piece.position, target, piece.white) [INFO] [stdout] 180 | } [INFO] [stdout] 181 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/pieces/moves.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | / if piece.white == target.white { [INFO] [stdout] 93 | | return false; [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 91 ~ Some(target) [INFO] [stdout] 92 ~ if piece.white == target.white => { [INFO] [stdout] 93 | return false; [INFO] [stdout] 94 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 91 | | Some(target) => { [INFO] [stdout] 92 | | if piece.white == target.white { [INFO] [stdout] 93 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 96 | | None => (), [INFO] [stdout] 97 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 90 ~ if let Some(target) = &board.grid[target.y][target.x] { [INFO] [stdout] 91 + if piece.white == target.white { [INFO] [stdout] 92 + return false; [INFO] [stdout] 93 + } [INFO] [stdout] 94 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/pieces/moves.rs:144:28 [INFO] [stdout] | [INFO] [stdout] 144 | return match &board.grid[target.y][target.x] { [INFO] [stdout] | ____________________________^ [INFO] [stdout] 145 | | Some(_) => true, [INFO] [stdout] 146 | | None => false, [INFO] [stdout] 147 | | }; [INFO] [stdout] | |_____________________^ help: try: `board.grid[target.y][target.x].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:158:17 [INFO] [stdout] | [INFO] [stdout] 158 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 159 | | Some(_) => return false, [INFO] [stdout] 160 | | None => (), [INFO] [stdout] 161 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(_) = &board.grid[target.y][target.x] { return false }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:224:9 [INFO] [stdout] | [INFO] [stdout] 224 | return false; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 224 - return false; [INFO] [stdout] 224 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:49 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^ help: change this to: `board` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:57 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^ help: change this to: `piece` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/pieces/moves.rs:214:65 [INFO] [stdout] | [INFO] [stdout] 214 | ... if checker.can_move(&board, &piece, &position) { [INFO] [stdout] | ^^^^^^^^^ help: change this to: `position` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:262:9 [INFO] [stdout] | [INFO] [stdout] 262 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 262 - return true; [INFO] [stdout] 262 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/pieces/moves.rs:243:86 [INFO] [stdout] | [INFO] [stdout] 243 | ... let target = format!("{}{}", (x as u8) as char, y.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | return Some((king.position.x, rook.position.x)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 356 - return Some((king.position.x, rook.position.x)); [INFO] [stdout] 356 + Some((king.position.x, rook.position.x)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/pieces/moves.rs:284:9 [INFO] [stdout] | [INFO] [stdout] 284 | / if king.is_none() { [INFO] [stdout] 285 | | return None; [INFO] [stdout] 286 | | } [INFO] [stdout] | |_________^ help: replace it with: `king?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/pieces/moves.rs:308:9 [INFO] [stdout] | [INFO] [stdout] 308 | / if rook.is_none() { [INFO] [stdout] 309 | | return None; [INFO] [stdout] 310 | | } [INFO] [stdout] | |_________^ help: replace it with: `rook?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/pieces/moves.rs:331:20 [INFO] [stdout] | [INFO] [stdout] 331 | let left = files.iter().min().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*files.iter().min().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/pieces/moves.rs:332:21 [INFO] [stdout] | [INFO] [stdout] 332 | let right = files.iter().max().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*files.iter().max().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:338:13 [INFO] [stdout] | [INFO] [stdout] 338 | / match &board.grid[rank][i] { [INFO] [stdout] 339 | | Some(_) => return None, [INFO] [stdout] 340 | | None => (), [INFO] [stdout] 341 | | }; [INFO] [stdout] | |_____________^ help: try: `if let Some(_) = &board.grid[rank][i] { return None }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/pieces/moves.rs:447:9 [INFO] [stdout] | [INFO] [stdout] 447 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 447 - return None; [INFO] [stdout] 447 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:373:9 [INFO] [stdout] | [INFO] [stdout] 373 | / match &board.grid[target.y][target.x] { [INFO] [stdout] 374 | | Some(_) => return None, [INFO] [stdout] 375 | | None => (), [INFO] [stdout] 376 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(_) = &board.grid[target.y][target.x] { return None }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/pieces/moves.rs:410:17 [INFO] [stdout] | [INFO] [stdout] 410 | / if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] 411 | | // check if there is a pawn to do the en passant [INFO] [stdout] 412 | | match from { [INFO] [stdout] 413 | | Some(x) => match &board.grid[rank][x] { [INFO] [stdout] ... | [INFO] [stdout] 441 | | }; [INFO] [stdout] 442 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 408 ~ Some(piece) [INFO] [stdout] 409 | // check the piece to capture is a pawn [INFO] [stdout] 410 ~ if piece.id == Id::Pawn && piece.moves == 1 => { [INFO] [stdout] 411 | // check if there is a pawn to do the en passant [INFO] [stdout] ... [INFO] [stdout] 441 | }; [INFO] [stdout] 442 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:407:9 [INFO] [stdout] | [INFO] [stdout] 407 | / match &board.grid[square.y][square.x] { [INFO] [stdout] 408 | | Some(piece) => { [INFO] [stdout] 409 | | // check the piece to capture is a pawn [INFO] [stdout] 410 | | if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] ... | [INFO] [stdout] 444 | | None => (), [INFO] [stdout] 445 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 407 ~ if let Some(piece) = &board.grid[square.y][square.x] { [INFO] [stdout] 408 + // check the piece to capture is a pawn [INFO] [stdout] 409 + if piece.id == Id::Pawn && piece.moves == 1 { [INFO] [stdout] 410 + // check if there is a pawn to do the en passant [INFO] [stdout] 411 + match from { [INFO] [stdout] 412 + Some(x) => match &board.grid[rank][x] { [INFO] [stdout] 413 + Some(piece) => return Some((piece.position.x, piece.position.y)), [INFO] [stdout] 414 + None => return None, [INFO] [stdout] 415 + }, [INFO] [stdout] 416 + // if no file specified, check if any are valid [INFO] [stdout] 417 + None => { [INFO] [stdout] 418 + if square.x > 0 { [INFO] [stdout] 419 + let left = square.x - 1; [INFO] [stdout] 420 + match &board.grid[rank][left] { [INFO] [stdout] 421 + Some(piece) => { [INFO] [stdout] 422 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 423 + } [INFO] [stdout] 424 + None => (), [INFO] [stdout] 425 + } [INFO] [stdout] 426 + } [INFO] [stdout] 427 + [INFO] [stdout] 428 + if square.x < NUM_COLS - 1 { [INFO] [stdout] 429 + let right = square.x + 1; [INFO] [stdout] 430 + match &board.grid[rank][right] { [INFO] [stdout] 431 + Some(piece) => { [INFO] [stdout] 432 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 433 + } [INFO] [stdout] 434 + None => (), [INFO] [stdout] 435 + } [INFO] [stdout] 436 + } [INFO] [stdout] 437 + [INFO] [stdout] 438 + return None; [INFO] [stdout] 439 + } [INFO] [stdout] 440 + }; [INFO] [stdout] 441 + } [INFO] [stdout] 442 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:421:33 [INFO] [stdout] | [INFO] [stdout] 421 | / ... match &board.grid[rank][left] { [INFO] [stdout] 422 | | ... Some(piece) => { [INFO] [stdout] 423 | | ... return Some((piece.position.x, piece.position.y)) [INFO] [stdout] ... | [INFO] [stdout] 426 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 421 ~ if let Some(piece) = &board.grid[rank][left] { [INFO] [stdout] 422 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 423 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/pieces/moves.rs:431:33 [INFO] [stdout] | [INFO] [stdout] 431 | / ... match &board.grid[rank][right] { [INFO] [stdout] 432 | | ... Some(piece) => { [INFO] [stdout] 433 | | ... return Some((piece.position.x, piece.position.y)) [INFO] [stdout] ... | [INFO] [stdout] 436 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 431 ~ if let Some(piece) = &board.grid[rank][right] { [INFO] [stdout] 432 + return Some((piece.position.x, piece.position.y)) [INFO] [stdout] 433 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:30:43 [INFO] [stdout] | [INFO] [stdout] 30 | assert_eq!(moves.can_move(&board, &piece, &position), expected); [INFO] [stdout] | ^^^^^^ help: change this to: `board` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/lib.rs:30:51 [INFO] [stdout] | [INFO] [stdout] 30 | assert_eq!(moves.can_move(&board, &piece, &position), expected); [INFO] [stdout] | ^^^^^^ help: change this to: `piece` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/lib.rs:32:21 [INFO] [stdout] | [INFO] [stdout] 32 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:77:20 [INFO] [stdout] | [INFO] [stdout] 77 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/king_moves.rs:78:17 [INFO] [stdout] | [INFO] [stdout] 78 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:81:20 [INFO] [stdout] | [INFO] [stdout] 81 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/king_moves.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 82 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:94:20 [INFO] [stdout] | [INFO] [stdout] 94 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/king_moves.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 95 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:109:20 [INFO] [stdout] | [INFO] [stdout] 109 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/king_moves.rs:110:17 [INFO] [stdout] | [INFO] [stdout] 110 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:113:20 [INFO] [stdout] | [INFO] [stdout] 113 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/king_moves.rs:114:17 [INFO] [stdout] | [INFO] [stdout] 114 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:130:17 [INFO] [stdout] | [INFO] [stdout] 130 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/king_moves.rs:137:17 [INFO] [stdout] | [INFO] [stdout] 137 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/pawn_moves.rs:59:20 [INFO] [stdout] | [INFO] [stdout] 59 | Some(_) => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `true` [INFO] [stdout] --> src/tests/pawn_moves.rs:60:17 [INFO] [stdout] | [INFO] [stdout] 60 | None => assert!(true), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove the assertion [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/pawn_moves.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/parse_moves.rs:32:37 [INFO] [stdout] | [INFO] [stdout] 32 | ... None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/parse_moves.rs:37:25 [INFO] [stdout] | [INFO] [stdout] 37 | None => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/tests/parse_moves.rs:39:18 [INFO] [stdout] | [INFO] [stdout] 39 | _ => assert!(false), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/pieces/moves.rs:327:21 [INFO] [stdout] | [INFO] [stdout] 327 | let files = vec![king.position.x, rook.position.x, king_target, rook_target]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[king.position.x, rook.position.x, king_target, rook_target]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.90s [INFO] running `Command { std: "docker" "inspect" "69fc2881a34eb45dc8c52639893db31d1d37d48115445fb2167923c0985a68cc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "69fc2881a34eb45dc8c52639893db31d1d37d48115445fb2167923c0985a68cc", kill_on_drop: false }` [INFO] [stdout] 69fc2881a34eb45dc8c52639893db31d1d37d48115445fb2167923c0985a68cc