[INFO] updating cached repository begleynk/terminal-chess [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/begleynk/terminal-chess [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/begleynk/terminal-chess" "work/ex/clippy-test-run/sources/stable/gh/begleynk/terminal-chess"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/begleynk/terminal-chess'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/begleynk/terminal-chess" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/begleynk/terminal-chess"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/begleynk/terminal-chess'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 964b387d9e1d1e188c7f0cb86f687df502da75eb [INFO] sha for GitHub repo begleynk/terminal-chess: 964b387d9e1d1e188c7f0cb86f687df502da75eb [INFO] validating manifest of begleynk/terminal-chess 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 begleynk/terminal-chess 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 begleynk/terminal-chess [INFO] finished frobbing begleynk/terminal-chess [INFO] frobbed toml for begleynk/terminal-chess written to work/ex/clippy-test-run/sources/stable/gh/begleynk/terminal-chess/Cargo.toml [INFO] started frobbing begleynk/terminal-chess [INFO] finished frobbing begleynk/terminal-chess [INFO] frobbed toml for begleynk/terminal-chess written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/begleynk/terminal-chess/Cargo.toml [INFO] crate begleynk/terminal-chess 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 begleynk/terminal-chess 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-4/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/begleynk/terminal-chess:/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] e8c77634927aee4cfb68231ae199f815870609fe7bba8f7dc4a7c744bea1a285 [INFO] running `"docker" "start" "-a" "e8c77634927aee4cfb68231ae199f815870609fe7bba8f7dc4a7c744bea1a285"` [INFO] [stderr] Checking terminal-chess v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [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: consider choosing a more descriptive name [INFO] [stderr] --> src/engine/mod.rs:73:30 [INFO] [stderr] | [INFO] [stderr] 73 | Action::MovePiece(_, __, to) => *coord == to, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::just_underscores_and_digits)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/engine/mod.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | side: side, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `side` [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/ui.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | side: side, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `side` [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: literal with an empty format string [INFO] [stderr] --> src/lib.rs:31:44 [INFO] [stderr] | [INFO] [stderr] 31 | Side::White => write!(f, "{}", "W"), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/lib.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | Side::Black => write!(f, "{}", "B"), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [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: consider choosing a more descriptive name [INFO] [stderr] --> src/engine/mod.rs:73:30 [INFO] [stderr] | [INFO] [stderr] 73 | Action::MovePiece(_, __, to) => *coord == to, [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::just_underscores_and_digits)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#just_underscores_and_digits [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/engine/mod.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | side: side, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `side` [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/ui.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | side: side, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `side` [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: literal with an empty format string [INFO] [stderr] --> src/lib.rs:31:44 [INFO] [stderr] | [INFO] [stderr] 31 | Side::White => write!(f, "{}", "W"), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/lib.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | Side::Black => write!(f, "{}", "B"), [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/ui.rs:73:57 [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(010,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(10,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(0o10,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ui.rs:76:12 [INFO] [stderr] | [INFO] [stderr] 76 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 77 | | if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 78 | | write!(out, "{} {}", color::Bg(color::Rgb(226,226,226)), color::Bg(color::Reset)) [INFO] [stderr] 79 | | } else { [INFO] [stderr] 80 | | write!(out, "{} {}", color::Bg(color::Rgb(190,190,190)), color::Bg(color::Reset)) [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 76 | } else if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 77 | write!(out, "{} {}", color::Bg(color::Rgb(226,226,226)), color::Bg(color::Reset)) [INFO] [stderr] 78 | } else { [INFO] [stderr] 79 | write!(out, "{} {}", color::Bg(color::Rgb(190,190,190)), color::Bg(color::Reset)) [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/ui.rs:89:58 [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(010,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(10,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(0o10,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ui.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 93 | | if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 94 | | write!(out, "{} {} {}", color::Bg(color::Rgb(226,226,226)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 95 | | } else { [INFO] [stderr] 96 | | write!(out, "{} {} {}", color::Bg(color::Rgb(190,190,190)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | } else if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 93 | write!(out, "{} {} {}", color::Bg(color::Rgb(226,226,226)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 94 | } else { [INFO] [stderr] 95 | write!(out, "{} {} {}", color::Bg(color::Rgb(190,190,190)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 96 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ai.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | action [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ai.rs:14:18 [INFO] [stderr] | [INFO] [stderr] 14 | let action = possible_actions(state, side).into_iter().max_by_key(|action| { [INFO] [stderr] | __________________^ [INFO] [stderr] 15 | | state.evaluate_with_action(action.clone(), |mut new_state| { [INFO] [stderr] 16 | | -alpha_beta(3, &mut new_state, side, ::min_value()+1, ::max_value()) [INFO] [stderr] 17 | | }) [INFO] [stderr] 18 | | }); [INFO] [stderr] | |______^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/ui.rs:73:57 [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(010,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(10,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 73 | write!(out, "{} {}", color::Bg(color::Rgb(0o10,000,100)), color::Bg(color::Reset)) [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ui.rs:76:12 [INFO] [stderr] | [INFO] [stderr] 76 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 77 | | if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 78 | | write!(out, "{} {}", color::Bg(color::Rgb(226,226,226)), color::Bg(color::Reset)) [INFO] [stderr] 79 | | } else { [INFO] [stderr] 80 | | write!(out, "{} {}", color::Bg(color::Rgb(190,190,190)), color::Bg(color::Reset)) [INFO] [stderr] 81 | | } [INFO] [stderr] 82 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 76 | } else if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 77 | write!(out, "{} {}", color::Bg(color::Rgb(226,226,226)), color::Bg(color::Reset)) [INFO] [stderr] 78 | } else { [INFO] [stderr] 79 | write!(out, "{} {}", color::Bg(color::Rgb(190,190,190)), color::Bg(color::Reset)) [INFO] [stderr] 80 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> src/ui.rs:89:58 [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(010,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(10,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 89 | write!(out, "{} {} {}", color::Bg(color::Rgb(0o10,000,100)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ui.rs:92:12 [INFO] [stderr] | [INFO] [stderr] 92 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 93 | | if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 94 | | write!(out, "{} {} {}", color::Bg(color::Rgb(226,226,226)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 95 | | } else { [INFO] [stderr] 96 | | write!(out, "{} {} {}", color::Bg(color::Rgb(190,190,190)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 97 | | } [INFO] [stderr] 98 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 92 | } else if (col_index + row_index) % 2 == 0 { [INFO] [stderr] 93 | write!(out, "{} {} {}", color::Bg(color::Rgb(226,226,226)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 94 | } else { [INFO] [stderr] 95 | write!(out, "{} {} {}", color::Bg(color::Rgb(190,190,190)), format_piece(square), color::Bg(color::Reset)) [INFO] [stderr] 96 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ai.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | action [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ai.rs:14:18 [INFO] [stderr] | [INFO] [stderr] 14 | let action = possible_actions(state, side).into_iter().max_by_key(|action| { [INFO] [stderr] | __________________^ [INFO] [stderr] 15 | | state.evaluate_with_action(action.clone(), |mut new_state| { [INFO] [stderr] 16 | | -alpha_beta(3, &mut new_state, side, ::min_value()+1, ::max_value()) [INFO] [stderr] 17 | | }) [INFO] [stderr] 18 | | }); [INFO] [stderr] | |______^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:27:17 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn side(&self) -> Side { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn rank(&self) -> Rank { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider adding a `Default` implementation for `game::GameState` [INFO] [stderr] --> src/game.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> GameState { [INFO] [stderr] 18 | | GameState { [INFO] [stderr] 19 | | next_to_move: Side::White, [INFO] [stderr] 20 | | history: vec![], [INFO] [stderr] 21 | | board: Board::default(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | impl Default for game::GameState { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:70:45 [INFO] [stderr] | [INFO] [stderr] 70 | .update_board(&to, Some(piece.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:39 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:54 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:68 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `to` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:84:45 [INFO] [stderr] | [INFO] [stderr] 84 | .update_board(&to, Some(capturer.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:90:25 [INFO] [stderr] | [INFO] [stderr] 90 | capturer.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:91:25 [INFO] [stderr] | [INFO] [stderr] 91 | target.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `target` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | to.clone(), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `to` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:108:47 [INFO] [stderr] | [INFO] [stderr] 108 | .update_board(&from, Some(piece.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:119:47 [INFO] [stderr] | [INFO] [stderr] 119 | .update_board(&from, Some(capturer.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | .update_board(&to, Some(target.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `target` [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: you should consider adding a `Default` implementation for `game::Game` [INFO] [stderr] --> src/game.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | / pub fn new() -> Game { [INFO] [stderr] 165 | | Game { [INFO] [stderr] 166 | | current_state: GameState::new(), [INFO] [stderr] 167 | | } [INFO] [stderr] 168 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 163 | impl Default for game::Game { [INFO] [stderr] 164 | fn default() -> Self { [INFO] [stderr] 165 | Self::new() [INFO] [stderr] 166 | } [INFO] [stderr] 167 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/board.rs:82:19 [INFO] [stderr] | [INFO] [stderr] 82 | self.data.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: requested on the command line with `-D clippy::into-iter-on-array` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/board.rs:205:20 [INFO] [stderr] | [INFO] [stderr] 205 | fn format_pos(pos: &Option) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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: useless use of `format!` [INFO] [stderr] --> src/board.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | None => format!(" "), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `" ".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:42:36 [INFO] [stderr] | [INFO] [stderr] 42 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:42:76 [INFO] [stderr] | [INFO] [stderr] 42 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:34 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:74 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:110 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:22:36 [INFO] [stderr] | [INFO] [stderr] 22 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:22:76 [INFO] [stderr] | [INFO] [stderr] 22 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:34 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:74 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:110 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:50:31 [INFO] [stderr] | [INFO] [stderr] 50 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:50:71 [INFO] [stderr] | [INFO] [stderr] 50 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | state.piece_at(*from).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | state.piece_at(c).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:73:17 [INFO] [stderr] | [INFO] [stderr] 73 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:30:31 [INFO] [stderr] | [INFO] [stderr] 30 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:30:71 [INFO] [stderr] | [INFO] [stderr] 30 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | state.piece_at(*from).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | state.piece_at(c).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:39:31 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:39:71 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:69 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:105 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:39:27 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:39:67 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:30 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:70 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:106 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/engine/mod.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / if let &Some(piece) = state.piece_at(*from) { [INFO] [stderr] 29 | | match piece.rank() { [INFO] [stderr] 30 | | Rank::Pawn => pawn::possible_actions(from, state), [INFO] [stderr] 31 | | Rank::Knight => knight::possible_actions(from, state), [INFO] [stderr] ... | [INFO] [stderr] 38 | | vec![] [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | if let Some(piece) = *state.piece_at(*from) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/mod.rs:154:29 [INFO] [stderr] | [INFO] [stderr] 154 | let mut current_coord = starting_coordinate.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*starting_coordinate` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/mod.rs:182:29 [INFO] [stderr] | [INFO] [stderr] 182 | let mut current_coord = starting_coordinate.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*starting_coordinate` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/engine/mod.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | / if let &Some(piece) = board.piece_at(next) { [INFO] [stderr] 190 | | if piece.side() != side { [INFO] [stderr] 191 | | result = Some(next); [INFO] [stderr] 192 | | break; [INFO] [stderr] ... | [INFO] [stderr] 195 | | } [INFO] [stderr] 196 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 189 | if let Some(piece) = *board.piece_at(next) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ui.rs:85:35 [INFO] [stderr] | [INFO] [stderr] 85 | fn draw_square_with_piece(square: &Option, out: &mut Out, row_index: usize, col_index: usize, session: &Session) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ui.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / match session.state() { [INFO] [stderr] 107 | | &SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] 108 | | match *action { [INFO] [stderr] 109 | | Action::MovePiece(_,_,ref to) => matches_coordinate(session, to, row_index, col_index), [INFO] [stderr] ... | [INFO] [stderr] 114 | | _ => false [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 106 | match *session.state() { [INFO] [stderr] 107 | SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ui.rs:107:70 [INFO] [stderr] | [INFO] [stderr] 107 | &SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ui.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | / if let &Some(p) = piece { [INFO] [stderr] 134 | | match (p.side(), p.rank()) { [INFO] [stderr] 135 | | (Side::White, Rank::Pawn) => "♙", [INFO] [stderr] 136 | | (Side::White, Rank::Knight) => "♘", [INFO] [stderr] ... | [INFO] [stderr] 149 | | " " [INFO] [stderr] 150 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | if let Some(p) = *piece { [INFO] [stderr] | ^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/ui.rs:155:63 [INFO] [stderr] | [INFO] [stderr] 155 | Side::White => Box::new(session.game().board().rows().into_iter().rev()), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/ui.rs:156:63 [INFO] [stderr] | [INFO] [stderr] 156 | Side::Black => Box::new(session.game().board().rows().into_iter()) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/ui.rs:162:37 [INFO] [stderr] | [INFO] [stderr] 162 | Side::White => Box::new(row.into_iter()), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/ui.rs:163:37 [INFO] [stderr] | [INFO] [stderr] 163 | Side::Black => Box::new(row.into_iter().rev()) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `session::Session` [INFO] [stderr] --> src/session.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Session { [INFO] [stderr] 29 | | Session { [INFO] [stderr] 30 | | current_game: Game::new(), [INFO] [stderr] 31 | | cursor: Cursor::new(Side::White), [INFO] [stderr] ... | [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | impl Default for session::Session { [INFO] [stderr] 28 | fn default() -> Self { [INFO] [stderr] 29 | Self::new() [INFO] [stderr] 30 | } [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/session.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | / if let &Some(piece) = self.current_game.state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] 86 | | if piece.side() == self.current_game.state().next_to_move() { [INFO] [stderr] 87 | | let possible_actions = self.current_game.state_mut().actions_at(self.cursor.to_coord()); [INFO] [stderr] 88 | | next_state = Some(SessionState::CoordinateSelected(self.cursor.to_coord(), possible_actions)); [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(piece) = *self.current_game.state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/session.rs:94:55 [INFO] [stderr] | [INFO] [stderr] 94 | if let Some(action) = actions.into_iter().find(|a| to_coordinate_for(a) == &self.cursor.to_coord() ) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/session.rs:101:32 [INFO] [stderr] | [INFO] [stderr] 101 | } else if let &Some(piece) = self.game().state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 102 | | if piece.side() == self.game().state().next_to_move() { [INFO] [stderr] 103 | | let possible_actions = self.current_game.state_mut().actions_at(self.cursor.to_coord()); [INFO] [stderr] 104 | | next_state = Some(SessionState::CoordinateSelected(self.cursor.to_coord(), possible_actions)); [INFO] [stderr] ... | [INFO] [stderr] 108 | | next_state = Some(SessionState::NothingSelected); [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 101 | } else if let Some(piece) = *self.game().state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/ai.rs:37:54 [INFO] [stderr] | [INFO] [stderr] 37 | return evaluate_board(state, next_to_move) - depth as i32; // penalty for games that end early [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(depth)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:43:48 [INFO] [stderr] | [INFO] [stderr] 43 | let value = state.evaluate_with_action(action.clone(), |mut new_state| { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `action` [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] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `terminal-chess`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:27:17 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn side(&self) -> Side { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:35:17 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn rank(&self) -> Rank { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider adding a `Default` implementation for `game::GameState` [INFO] [stderr] --> src/game.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> GameState { [INFO] [stderr] 18 | | GameState { [INFO] [stderr] 19 | | next_to_move: Side::White, [INFO] [stderr] 20 | | history: vec![], [INFO] [stderr] 21 | | board: Board::default(), [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | impl Default for game::GameState { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:70:45 [INFO] [stderr] | [INFO] [stderr] 70 | .update_board(&to, Some(piece.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:39 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:54 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:76:68 [INFO] [stderr] | [INFO] [stderr] 76 | Action::MovePiece(piece.clone(), from.clone(), to.clone()), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `to` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:84:45 [INFO] [stderr] | [INFO] [stderr] 84 | .update_board(&to, Some(capturer.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:90:25 [INFO] [stderr] | [INFO] [stderr] 90 | capturer.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:91:25 [INFO] [stderr] | [INFO] [stderr] 91 | target.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `target` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | to.clone(), [INFO] [stderr] | ^^^^^^^^^^ help: try removing the `clone` call: `to` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:108:47 [INFO] [stderr] | [INFO] [stderr] 108 | .update_board(&from, Some(piece.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:119:47 [INFO] [stderr] | [INFO] [stderr] 119 | .update_board(&from, Some(capturer.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `capturer` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | .update_board(&to, Some(target.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `target` [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: you should consider adding a `Default` implementation for `game::Game` [INFO] [stderr] --> src/game.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | / pub fn new() -> Game { [INFO] [stderr] 165 | | Game { [INFO] [stderr] 166 | | current_state: GameState::new(), [INFO] [stderr] 167 | | } [INFO] [stderr] 168 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 163 | impl Default for game::Game { [INFO] [stderr] 164 | fn default() -> Self { [INFO] [stderr] 165 | Self::new() [INFO] [stderr] 166 | } [INFO] [stderr] 167 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/board.rs:82:19 [INFO] [stderr] | [INFO] [stderr] 82 | self.data.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: requested on the command line with `-D clippy::into-iter-on-array` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/board.rs:205:20 [INFO] [stderr] | [INFO] [stderr] 205 | fn format_pos(pos: &Option) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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: useless use of `format!` [INFO] [stderr] --> src/board.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | None => format!(" "), [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `" ".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 33 [INFO] [stderr] --> src/board.rs:261:5 [INFO] [stderr] | [INFO] [stderr] 261 | / fn pieces_are_at_correct_starting_position() { [INFO] [stderr] 262 | | let board = Board::default(); [INFO] [stderr] 263 | | [INFO] [stderr] 264 | | assert_eq!(*board.piece_at(coord!("a1")), Some(Piece::pack(Side::White, Rank::Rook))); [INFO] [stderr] ... | [INFO] [stderr] 298 | | assert_eq!(*board.piece_at(coord!("h7")), Some(Piece::pack(Side::Black, Rank::Pawn))); [INFO] [stderr] 299 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:42:36 [INFO] [stderr] | [INFO] [stderr] 42 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:42:76 [INFO] [stderr] | [INFO] [stderr] 42 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:34 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:74 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/pawn.rs:73:110 [INFO] [stderr] | [INFO] [stderr] 73 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:22:36 [INFO] [stderr] | [INFO] [stderr] 22 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:22:76 [INFO] [stderr] | [INFO] [stderr] 22 | .map(|c| Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:34 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:74 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:36:110 [INFO] [stderr] | [INFO] [stderr] 36 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:87:35 [INFO] [stderr] | [INFO] [stderr] 87 | Action::MovePiece(piece.clone(), from.clone(), coord!("c6")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:87:50 [INFO] [stderr] | [INFO] [stderr] 87 | Action::MovePiece(piece.clone(), from.clone(), coord!("c6")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:88:35 [INFO] [stderr] | [INFO] [stderr] 88 | Action::MovePiece(piece.clone(), from.clone(), coord!("e6")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:88:50 [INFO] [stderr] | [INFO] [stderr] 88 | Action::MovePiece(piece.clone(), from.clone(), coord!("e6")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:89:35 [INFO] [stderr] | [INFO] [stderr] 89 | Action::MovePiece(piece.clone(), from.clone(), coord!("f5")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:89:50 [INFO] [stderr] | [INFO] [stderr] 89 | Action::MovePiece(piece.clone(), from.clone(), coord!("f5")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:90:35 [INFO] [stderr] | [INFO] [stderr] 90 | Action::MovePiece(piece.clone(), from.clone(), coord!("f3")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:90:50 [INFO] [stderr] | [INFO] [stderr] 90 | Action::MovePiece(piece.clone(), from.clone(), coord!("f3")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:91:35 [INFO] [stderr] | [INFO] [stderr] 91 | Action::MovePiece(piece.clone(), from.clone(), coord!("e2")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:91:50 [INFO] [stderr] | [INFO] [stderr] 91 | Action::MovePiece(piece.clone(), from.clone(), coord!("e2")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:92:35 [INFO] [stderr] | [INFO] [stderr] 92 | Action::MovePiece(piece.clone(), from.clone(), coord!("c2")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:92:50 [INFO] [stderr] | [INFO] [stderr] 92 | Action::MovePiece(piece.clone(), from.clone(), coord!("c2")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:93:35 [INFO] [stderr] | [INFO] [stderr] 93 | Action::MovePiece(piece.clone(), from.clone(), coord!("b3")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:93:50 [INFO] [stderr] | [INFO] [stderr] 93 | Action::MovePiece(piece.clone(), from.clone(), coord!("b3")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:94:35 [INFO] [stderr] | [INFO] [stderr] 94 | Action::MovePiece(piece.clone(), from.clone(), coord!("b5")), [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `piece` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/knight.rs:94:50 [INFO] [stderr] | [INFO] [stderr] 94 | Action::MovePiece(piece.clone(), from.clone(), coord!("b5")), [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:50:31 [INFO] [stderr] | [INFO] [stderr] 50 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:50:71 [INFO] [stderr] | [INFO] [stderr] 50 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:71:17 [INFO] [stderr] | [INFO] [stderr] 71 | state.piece_at(*from).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | state.piece_at(c).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:73:17 [INFO] [stderr] | [INFO] [stderr] 73 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:105:21 [INFO] [stderr] | [INFO] [stderr] 105 | state.piece_at(coord!("a1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:110:21 [INFO] [stderr] | [INFO] [stderr] 110 | state.piece_at(coord!("a1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:115:21 [INFO] [stderr] | [INFO] [stderr] 115 | state.piece_at(coord!("a1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:120:21 [INFO] [stderr] | [INFO] [stderr] 120 | state.piece_at(coord!("a1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:125:21 [INFO] [stderr] | [INFO] [stderr] 125 | state.piece_at(coord!("a1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | state.piece_at(coord!("a8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:151:21 [INFO] [stderr] | [INFO] [stderr] 151 | state.piece_at(coord!("a8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:156:21 [INFO] [stderr] | [INFO] [stderr] 156 | state.piece_at(coord!("a8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | state.piece_at(coord!("a8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | state.piece_at(coord!("a8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("a8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:187:21 [INFO] [stderr] | [INFO] [stderr] 187 | state.piece_at(coord!("h8")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h8")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:207:21 [INFO] [stderr] | [INFO] [stderr] 207 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:212:21 [INFO] [stderr] | [INFO] [stderr] 212 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:217:21 [INFO] [stderr] | [INFO] [stderr] 217 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:222:21 [INFO] [stderr] | [INFO] [stderr] 222 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:227:21 [INFO] [stderr] | [INFO] [stderr] 227 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:237:21 [INFO] [stderr] | [INFO] [stderr] 237 | state.piece_at(coord!("h1")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("h1")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:263:21 [INFO] [stderr] | [INFO] [stderr] 263 | state.piece_at(coord!("d4")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d4")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:264:21 [INFO] [stderr] | [INFO] [stderr] 264 | state.piece_at(coord!("g7")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("g7")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:269:21 [INFO] [stderr] | [INFO] [stderr] 269 | state.piece_at(coord!("d4")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d4")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/bishop.rs:270:21 [INFO] [stderr] | [INFO] [stderr] 270 | state.piece_at(coord!("b6")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("b6")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:30:31 [INFO] [stderr] | [INFO] [stderr] 30 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:30:71 [INFO] [stderr] | [INFO] [stderr] 30 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | state.piece_at(*from).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | state.piece_at(c).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/rook.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | from.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:39:31 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:39:71 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:29 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:69 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:68:105 [INFO] [stderr] | [INFO] [stderr] 68 | Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | state.piece_at(coord!("d4")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d4")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:169:21 [INFO] [stderr] | [INFO] [stderr] 169 | state.piece_at(coord!("d6")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d6")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:174:21 [INFO] [stderr] | [INFO] [stderr] 174 | state.piece_at(coord!("d4")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d4")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | state.piece_at(coord!("g7")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("g7")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:180:21 [INFO] [stderr] | [INFO] [stderr] 180 | state.piece_at(coord!("d4")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("d4")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/queen.rs:181:21 [INFO] [stderr] | [INFO] [stderr] 181 | state.piece_at(coord!("b6")).unwrap().clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(coord!("b6")).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:39:27 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:39:67 [INFO] [stderr] | [INFO] [stderr] 39 | Action::MovePiece(state.piece_at(*from).unwrap().clone(), from.clone(), c) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:30 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(*from).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:70 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.piece_at(c).unwrap()` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/king.rs:71:106 [INFO] [stderr] | [INFO] [stderr] 71 | .map(|c| Action::Capture(state.piece_at(*from).unwrap().clone(), state.piece_at(c).unwrap().clone(), from.clone(), c)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*from` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/engine/mod.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / if let &Some(piece) = state.piece_at(*from) { [INFO] [stderr] 29 | | match piece.rank() { [INFO] [stderr] 30 | | Rank::Pawn => pawn::possible_actions(from, state), [INFO] [stderr] 31 | | Rank::Knight => knight::possible_actions(from, state), [INFO] [stderr] ... | [INFO] [stderr] 38 | | vec![] [INFO] [stderr] 39 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 28 | if let Some(piece) = *state.piece_at(*from) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/mod.rs:154:29 [INFO] [stderr] | [INFO] [stderr] 154 | let mut current_coord = starting_coordinate.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*starting_coordinate` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/engine/mod.rs:182:29 [INFO] [stderr] | [INFO] [stderr] 182 | let mut current_coord = starting_coordinate.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*starting_coordinate` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/engine/mod.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | / if let &Some(piece) = board.piece_at(next) { [INFO] [stderr] 190 | | if piece.side() != side { [INFO] [stderr] 191 | | result = Some(next); [INFO] [stderr] 192 | | break; [INFO] [stderr] ... | [INFO] [stderr] 195 | | } [INFO] [stderr] 196 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 189 | if let Some(piece) = *board.piece_at(next) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `is_in_check` doesn't need a mutable reference [INFO] [stderr] --> src/engine/mod.rs:222:29 [INFO] [stderr] | [INFO] [stderr] 222 | assert!(is_in_check(&mut state, Side::White)); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `is_in_check` doesn't need a mutable reference [INFO] [stderr] --> src/engine/mod.rs:234:30 [INFO] [stderr] | [INFO] [stderr] 234 | assert!(!is_in_check(&mut state, Side::White)); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ui.rs:85:35 [INFO] [stderr] | [INFO] [stderr] 85 | fn draw_square_with_piece(square: &Option, out: &mut Out, row_index: usize, col_index: usize, session: &Session) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ui.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / match session.state() { [INFO] [stderr] 107 | | &SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] 108 | | match *action { [INFO] [stderr] 109 | | Action::MovePiece(_,_,ref to) => matches_coordinate(session, to, row_index, col_index), [INFO] [stderr] ... | [INFO] [stderr] 114 | | _ => false [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 106 | match *session.state() { [INFO] [stderr] 107 | SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/ui.rs:107:70 [INFO] [stderr] | [INFO] [stderr] 107 | &SessionState::CoordinateSelected(_, ref actions) => actions.into_iter().any(|action| [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ui.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | / if let &Some(p) = piece { [INFO] [stderr] 134 | | match (p.side(), p.rank()) { [INFO] [stderr] 135 | | (Side::White, Rank::Pawn) => "♙", [INFO] [stderr] 136 | | (Side::White, Rank::Knight) => "♘", [INFO] [stderr] ... | [INFO] [stderr] 149 | | " " [INFO] [stderr] 150 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | if let Some(p) = *piece { [INFO] [stderr] | ^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/ui.rs:155:63 [INFO] [stderr] | [INFO] [stderr] 155 | Side::White => Box::new(session.game().board().rows().into_iter().rev()), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/ui.rs:156:63 [INFO] [stderr] | [INFO] [stderr] 156 | Side::Black => Box::new(session.game().board().rows().into_iter()) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/ui.rs:162:37 [INFO] [stderr] | [INFO] [stderr] 162 | Side::White => Box::new(row.into_iter()), [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/ui.rs:163:37 [INFO] [stderr] | [INFO] [stderr] 163 | Side::Black => Box::new(row.into_iter().rev()) [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `session::Session` [INFO] [stderr] --> src/session.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Session { [INFO] [stderr] 29 | | Session { [INFO] [stderr] 30 | | current_game: Game::new(), [INFO] [stderr] 31 | | cursor: Cursor::new(Side::White), [INFO] [stderr] ... | [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | impl Default for session::Session { [INFO] [stderr] 28 | fn default() -> Self { [INFO] [stderr] 29 | Self::new() [INFO] [stderr] 30 | } [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/session.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | / if let &Some(piece) = self.current_game.state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] 86 | | if piece.side() == self.current_game.state().next_to_move() { [INFO] [stderr] 87 | | let possible_actions = self.current_game.state_mut().actions_at(self.cursor.to_coord()); [INFO] [stderr] 88 | | next_state = Some(SessionState::CoordinateSelected(self.cursor.to_coord(), possible_actions)); [INFO] [stderr] 89 | | } [INFO] [stderr] 90 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 85 | if let Some(piece) = *self.current_game.state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/session.rs:94:55 [INFO] [stderr] | [INFO] [stderr] 94 | if let Some(action) = actions.into_iter().find(|a| to_coordinate_for(a) == &self.cursor.to_coord() ) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/session.rs:101:32 [INFO] [stderr] | [INFO] [stderr] 101 | } else if let &Some(piece) = self.game().state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 102 | | if piece.side() == self.game().state().next_to_move() { [INFO] [stderr] 103 | | let possible_actions = self.current_game.state_mut().actions_at(self.cursor.to_coord()); [INFO] [stderr] 104 | | next_state = Some(SessionState::CoordinateSelected(self.cursor.to_coord(), possible_actions)); [INFO] [stderr] ... | [INFO] [stderr] 108 | | next_state = Some(SessionState::NothingSelected); [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 101 | } else if let Some(piece) = *self.game().state().piece_at(self.cursor.to_coord()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/ai.rs:37:54 [INFO] [stderr] | [INFO] [stderr] 37 | return evaluate_board(state, next_to_move) - depth as i32; // penalty for games that end early [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(depth)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:43:48 [INFO] [stderr] | [INFO] [stderr] 43 | let value = state.evaluate_with_action(action.clone(), |mut new_state| { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `action` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:124:23 [INFO] [stderr] | [INFO] [stderr] 124 | state.advance(action1.clone().unwrap()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `action1` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:128:23 [INFO] [stderr] | [INFO] [stderr] 128 | state.advance(action2.clone().unwrap()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `action2` [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:132:23 [INFO] [stderr] | [INFO] [stderr] 132 | state.advance(action3.clone().unwrap()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `action3` [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] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `terminal-chess`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e8c77634927aee4cfb68231ae199f815870609fe7bba8f7dc4a7c744bea1a285"` [INFO] running `"docker" "rm" "-f" "e8c77634927aee4cfb68231ae199f815870609fe7bba8f7dc4a7c744bea1a285"` [INFO] [stdout] e8c77634927aee4cfb68231ae199f815870609fe7bba8f7dc4a7c744bea1a285