[INFO] cloning repository https://github.com/IndaPlus25/alviny-task-3
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/IndaPlus25/alviny-task-3" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIndaPlus25%2Falviny-task-3", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIndaPlus25%2Falviny-task-3'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] fb5b3a3703ca2d1f1bc0b370a03066b4a2cfde19
[INFO] testing IndaPlus25/alviny-task-3 against master#d98a5da813da67eb189387b8ccfb73cf481275d8+rustflags=-Copt-level=3 for pr-138759
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIndaPlus25%2Falviny-task-3" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/IndaPlus25/alviny-task-3
[INFO] finished tweaking git repo https://github.com/IndaPlus25/alviny-task-3
[INFO] tweaked toml for git repo https://github.com/IndaPlus25/alviny-task-3 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/IndaPlus25/alviny-task-3 on toolchain d98a5da813da67eb189387b8ccfb73cf481275d8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/IndaPlus25/alviny-task-3 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 62bffc0a9ccb874e05d8b9d053ed91cc5c49539ef571c37bd8acb756640457f1
[INFO] running `Command { std: "docker" "start" "-a" "62bffc0a9ccb874e05d8b9d053ed91cc5c49539ef571c37bd8acb756640457f1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "62bffc0a9ccb874e05d8b9d053ed91cc5c49539ef571c37bd8acb756640457f1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "62bffc0a9ccb874e05d8b9d053ed91cc5c49539ef571c37bd8acb756640457f1", kill_on_drop: false }`
[INFO] [stdout] 62bffc0a9ccb874e05d8b9d053ed91cc5c49539ef571c37bd8acb756640457f1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] e6a19b6783cd0e4860c92a5af74bc0187c41b4698076d214a6a8eac27e929dea
[INFO] running `Command { std: "docker" "start" "-a" "e6a19b6783cd0e4860c92a5af74bc0187c41b4698076d214a6a8eac27e929dea", kill_on_drop: false }`
[INFO] [stderr]    Compiling alviny-task-3 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `max`
[INFO] [stdout]   --> src/lib.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::cmp::{min, max};
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:617:32
[INFO] [stdout]     |
[INFO] [stdout] 617 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 617 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout] 617 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:622:32
[INFO] [stdout]     |
[INFO] [stdout] 622 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 622 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout] 622 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:649:32
[INFO] [stdout]     |
[INFO] [stdout] 649 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 649 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout] 649 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:654:32
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout] 654 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:760:24
[INFO] [stdout]     |
[INFO] [stdout] 760 |                     if (is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout]     |                        ^
[INFO] [stdout] 761 |                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*'))  {
[INFO] [stdout]     |                                                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 760 ~                     if is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout] 761 ~                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*')  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:217:28
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn get_available_moves(mut board: Board,
[INFO] [stdout]     |                            ----^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:316:25
[INFO] [stdout]     |
[INFO] [stdout] 316 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:337:25
[INFO] [stdout]     |
[INFO] [stdout] 337 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_friendly_piece` is never used
[INFO] [stdout]    --> src/lib.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn is_friendly_piece(active_player: char, piece: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.77s
[INFO] running `Command { std: "docker" "inspect" "e6a19b6783cd0e4860c92a5af74bc0187c41b4698076d214a6a8eac27e929dea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e6a19b6783cd0e4860c92a5af74bc0187c41b4698076d214a6a8eac27e929dea", kill_on_drop: false }`
[INFO] [stdout] e6a19b6783cd0e4860c92a5af74bc0187c41b4698076d214a6a8eac27e929dea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 52b892618ad295f76fa9ea217c06802ec8e33a67427cf1eb36a3d792facafb00
[INFO] running `Command { std: "docker" "start" "-a" "52b892618ad295f76fa9ea217c06802ec8e33a67427cf1eb36a3d792facafb00", kill_on_drop: false }`
[INFO] [stderr]    Compiling alviny-task-3 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `max`
[INFO] [stdout]   --> src/lib.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::cmp::{min, max};
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:617:32
[INFO] [stdout]     |
[INFO] [stdout] 617 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 617 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout] 617 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:622:32
[INFO] [stdout]     |
[INFO] [stdout] 622 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 622 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout] 622 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:649:32
[INFO] [stdout]     |
[INFO] [stdout] 649 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 649 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout] 649 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:654:32
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout] 654 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:760:24
[INFO] [stdout]     |
[INFO] [stdout] 760 |                     if (is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout]     |                        ^
[INFO] [stdout] 761 |                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*'))  {
[INFO] [stdout]     |                                                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 760 ~                     if is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout] 761 ~                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*')  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:217:28
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn get_available_moves(mut board: Board,
[INFO] [stdout]     |                            ----^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:316:25
[INFO] [stdout]     |
[INFO] [stdout] 316 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:337:25
[INFO] [stdout]     |
[INFO] [stdout] 337 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_friendly_piece` is never used
[INFO] [stdout]    --> src/lib.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn is_friendly_piece(active_player: char, piece: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `max`
[INFO] [stdout]   --> src/lib.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::cmp::{min, max};
[INFO] [stdout]    |                     ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:617:32
[INFO] [stdout]     |
[INFO] [stdout] 617 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 617 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stdout] 617 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:622:32
[INFO] [stdout]     |
[INFO] [stdout] 622 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 622 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stdout] 622 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:649:32
[INFO] [stdout]     |
[INFO] [stdout] 649 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 649 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stdout] 649 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:654:32
[INFO] [stdout]     |
[INFO] [stdout] 654 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout]     |                          ^                                                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 654 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stdout] 654 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1] {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/lib.rs:760:24
[INFO] [stdout]     |
[INFO] [stdout] 760 |                     if (is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout]     |                        ^
[INFO] [stdout] 761 |                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*'))  {
[INFO] [stdout]     |                                                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 760 ~                     if is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stdout] 761 ~                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*')  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/lib.rs:217:28
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn get_available_moves(mut board: Board,
[INFO] [stdout]     |                            ----^^^^^
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:316:25
[INFO] [stdout]     |
[INFO] [stdout] 316 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `test_board` is never read
[INFO] [stdout]    --> src/lib.rs:337:25
[INFO] [stdout]     |
[INFO] [stdout] 337 |                         test_board = board.clone();
[INFO] [stdout]     |                         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/lib.rs:1227:13
[INFO] [stdout]      |
[INFO] [stdout] 1227 |         let mut test_position_2 = Game::new_from_fen("6k1/5p1p/8/6p1/2P1p1P1/4P2P/1r6/2K5 w - - 100 47".to_string());
[INFO] [stdout]      |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `testing`
[INFO] [stdout]     --> src/lib.rs:1296:13
[INFO] [stdout]      |
[INFO] [stdout] 1296 |         let testing = test_game.make_move("e7".to_string(), "e5".to_string());
[INFO] [stdout]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/lib.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut test_position = Game::new_from_fen("1nbqkbn1/pppppppp/8/8/3r1r2/8/PPP1P1PP/R3K2R w KQ - 0 1".to_string());
[INFO] [stdout]      |             ----^^^^^^^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_friendly_piece` is never used
[INFO] [stdout]    --> src/lib.rs:164:4
[INFO] [stdout]     |
[INFO] [stdout] 164 | fn is_friendly_piece(active_player: char, piece: char) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 4.33s
[INFO] running `Command { std: "docker" "inspect" "52b892618ad295f76fa9ea217c06802ec8e33a67427cf1eb36a3d792facafb00", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "52b892618ad295f76fa9ea217c06802ec8e33a67427cf1eb36a3d792facafb00", kill_on_drop: false }`
[INFO] [stdout] 52b892618ad295f76fa9ea217c06802ec8e33a67427cf1eb36a3d792facafb00
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Copt-level=3" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+d98a5da813da67eb189387b8ccfb73cf481275d8" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 9928f912eeb4836c105c5254a5599558b83c5dbee6272e8a4cc885dfdd834168
[INFO] running `Command { std: "docker" "start" "-a" "9928f912eeb4836c105c5254a5599558b83c5dbee6272e8a4cc885dfdd834168", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `max`
[INFO] [stderr]   --> src/lib.rs:18:21
[INFO] [stderr]    |
[INFO] [stderr] 18 | use std::cmp::{min, max};
[INFO] [stderr]    |                     ^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:617:32
[INFO] [stderr]     |
[INFO] [stderr] 617 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 617 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stderr] 617 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:622:32
[INFO] [stderr]     |
[INFO] [stderr] 622 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 622 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stderr] 622 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:649:32
[INFO] [stderr]     |
[INFO] [stderr] 649 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 649 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stderr] 649 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:654:32
[INFO] [stderr]     |
[INFO] [stderr] 654 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 654 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stderr] 654 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:760:24
[INFO] [stderr]     |
[INFO] [stderr] 760 |                     if (is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stderr]     |                        ^
[INFO] [stderr] 761 |                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*'))  {
[INFO] [stderr]     |                                                                                      ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 760 ~                     if is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stderr] 761 ~                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*')  {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/lib.rs:217:28
[INFO] [stderr]     |
[INFO] [stderr] 217 | pub fn get_available_moves(mut board: Board,
[INFO] [stderr]     |                            ----^^^^^
[INFO] [stderr]     |                            |
[INFO] [stderr]     |                            help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `test_board` is never read
[INFO] [stderr]    --> src/lib.rs:316:25
[INFO] [stderr]     |
[INFO] [stderr] 316 |                         test_board = board.clone();
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `test_board` is never read
[INFO] [stdout] 
[INFO] [stderr]    --> src/lib.rs:337:25
[INFO] [stdout] running 19 tests
[INFO] [stderr]     |
[INFO] [stderr] 337 |                         test_board = board.clone();
[INFO] [stderr]     |                         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_friendly_piece` is never used
[INFO] [stderr]    --> src/lib.rs:164:4
[INFO] [stderr]     |
[INFO] [stderr] 164 | fn is_friendly_piece(active_player: char, piece: char) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `alviny-task-3` (lib) generated 10 warnings (run `cargo fix --lib -p alviny-task-3` to apply 7 suggestions)
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/lib.rs:1227:13
[INFO] [stderr]      |
[INFO] [stderr] 1227 |         let mut test_position_2 = Game::new_from_fen("6k1/5p1p/8/6p1/2P1p1P1/4P2P/1r6/2K5 w - - 100 47".to_string());
[INFO] [stderr]      |             ----^^^^^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `testing`
[INFO] [stderr]     --> src/lib.rs:1296:13
[INFO] [stderr]      |
[INFO] [stderr] 1296 |         let testing = test_game.make_move("e7".to_string(), "e5".to_string());
[INFO] [stderr]      |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_testing`
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/lib.rs:1310:13
[INFO] [stderr]      |
[INFO] [stderr] 1310 |         let mut test_position = Game::new_from_fen("1nbqkbn1/pppppppp/8/8/3r1r2/8/PPP1P1PP/R3K2R w KQ - 0 1".to_string());
[INFO] [stderr]      |             ----^^^^^^^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: `alviny-task-3` (lib test) generated 13 warnings (10 duplicates) (run `cargo fix --lib -p alviny-task-3 --tests` to apply 2 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.04s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/alviny_task_3-9631e9239703ff5e)
[INFO] [stdout] test tests::test_algebraic_conversion ... ok
[INFO] [stdout] test tests::test_castling_through_check ... ok
[INFO] [stdout] test tests::test_bishop_moves ... ok
[INFO] [stdout] test tests::test_board_representation ... ok
[INFO] [stdout] test tests::test_castling ... ok
[INFO] [stdout] test tests::test_for_checks ... ok
[INFO] [stdout] test tests::test_check_moves ... ok
[INFO] [stdout] test tests::test_game_cases ... ok
[INFO] [stdout] test tests::test_board_coord_conversion ... ok
[INFO] [stdout] test tests::test_2_move_mate ... ok
[INFO] [stdout] test tests::test_king_moves ... ok
[INFO] [stdout] test tests::test_en_passant ... ok
[INFO] [stdout] test tests::test_knight_moves ... ok
[INFO] [stdout] test tests::test_pawn_moves ... ok
[INFO] [stdout] test tests::test_promotion ... ok
[INFO] [stdout] test tests::test_rook_moves ... ok
[INFO] [stdout] test tests::test_move_into_check ... ok
[INFO] [stdout] test tests::test_underpromotion ... ok
[INFO] [stderr]    Doc-tests alviny_task_3
[INFO] [stdout] test tests::test_queen_moves ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:617:32
[INFO] [stderr]     |
[INFO] [stderr] 617 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 617 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1]) {
[INFO] [stderr] 617 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos-1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:622:32
[INFO] [stderr]     |
[INFO] [stderr] 622 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 622 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1]) {
[INFO] [stderr] 622 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos-1, x_pos+1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:649:32
[INFO] [stderr]     |
[INFO] [stderr] 649 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 649 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1]) {
[INFO] [stderr] 649 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos-1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:654:32
[INFO] [stderr]     |
[INFO] [stderr] 654 | ...                   if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stderr]     |                          ^                                                                          ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 654 -                             if (get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1]) {
[INFO] [stderr] 654 +                             if get_board_coords(self.en_passant_square.clone()) == vec![y_pos+1, x_pos+1] {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/lib.rs:760:24
[INFO] [stderr]     |
[INFO] [stderr] 760 |                     if (is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stderr]     |                        ^
[INFO] [stderr] 761 |                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*'))  {
[INFO] [stderr]     |                                                                                      ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 760 ~                     if is_enemy_piece(*color, self.board_state[(y_pos+2) as usize][(x_pos+1) as usize]) ||
[INFO] [stderr] 761 ~                     (self.board_state[(y_pos+2) as usize][(x_pos+1) as usize] == '*')  {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: 5 warnings emitted
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stdout] running 16 tests
[INFO] [stdout] test src/lib.rs - Board::set_promotion (line 1113) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new_from_fen (line 402) ... FAILED
[INFO] [stdout] test src/lib.rs - Board (line 538) ... FAILED
[INFO] [stdout] test src/lib.rs - Game (line 384) ... FAILED
[INFO] [stdout] test src/lib.rs - generate_fen (line 86) ... FAILED
[INFO] [stdout] test src/lib.rs - get_available_moves (line 199) ... FAILED
[INFO] [stdout] test src/lib.rs - get_available_moves (line 212) ... FAILED
[INFO] [stdout] test src/lib.rs - generate_fen (line 95) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new_from_fen (line 411) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::make_move (line 452) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::make_move (line 442) ... FAILED
[INFO] [stdout] test src/lib.rs - Board::set_promotion (line 1122) ... FAILED
[INFO] [stdout] test src/lib.rs - parse_fen (line 27) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new (line 431) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new (line 422) ... FAILED
[INFO] [stdout] test src/lib.rs - parse_fen (line 36) ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/lib.rs - Board::set_promotion (line 1113) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:1114:6
[INFO] [stdout]   |
[INFO] [stdout] 1 | piece: char // A valid FEN chess character.
[INFO] [stdout]   |      ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::new_from_fen (line 402) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:403:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fen: String, // A valid FEN string.
[INFO] [stdout]   |    ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Board (line 538) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:539:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | board_state: Vec<Vec<char>>,
[INFO] [stdout]   |            ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game (line 384) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:385:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fen: String, // the FEN string that represents the current position.
[INFO] [stdout]   |    ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - generate_fen (line 86) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:87:6
[INFO] [stdout]   |
[INFO] [stdout] 1 | board: &Board // A valid FEN string in standard format
[INFO] [stdout]   |      ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - get_available_moves (line 199) stdout ----
[INFO] [stdout] error: expected item, found keyword `mut`
[INFO] [stdout]  --> src/lib.rs:200:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | mut board: Board, // The Board to look at. Usually your_game.board.
[INFO] [stdout]   | ^^^ expected item
[INFO] [stdout]   |
[INFO] [stdout]   = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - get_available_moves (line 212) stdout ----
[INFO] [stdout] error: expected `;`, found `assert_eq`
[INFO] [stdout]  --> src/lib.rs:214:93
[INFO] [stdout]   |
[INFO] [stdout] 4 | let moves = get_available_moves(example_game.board, example_game.board.active_player, false)
[INFO] [stdout]   |                                                                                             ^ help: add `;` here
[INFO] [stdout] 5 | assert_eq!(moves["e2".to_string()], ["e3", "e4"])
[INFO] [stdout]   | --------- unexpected token
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:213:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_game = Game::new(); // Create a new game at the starting position
[INFO] [stdout]   |                    ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `get_available_moves` in this scope
[INFO] [stdout]  --> src/lib.rs:214:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | let moves = get_available_moves(example_game.board, example_game.board.active_player, false)
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::get_available_moves;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0425, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - generate_fen (line 95) stdout ----
[INFO] [stdout] error: expected `;`, found keyword `let`
[INFO] [stdout]  --> src/lib.rs:96:90
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]   |                                                                                          ^ help: add `;` here
[INFO] [stdout] 4 | let example_fen = generate_fen(example_board)
[INFO] [stdout]   | --- unexpected token
[INFO] [stdout] 
[INFO] [stdout] error: expected `;`, found `}`
[INFO] [stdout]  --> src/lib.rs:97:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | let example_fen = generate_fen(example_board)
[INFO] [stdout]   |                                              ^ help: add `;` here
[INFO] [stdout] 5 | } _doctest_main_src_lib_rs_95_0() }
[INFO] [stdout]   | - unexpected token
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `parse_fen` in this scope
[INFO] [stdout]  --> src/lib.rs:96:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]   |                     ^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::parse_fen;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `generate_fen` in this scope
[INFO] [stdout]  --> src/lib.rs:97:19
[INFO] [stdout]   |
[INFO] [stdout] 4 | let example_fen = generate_fen(example_board)
[INFO] [stdout]   |                   ^^^^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::generate_fen;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::new_from_fen (line 411) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:412:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_game = Game::new_from_fen("r1bk3r/p2pBpNp/n4n2/1p1NP2P/6P1/3P4/P1P1K3/q5b1 b - - 1 23".to_string());
[INFO] [stdout]   |                    ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::make_move (line 452) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:453:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_game = Game::new(); // Create a new game at the starting position
[INFO] [stdout]   |                    ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::make_move (line 442) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:443:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | source: String, // The square where the piece to move stands, in algebraic notation.
[INFO] [stdout]   |       ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Board::set_promotion (line 1122) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:1123:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_game = Game::new(); // Create a new game at the starting position
[INFO] [stdout]   |                    ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - parse_fen (line 27) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]  --> src/lib.rs:28:4
[INFO] [stdout]   |
[INFO] [stdout] 1 | fen: &str // A valid FEN string in standard format
[INFO] [stdout]   |    ^ expected one of `!` or `::`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::new (line 431) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:432:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_game = Game::new();
[INFO] [stdout]   |                    ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - Game::new (line 422) stdout ----
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `Game`
[INFO] [stdout]  --> src/lib.rs:423:1
[INFO] [stdout]   |
[INFO] [stdout] 3 | Game::new_from_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1".to_string())
[INFO] [stdout]   | ^^^^ use of undeclared type `Game`
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::Game;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/lib.rs - parse_fen (line 36) stdout ----
[INFO] [stdout] error: expected `;`, found `example_board`
[INFO] [stdout]  --> src/lib.rs:37:90
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]   |                                                                                          ^ help: add `;` here
[INFO] [stdout] 4 | example_board = parse_fen("rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1")
[INFO] [stdout]   | ------------- unexpected token
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `parse_fen` in this scope
[INFO] [stdout]  --> src/lib.rs:37:21
[INFO] [stdout]   |
[INFO] [stdout] 3 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]   |                     ^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::parse_fen;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `parse_fen` in this scope
[INFO] [stdout]  --> src/lib.rs:38:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | example_board = parse_fen("rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1")
[INFO] [stdout]   |                 ^^^^^^^^^ not found in this scope
[INFO] [stdout]   |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]   |
[INFO] [stdout] 2 + use alviny_task_3::parse_fen;
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 3 previous errors
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0425`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/lib.rs - Board (line 538)
[INFO] [stdout]     src/lib.rs - Board::set_promotion (line 1113)
[INFO] [stdout]     src/lib.rs - Board::set_promotion (line 1122)
[INFO] [stdout]     src/lib.rs - Game (line 384)
[INFO] [stdout]     src/lib.rs - Game::make_move (line 442)
[INFO] [stdout]     src/lib.rs - Game::make_move (line 452)
[INFO] [stdout]     src/lib.rs - Game::new (line 422)
[INFO] [stdout]     src/lib.rs - Game::new (line 431)
[INFO] [stdout]     src/lib.rs - Game::new_from_fen (line 402)
[INFO] [stdout]     src/lib.rs - Game::new_from_fen (line 411)
[INFO] [stdout]     src/lib.rs - generate_fen (line 86)
[INFO] [stdout]     src/lib.rs - generate_fen (line 95)
[INFO] [stdout]     src/lib.rs - get_available_moves (line 199)
[INFO] [stdout]     src/lib.rs - get_available_moves (line 212)
[INFO] [stdout]     src/lib.rs - parse_fen (line 27)
[INFO] [stdout]     src/lib.rs - parse_fen (line 36)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 0 passed; 16 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.40s
[INFO] [stdout] 
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] running `Command { std: "docker" "inspect" "9928f912eeb4836c105c5254a5599558b83c5dbee6272e8a4cc885dfdd834168", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9928f912eeb4836c105c5254a5599558b83c5dbee6272e8a4cc885dfdd834168", kill_on_drop: false }`
[INFO] [stdout] 9928f912eeb4836c105c5254a5599558b83c5dbee6272e8a4cc885dfdd834168
