[INFO] updating cached repository justinaustin/ruci [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/justinaustin/ruci [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/justinaustin/ruci" "work/ex/clippy-test-run/sources/stable/gh/justinaustin/ruci"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/justinaustin/ruci'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/justinaustin/ruci" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/justinaustin/ruci"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/justinaustin/ruci'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 50083624d7e1f5fe009854f487346e79c1765614 [INFO] sha for GitHub repo justinaustin/ruci: 50083624d7e1f5fe009854f487346e79c1765614 [INFO] validating manifest of justinaustin/ruci 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 justinaustin/ruci 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 justinaustin/ruci [INFO] finished frobbing justinaustin/ruci [INFO] frobbed toml for justinaustin/ruci written to work/ex/clippy-test-run/sources/stable/gh/justinaustin/ruci/Cargo.toml [INFO] started frobbing justinaustin/ruci [INFO] finished frobbing justinaustin/ruci [INFO] frobbed toml for justinaustin/ruci written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/justinaustin/ruci/Cargo.toml [INFO] crate justinaustin/ruci 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 justinaustin/ruci 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-5/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/justinaustin/ruci:/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] 01d743dadc92bc6b481a8404113975e325158389e2b83236de89c575edfee03d [INFO] running `"docker" "start" "-a" "01d743dadc92bc6b481a8404113975e325158389e2b83236de89c575edfee03d"` [INFO] [stderr] Checking ruci v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/logic.rs:92:42 [INFO] [stderr] | [INFO] [stderr] 92 | let new_loc = Location { rank: rank, file: file }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rank` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/logic.rs:92:54 [INFO] [stderr] | [INFO] [stderr] 92 | let new_loc = Location { rank: rank, file: file }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/moves.rs:74:36 [INFO] [stderr] | [INFO] [stderr] 74 | depth, score, "1", "1"); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/moves.rs:74:41 [INFO] [stderr] | [INFO] [stderr] 74 | depth, score, "1", "1"); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/moves.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/board.rs:332:9 [INFO] [stderr] | [INFO] [stderr] 332 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/logic.rs:92:42 [INFO] [stderr] | [INFO] [stderr] 92 | let new_loc = Location { rank: rank, file: file }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `rank` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/logic.rs:92:54 [INFO] [stderr] | [INFO] [stderr] 92 | let new_loc = Location { rank: rank, file: file }; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/moves.rs:74:36 [INFO] [stderr] | [INFO] [stderr] 74 | depth, score, "1", "1"); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/moves.rs:74:41 [INFO] [stderr] | [INFO] [stderr] 74 | depth, score, "1", "1"); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/moves.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefMut` [INFO] [stderr] --> src/evaluation.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::RefMut; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Piece` [INFO] [stderr] --> src/evaluation.rs:8:13 [INFO] [stderr] | [INFO] [stderr] 8 | use piece::{Piece, Type}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:264:20 [INFO] [stderr] | [INFO] [stderr] 264 | Some(p) => return piece.color != p.color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/logic.rs:240:12 [INFO] [stderr] | [INFO] [stderr] 240 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 241 | | if end.file > start.file { [INFO] [stderr] 242 | | // southwest [INFO] [stderr] 243 | | let mut file = low_file + 1; [INFO] [stderr] ... | [INFO] [stderr] 259 | | } [INFO] [stderr] 260 | | } [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] 240 | } else if end.file > start.file { [INFO] [stderr] 241 | // southwest [INFO] [stderr] 242 | let mut file = low_file + 1; [INFO] [stderr] 243 | for rank in ((low_rank + 1)..high_rank).rev() { [INFO] [stderr] 244 | if board.board[rank as usize][file as usize] != None { [INFO] [stderr] 245 | return false [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:330:17 [INFO] [stderr] | [INFO] [stderr] 330 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:331:20 [INFO] [stderr] | [INFO] [stderr] 331 | Some(p) => return piece.color != p.color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:383:17 [INFO] [stderr] | [INFO] [stderr] 383 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:384:20 [INFO] [stderr] | [INFO] [stderr] 384 | Some(p) => return piece.color != p.color [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/logic.rs:357:20 [INFO] [stderr] | [INFO] [stderr] 357 | } else if end.rank == 0 && end.file == 2 && board.castling_availability.white_queenside { [INFO] [stderr] | ____________________^ [INFO] [stderr] 358 | | if board.board[0][3] == None && board.board[0][2] == None { [INFO] [stderr] 359 | | return !is_king_in_check(board, Color::White) && [INFO] [stderr] 360 | | !would_king_be_in_check(board, piece, start, Location { rank: 0, file: 3 }) [INFO] [stderr] 361 | | } [INFO] [stderr] 362 | | } [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] 357 | } else if end.rank == 0 && end.file == 2 && board.castling_availability.white_queenside && board.board[0][3] == None && board.board[0][2] == None { [INFO] [stderr] 358 | return !is_king_in_check(board, Color::White) && [INFO] [stderr] 359 | !would_king_be_in_check(board, piece, start, Location { rank: 0, file: 3 }) [INFO] [stderr] 360 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/logic.rs:370:20 [INFO] [stderr] | [INFO] [stderr] 370 | } else if end.rank == 7 && end.file == 2 && board.castling_availability.black_queenside { [INFO] [stderr] | ____________________^ [INFO] [stderr] 371 | | if board.board[7][3] == None && board.board[7][2] == None { [INFO] [stderr] 372 | | return !is_king_in_check(board, Color::Black) && [INFO] [stderr] 373 | | !would_king_be_in_check(board, piece, start, Location { rank: 7, file: 3 }) [INFO] [stderr] 374 | | } [INFO] [stderr] 375 | | } [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] 370 | } else if end.rank == 7 && end.file == 2 && board.castling_availability.black_queenside && board.board[7][3] == None && board.board[7][2] == None { [INFO] [stderr] 371 | return !is_king_in_check(board, Color::Black) && [INFO] [stderr] 372 | !would_king_be_in_check(board, piece, start, Location { rank: 7, file: 3 }) [INFO] [stderr] 373 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `thread_rng` [INFO] [stderr] --> src/zobrist.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use rand::{Rng, thread_rng}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:43:2 [INFO] [stderr] | [INFO] [stderr] 43 | if input.len() > 1 { [INFO] [stderr] | _____^ [INFO] [stderr] 44 | | if input[1] == "fen" { [INFO] [stderr] 45 | | let mut s = input[2].to_owned(); [INFO] [stderr] 46 | | s.push_str(" "); [INFO] [stderr] ... | [INFO] [stderr] 58 | | } [INFO] [stderr] 59 | | } [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] 43 | if input.len() > 1 && input[1] == "fen" { [INFO] [stderr] 44 | let mut s = input[2].to_owned(); [INFO] [stderr] 45 | s.push_str(" "); [INFO] [stderr] 46 | s.push_str(input[3]); [INFO] [stderr] 47 | s.push_str(" "); [INFO] [stderr] 48 | s.push_str(input[4]); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefMut` [INFO] [stderr] --> src/evaluation.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::RefMut; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Piece` [INFO] [stderr] --> src/evaluation.rs:8:13 [INFO] [stderr] | [INFO] [stderr] 8 | use piece::{Piece, Type}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:264:20 [INFO] [stderr] | [INFO] [stderr] 264 | Some(p) => return piece.color != p.color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/logic.rs:240:12 [INFO] [stderr] | [INFO] [stderr] 240 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 241 | | if end.file > start.file { [INFO] [stderr] 242 | | // southwest [INFO] [stderr] 243 | | let mut file = low_file + 1; [INFO] [stderr] ... | [INFO] [stderr] 259 | | } [INFO] [stderr] 260 | | } [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] 240 | } else if end.file > start.file { [INFO] [stderr] 241 | // southwest [INFO] [stderr] 242 | let mut file = low_file + 1; [INFO] [stderr] 243 | for rank in ((low_rank + 1)..high_rank).rev() { [INFO] [stderr] 244 | if board.board[rank as usize][file as usize] != None { [INFO] [stderr] 245 | return false [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:330:17 [INFO] [stderr] | [INFO] [stderr] 330 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:331:20 [INFO] [stderr] | [INFO] [stderr] 331 | Some(p) => return piece.color != p.color, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:383:17 [INFO] [stderr] | [INFO] [stderr] 383 | None => return true, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/logic.rs:384:20 [INFO] [stderr] | [INFO] [stderr] 384 | Some(p) => return piece.color != p.color [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `piece.color != p.color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/logic.rs:357:20 [INFO] [stderr] | [INFO] [stderr] 357 | } else if end.rank == 0 && end.file == 2 && board.castling_availability.white_queenside { [INFO] [stderr] | ____________________^ [INFO] [stderr] 358 | | if board.board[0][3] == None && board.board[0][2] == None { [INFO] [stderr] 359 | | return !is_king_in_check(board, Color::White) && [INFO] [stderr] 360 | | !would_king_be_in_check(board, piece, start, Location { rank: 0, file: 3 }) [INFO] [stderr] 361 | | } [INFO] [stderr] 362 | | } [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] 357 | } else if end.rank == 0 && end.file == 2 && board.castling_availability.white_queenside && board.board[0][3] == None && board.board[0][2] == None { [INFO] [stderr] 358 | return !is_king_in_check(board, Color::White) && [INFO] [stderr] 359 | !would_king_be_in_check(board, piece, start, Location { rank: 0, file: 3 }) [INFO] [stderr] 360 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/logic.rs:370:20 [INFO] [stderr] | [INFO] [stderr] 370 | } else if end.rank == 7 && end.file == 2 && board.castling_availability.black_queenside { [INFO] [stderr] | ____________________^ [INFO] [stderr] 371 | | if board.board[7][3] == None && board.board[7][2] == None { [INFO] [stderr] 372 | | return !is_king_in_check(board, Color::Black) && [INFO] [stderr] 373 | | !would_king_be_in_check(board, piece, start, Location { rank: 7, file: 3 }) [INFO] [stderr] 374 | | } [INFO] [stderr] 375 | | } [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] 370 | } else if end.rank == 7 && end.file == 2 && board.castling_availability.black_queenside && board.board[7][3] == None && board.board[7][2] == None { [INFO] [stderr] 371 | return !is_king_in_check(board, Color::Black) && [INFO] [stderr] 372 | !would_king_be_in_check(board, piece, start, Location { rank: 7, file: 3 }) [INFO] [stderr] 373 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `thread_rng` [INFO] [stderr] --> src/zobrist.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | use rand::{Rng, thread_rng}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:43:2 [INFO] [stderr] | [INFO] [stderr] 43 | if input.len() > 1 { [INFO] [stderr] | _____^ [INFO] [stderr] 44 | | if input[1] == "fen" { [INFO] [stderr] 45 | | let mut s = input[2].to_owned(); [INFO] [stderr] 46 | | s.push_str(" "); [INFO] [stderr] ... | [INFO] [stderr] 58 | | } [INFO] [stderr] 59 | | } [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] 43 | if input.len() > 1 && input[1] == "fen" { [INFO] [stderr] 44 | let mut s = input[2].to_owned(); [INFO] [stderr] 45 | s.push_str(" "); [INFO] [stderr] 46 | s.push_str(input[3]); [INFO] [stderr] 47 | s.push_str(" "); [INFO] [stderr] 48 | s.push_str(input[4]); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mobility_weight` [INFO] [stderr] --> src/evaluation.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | let mobility_weight = MOBILITY_WEIGHT * mobility_diff; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_mobility_weight` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/logic.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | if let Some(p) = board.board[start.rank as usize][start.file as usize] { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `mobility_weight` [INFO] [stderr] --> src/evaluation.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 157 | let mobility_weight = MOBILITY_WEIGHT * mobility_diff; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using `_mobility_weight` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `p` [INFO] [stderr] --> src/logic.rs:89:17 [INFO] [stderr] | [INFO] [stderr] 89 | if let Some(p) = board.board[start.rank as usize][start.file as usize] { [INFO] [stderr] | ^ help: consider using `_p` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `quiescence` [INFO] [stderr] --> src/evaluation.rs:260:1 [INFO] [stderr] | [INFO] [stderr] 260 | fn quiescence(board: &Board, mut alpha: f64, beta: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `is_valid_move_string` [INFO] [stderr] --> src/logic.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn is_valid_move_string(board: &Board, chess_move: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `is_checkmate` [INFO] [stderr] --> src/logic.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn is_checkmate(board: &Board) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `is_stalemate` [INFO] [stderr] --> src/logic.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn is_stalemate(board: &Board) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_PAWN` [INFO] [stderr] --> src/zobrist.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | const WHITE_PAWN: usize = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_BISHOP` [INFO] [stderr] --> src/zobrist.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | const WHITE_BISHOP: usize = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_KNIGHT` [INFO] [stderr] --> src/zobrist.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | const WHITE_KNIGHT: usize = 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_ROOK` [INFO] [stderr] --> src/zobrist.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | const WHITE_ROOK: usize = 3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_QUEEN` [INFO] [stderr] --> src/zobrist.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | const WHITE_QUEEN: usize = 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_KING` [INFO] [stderr] --> src/zobrist.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | const WHITE_KING: usize = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_PAWN` [INFO] [stderr] --> src/zobrist.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | const BLACK_PAWN: usize = 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_BISHOP` [INFO] [stderr] --> src/zobrist.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | const BLACK_BISHOP: usize = 7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_KNIGHT` [INFO] [stderr] --> src/zobrist.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | const BLACK_KNIGHT: usize = 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_ROOK` [INFO] [stderr] --> src/zobrist.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | const BLACK_ROOK: usize = 9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_QUEEN` [INFO] [stderr] --> src/zobrist.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | const BLACK_QUEEN: usize = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_KING` [INFO] [stderr] --> src/zobrist.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | const BLACK_KING: usize = 11; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hash` [INFO] [stderr] --> src/zobrist.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn hash(&self, board: &Board) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_position` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | fn print_position(input: &Vec<&str>) { [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/board.rs:13:24 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn to_notation(&self) -> String { [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/board.rs:26:38 [INFO] [stderr] | [INFO] [stderr] 26 | output.push(char::from_digit((self.rank + 1) as u32, 10).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.rank + 1)` [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: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:114:43 [INFO] [stderr] | [INFO] [stderr] 114 | let ranks = piece_placement.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ranks` [INFO] [stderr] --> src/board.rs:115:18 [INFO] [stderr] | [INFO] [stderr] 115 | for i in 0..ranks.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 115 | for (i, ) in ranks.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | if castle.contains("K") { [INFO] [stderr] | ^^^ help: try using a char instead: `'K'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:128:28 [INFO] [stderr] | [INFO] [stderr] 128 | if castle.contains("Q") { [INFO] [stderr] | ^^^ help: try using a char instead: `'Q'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:131:28 [INFO] [stderr] | [INFO] [stderr] 131 | if castle.contains("k") { [INFO] [stderr] | ^^^ help: try using a char instead: `'k'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:134:28 [INFO] [stderr] | [INFO] [stderr] 134 | if castle.contains("q") { [INFO] [stderr] | ^^^ help: try using a char instead: `'q'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/board.rs:191:29 [INFO] [stderr] | [INFO] [stderr] 191 | let mut new_board = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/evaluation.rs:221:93 [INFO] [stderr] | [INFO] [stderr] 221 | } else if board.active_color == Color::Black && score > 0.0 { [INFO] [stderr] | _____________________________________________________________________________________________^ [INFO] [stderr] 222 | | line.clear(); [INFO] [stderr] 223 | | line.push(original_loc.to_notation()); [INFO] [stderr] 224 | | line.push(move_loc.to_notation()); [INFO] [stderr] ... | [INFO] [stderr] 229 | | return score; [INFO] [stderr] 230 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/evaluation.rs:212:86 [INFO] [stderr] | [INFO] [stderr] 212 | if board.active_color == Color::White && score > 0.0 { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 213 | | line.clear(); [INFO] [stderr] 214 | | line.push(original_loc.to_notation()); [INFO] [stderr] 215 | | line.push(move_loc.to_notation()); [INFO] [stderr] ... | [INFO] [stderr] 220 | | return score; [INFO] [stderr] 221 | | } else if board.active_color == Color::Black && score > 0.0 { [INFO] [stderr] | |_________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: function is never used: `quiescence` [INFO] [stderr] --> src/evaluation.rs:260:1 [INFO] [stderr] | [INFO] [stderr] 260 | fn quiescence(board: &Board, mut alpha: f64, beta: f64) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_PAWN` [INFO] [stderr] --> src/zobrist.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | const WHITE_PAWN: usize = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_BISHOP` [INFO] [stderr] --> src/zobrist.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | const WHITE_BISHOP: usize = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_KNIGHT` [INFO] [stderr] --> src/zobrist.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | const WHITE_KNIGHT: usize = 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_ROOK` [INFO] [stderr] --> src/zobrist.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | const WHITE_ROOK: usize = 3; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_QUEEN` [INFO] [stderr] --> src/zobrist.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | const WHITE_QUEEN: usize = 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `WHITE_KING` [INFO] [stderr] --> src/zobrist.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | const WHITE_KING: usize = 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_PAWN` [INFO] [stderr] --> src/zobrist.rs:17:1 [INFO] [stderr] | [INFO] [stderr] 17 | const BLACK_PAWN: usize = 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_BISHOP` [INFO] [stderr] --> src/zobrist.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | const BLACK_BISHOP: usize = 7; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_KNIGHT` [INFO] [stderr] --> src/zobrist.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | const BLACK_KNIGHT: usize = 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_ROOK` [INFO] [stderr] --> src/zobrist.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | const BLACK_ROOK: usize = 9; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_QUEEN` [INFO] [stderr] --> src/zobrist.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | const BLACK_QUEEN: usize = 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `BLACK_KING` [INFO] [stderr] --> src/zobrist.rs:22:1 [INFO] [stderr] | [INFO] [stderr] 22 | const BLACK_KING: usize = 11; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `hash` [INFO] [stderr] --> src/zobrist.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn hash(&self, board: &Board) -> u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_position` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | fn print_position(input: &Vec<&str>) { [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/board.rs:13:24 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn to_notation(&self) -> String { [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/board.rs:26:38 [INFO] [stderr] | [INFO] [stderr] 26 | output.push(char::from_digit((self.rank + 1) as u32, 10).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.rank + 1)` [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/logic.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | let mut new_board = board.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*board` [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: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:114:43 [INFO] [stderr] | [INFO] [stderr] 114 | let ranks = piece_placement.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ranks` [INFO] [stderr] --> src/board.rs:115:18 [INFO] [stderr] | [INFO] [stderr] 115 | for i in 0..ranks.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 115 | for (i, ) in ranks.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | if castle.contains("K") { [INFO] [stderr] | ^^^ help: try using a char instead: `'K'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:128:28 [INFO] [stderr] | [INFO] [stderr] 128 | if castle.contains("Q") { [INFO] [stderr] | ^^^ help: try using a char instead: `'Q'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:131:28 [INFO] [stderr] | [INFO] [stderr] 131 | if castle.contains("k") { [INFO] [stderr] | ^^^ help: try using a char instead: `'k'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/board.rs:134:28 [INFO] [stderr] | [INFO] [stderr] 134 | if castle.contains("q") { [INFO] [stderr] | ^^^ help: try using a char instead: `'q'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/logic.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | match p.piece_type { [INFO] [stderr] | _________________^ [INFO] [stderr] 117 | | Type::King => if p.color == color { [INFO] [stderr] 118 | | king_location.rank = rank as u8; [INFO] [stderr] 119 | | king_location.file = file as u8; [INFO] [stderr] 120 | | }, [INFO] [stderr] 121 | | _ => {} [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 116 | if let Type::King = p.piece_type { if p.color == color { [INFO] [stderr] 117 | king_location.rank = rank as u8; [INFO] [stderr] 118 | king_location.file = file as u8; [INFO] [stderr] 119 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/board.rs:191:29 [INFO] [stderr] | [INFO] [stderr] 191 | let mut new_board = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [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: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | file = file + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:237:17 [INFO] [stderr] | [INFO] [stderr] 237 | file = file - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:248:17 [INFO] [stderr] | [INFO] [stderr] 248 | file = file + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:257:17 [INFO] [stderr] | [INFO] [stderr] 257 | file = file - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/moves.rs:27:46 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn update_position(&mut self, input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/moves.rs:45:62 [INFO] [stderr] | [INFO] [stderr] 45 | let index = input.iter().position(|&r| r == "moves").unwrap_or(input.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| input.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `input`. [INFO] [stderr] --> src/moves.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | for i in (index + 1)..input.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 46 | for in input.iter().skip((index + 1)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in m.chars().enumerate()` or similar iterators [INFO] [stderr] --> src/moves.rs:52:23 [INFO] [stderr] | [INFO] [stderr] 52 | for ch in m.chars() { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/evaluation.rs:221:93 [INFO] [stderr] | [INFO] [stderr] 221 | } else if board.active_color == Color::Black && score > 0.0 { [INFO] [stderr] | _____________________________________________________________________________________________^ [INFO] [stderr] 222 | | line.clear(); [INFO] [stderr] 223 | | line.push(original_loc.to_notation()); [INFO] [stderr] 224 | | line.push(move_loc.to_notation()); [INFO] [stderr] ... | [INFO] [stderr] 229 | | return score; [INFO] [stderr] 230 | | } [INFO] [stderr] | |_________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/evaluation.rs:212:86 [INFO] [stderr] | [INFO] [stderr] 212 | if board.active_color == Color::White && score > 0.0 { [INFO] [stderr] | ______________________________________________________________________________________^ [INFO] [stderr] 213 | | line.clear(); [INFO] [stderr] 214 | | line.push(original_loc.to_notation()); [INFO] [stderr] 215 | | line.push(move_loc.to_notation()); [INFO] [stderr] ... | [INFO] [stderr] 220 | | return score; [INFO] [stderr] 221 | | } else if board.active_color == Color::Black && score > 0.0 { [INFO] [stderr] | |_________________________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:42:26 [INFO] [stderr] | [INFO] [stderr] 42 | fn print_position(input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:76:29 [INFO] [stderr] | [INFO] [stderr] 76 | fn evaluate_position(input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/logic.rs:104:22 [INFO] [stderr] | [INFO] [stderr] 104 | let mut new_board = board.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try dereferencing it: `*board` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/logic.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | match p.piece_type { [INFO] [stderr] | _________________^ [INFO] [stderr] 117 | | Type::King => if p.color == color { [INFO] [stderr] 118 | | king_location.rank = rank as u8; [INFO] [stderr] 119 | | king_location.file = file as u8; [INFO] [stderr] 120 | | }, [INFO] [stderr] 121 | | _ => {} [INFO] [stderr] 122 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 116 | if let Type::King = p.piece_type { if p.color == color { [INFO] [stderr] 117 | king_location.rank = rank as u8; [INFO] [stderr] 118 | king_location.file = file as u8; [INFO] [stderr] 119 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | file = file + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:237:17 [INFO] [stderr] | [INFO] [stderr] 237 | file = file - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:248:17 [INFO] [stderr] | [INFO] [stderr] 248 | file = file + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/logic.rs:257:17 [INFO] [stderr] | [INFO] [stderr] 257 | file = file - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `file -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: Could not compile `ruci`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/moves.rs:27:46 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn update_position(&mut self, input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/moves.rs:45:62 [INFO] [stderr] | [INFO] [stderr] 45 | let index = input.iter().position(|&r| r == "moves").unwrap_or(input.len()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| input.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `input`. [INFO] [stderr] --> src/moves.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | for i in (index + 1)..input.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 46 | for in input.iter().skip((index + 1)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the variable `j` is used as a loop counter. Consider using `for (j, item) in m.chars().enumerate()` or similar iterators [INFO] [stderr] --> src/moves.rs:52:23 [INFO] [stderr] | [INFO] [stderr] 52 | for ch in m.chars() { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:42:26 [INFO] [stderr] | [INFO] [stderr] 42 | fn print_position(input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:76:29 [INFO] [stderr] | [INFO] [stderr] 76 | fn evaluate_position(input: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ruci`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "01d743dadc92bc6b481a8404113975e325158389e2b83236de89c575edfee03d"` [INFO] running `"docker" "rm" "-f" "01d743dadc92bc6b481a8404113975e325158389e2b83236de89c575edfee03d"` [INFO] [stdout] 01d743dadc92bc6b481a8404113975e325158389e2b83236de89c575edfee03d