[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 try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIndaPlus25%2Falviny-task-3" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/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-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/IndaPlus25/alviny-task-3 on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] b7b897d817b688edcac4e2fde5967486b4421bb93fd9a687ef413755dcf21363
[INFO] running `Command { std: "docker" "start" "-a" "b7b897d817b688edcac4e2fde5967486b4421bb93fd9a687ef413755dcf21363", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "b7b897d817b688edcac4e2fde5967486b4421bb93fd9a687ef413755dcf21363", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b7b897d817b688edcac4e2fde5967486b4421bb93fd9a687ef413755dcf21363", kill_on_drop: false }`
[INFO] [stdout] b7b897d817b688edcac4e2fde5967486b4421bb93fd9a687ef413755dcf21363
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a9153d5115840307e57a7e39f589bbc206b73c0caea2713d3f1b803538200f71
[INFO] running `Command { std: "docker" "start" "-a" "a9153d5115840307e57a7e39f589bbc206b73c0caea2713d3f1b803538200f71", 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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] 
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.87s
[INFO] running `Command { std: "docker" "inspect" "a9153d5115840307e57a7e39f589bbc206b73c0caea2713d3f1b803538200f71", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a9153d5115840307e57a7e39f589bbc206b73c0caea2713d3f1b803538200f71", kill_on_drop: false }`
[INFO] [stdout] a9153d5115840307e57a7e39f589bbc206b73c0caea2713d3f1b803538200f71
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4bbd2eb794e7c8678ca04148b376c925f5f4ac6aef773c92a13891de4f907f9e
[INFO] running `Command { std: "docker" "start" "-a" "4bbd2eb794e7c8678ca04148b376c925f5f4ac6aef773c92a13891de4f907f9e", kill_on_drop: false }`
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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] 
[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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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] 
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 1.14s
[INFO] running `Command { std: "docker" "inspect" "4bbd2eb794e7c8678ca04148b376c925f5f4ac6aef773c92a13891de4f907f9e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4bbd2eb794e7c8678ca04148b376c925f5f4ac6aef773c92a13891de4f907f9e", kill_on_drop: false }`
[INFO] [stdout] 4bbd2eb794e7c8678ca04148b376c925f5f4ac6aef773c92a13891de4f907f9e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 94f6ea0aabc9df708efc7fded355d2acadce9c2a0797cd5ee46828888ac75959
[INFO] running `Command { std: "docker" "start" "-a" "94f6ea0aabc9df708efc7fded355d2acadce9c2a0797cd5ee46828888ac75959", 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `test_board` is never read
[INFO] [stderr]    --> src/lib.rs:337:25
[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]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) 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] 
[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)]` (part of `#[warn(unused)]`) 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)]` (part of `#[warn(unused)]`) 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 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.02s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/alviny_task_3-2289e38788e081d7)
[INFO] [stdout] 
[INFO] [stdout] running 19 tests
[INFO] [stdout] test tests::test_algebraic_conversion ... ok
[INFO] [stdout] test tests::test_board_coord_conversion ... ok
[INFO] [stdout] test tests::test_bishop_moves ... ok
[INFO] [stdout] test tests::test_game_cases ... ok
[INFO] [stdout] test tests::test_board_representation ... ok
[INFO] [stdout] test tests::test_check_moves ... ok
[INFO] [stdout] test tests::test_knight_moves ... ok
[INFO] [stdout] test tests::test_king_moves ... ok
[INFO] [stdout] test tests::test_pawn_moves ... ok
[INFO] [stdout] test tests::test_queen_moves ... ok
[INFO] [stdout] test tests::test_for_checks ... ok
[INFO] [stdout] test tests::test_castling_through_check ... ok
[INFO] [stdout] test tests::test_en_passant ... 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] [stdout] test tests::test_promotion ... ok
[INFO] [stdout] test tests::test_castling ... ok
[INFO] [stdout] test tests::test_2_move_mate ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 19 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stderr]    Doc-tests alviny_task_3
[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)]` (part of `#[warn(unused)]`) 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 - Game (line 384) ... FAILED
[INFO] [stdout] test src/lib.rs - Board (line 538) ... FAILED
[INFO] [stdout] test src/lib.rs - get_available_moves (line 199) ... FAILED
[INFO] [stdout] test src/lib.rs - generate_fen (line 86) ... FAILED
[INFO] [stdout] test src/lib.rs - generate_fen (line 95) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new (line 431) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::make_move (line 442) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new_from_fen (line 402) ... FAILED
[INFO] [stdout] test src/lib.rs - Board::set_promotion (line 1113) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new (line 422) ... FAILED
[INFO] [stdout] test src/lib.rs - parse_fen (line 27) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::make_move (line 452) ... FAILED
[INFO] [stdout] test src/lib.rs - get_available_moves (line 212) ... FAILED
[INFO] [stdout] test src/lib.rs - Game::new_from_fen (line 411) ... FAILED
[INFO] [stdout] test src/lib.rs - parse_fen (line 36) ... FAILED
[INFO] [stdout] test src/lib.rs - Board::set_promotion (line 1122) ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[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] 385 | 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 - Board (line 538) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]    --> src/lib.rs:539:12
[INFO] [stdout]     |
[INFO] [stdout] 539 | 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 - 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] 200 | 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 - generate_fen (line 86) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]   --> src/lib.rs:87:6
[INFO] [stdout]    |
[INFO] [stdout] 87 | 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 - generate_fen (line 95) stdout ----
[INFO] [stdout] error: expected `;`, found keyword `let`
[INFO] [stdout]   --> src/lib.rs:96:90
[INFO] [stdout]    |
[INFO] [stdout] 96 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]    |                                                                                          ^ help: add `;` here
[INFO] [stdout] 97 | 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] 97 | let example_fen = generate_fen(example_board)
[INFO] [stdout]    |                                              ^ help: add `;` here
[INFO] [stdout] 98 | } _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] 96 | 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] 95 + 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] 97 | 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] 95 + 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 (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] 432 | 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] 431 + 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] 443 | 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 - 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] 403 | 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::set_promotion (line 1113) stdout ----
[INFO] [stdout] error: expected one of `!` or `::`, found `:`
[INFO] [stdout]     --> src/lib.rs:1114:6
[INFO] [stdout]      |
[INFO] [stdout] 1114 | 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 (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] 423 | 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] 422 + 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] 28 | 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::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] 453 | 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] 452 + 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 - get_available_moves (line 212) stdout ----
[INFO] [stdout] error: expected `;`, found `assert_eq`
[INFO] [stdout]    --> src/lib.rs:214:93
[INFO] [stdout]     |
[INFO] [stdout] 214 | let moves = get_available_moves(example_game.board, example_game.board.active_player, false)
[INFO] [stdout]     |                                                                                             ^ help: add `;` here
[INFO] [stdout] 215 | 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] 213 | 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] 212 + 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] 214 | 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] 212 + 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 - 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] 412 | 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] 411 + 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] 37 | let example_board = parse_fen("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1")
[INFO] [stdout]    |                                                                                          ^ help: add `;` here
[INFO] [stdout] 38 | 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] 37 | 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] 36 + 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] 38 | 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] 36 + 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] ---- 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] 1123 | 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] 1122 + 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] 
[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.31s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.42s; merged doctests compilation took 0.10s
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] running `Command { std: "docker" "inspect" "94f6ea0aabc9df708efc7fded355d2acadce9c2a0797cd5ee46828888ac75959", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "94f6ea0aabc9df708efc7fded355d2acadce9c2a0797cd5ee46828888ac75959", kill_on_drop: false }`
[INFO] [stdout] 94f6ea0aabc9df708efc7fded355d2acadce9c2a0797cd5ee46828888ac75959
