[INFO] cloning repository https://github.com/shehabalshehabi/connect4engine
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shehabalshehabi/connect4engine" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshehabalshehabi%2Fconnect4engine", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshehabalshehabi%2Fconnect4engine'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e269519372a5245ec6172cc2d4d85367fd387d7b
[INFO] checking shehabalshehabi/connect4engine against master#36b21637e93b038453924d3c66821089e71d8baa for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshehabalshehabi%2Fconnect4engine" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/shehabalshehabi/connect4engine
[INFO] finished tweaking git repo https://github.com/shehabalshehabi/connect4engine
[INFO] tweaked toml for git repo https://github.com/shehabalshehabi/connect4engine written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/shehabalshehabi/connect4engine on toolchain 36b21637e93b038453924d3c66821089e71d8baa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/shehabalshehabi/connect4engine 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" "+36b21637e93b038453924d3c66821089e71d8baa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: file `/workspace/builds/worker-7-tc1/source/src/lib.rs` found to be present in multiple build targets:
[INFO] [stderr]   * `lib` target `connect4engine`
[INFO] [stderr]   * `bin` target `connect4enginebin`
[INFO] [stderr] warning: unused manifest key: target.wasm32-unknown-unknown.rustflags
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 042ef207df15fe5e7b8b2590c22b5006b3960e68c5145defd825880862937a74
[INFO] running `Command { std: "docker" "start" "-a" "042ef207df15fe5e7b8b2590c22b5006b3960e68c5145defd825880862937a74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "042ef207df15fe5e7b8b2590c22b5006b3960e68c5145defd825880862937a74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "042ef207df15fe5e7b8b2590c22b5006b3960e68c5145defd825880862937a74", kill_on_drop: false }`
[INFO] [stdout] 042ef207df15fe5e7b8b2590c22b5006b3960e68c5145defd825880862937a74
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 334b7742bfef7551522675ded2294b9f7f10008c97f9611139cdba6b36f2fd2d
[INFO] running `Command { std: "docker" "start" "-a" "334b7742bfef7551522675ded2294b9f7f10008c97f9611139cdba6b36f2fd2d", kill_on_drop: false }`
[INFO] [stderr] warning: file `/opt/rustwide/workdir/src/lib.rs` found to be present in multiple build targets:
[INFO] [stderr]   * `lib` target `connect4engine`
[INFO] [stderr]   * `bin` target `connect4enginebin`
[INFO] [stderr] warning: unused manifest key: target.wasm32-unknown-unknown.rustflags
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling wasm-bindgen-shared v0.2.100
[INFO] [stderr]    Compiling bumpalo v3.17.0
[INFO] [stderr]    Compiling log v0.4.25
[INFO] [stderr]    Compiling rustversion v1.0.19
[INFO] [stderr]    Compiling wasm-bindgen v0.2.100
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]     Checking once_cell v1.20.3
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]    Compiling wasm-bindgen-backend v0.2.100
[INFO] [stderr]    Compiling wasm-bindgen-macro-support v0.2.100
[INFO] [stderr]    Compiling wasm-bindgen-macro v0.2.100
[INFO] [stderr]     Checking connect4engine v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 |         if (self.board_set & mask== 0){
[INFO] [stdout]     |            ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 230 -         if (self.board_set & mask== 0){
[INFO] [stdout] 230 +         if self.board_set & mask== 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:232:19
[INFO] [stdout]     |
[INFO] [stdout] 232 |         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout]     |                   ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 232 -         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout] 232 +         } else if !self.board_p1 & mask == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/game.rs:258:36
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout]     |                                    ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout] 258 +             let row_number = match slot >> 8 * column_number {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/engine.rs:197:11
[INFO] [stdout]     |
[INFO] [stdout] 197 |     while (minimum_possible < maximum_possible){
[INFO] [stdout]     |           ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -     while (minimum_possible < maximum_possible){
[INFO] [stdout] 197 +     while minimum_possible < maximum_possible {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `thread::sleep`
[INFO] [stdout]   --> src/lib.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     use std::{thread::sleep, time::{Duration, Instant}};
[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/game.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 |         if (self.board_set & mask== 0){
[INFO] [stdout]     |            ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 230 -         if (self.board_set & mask== 0){
[INFO] [stdout] 230 +         if self.board_set & mask== 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 |         if (self.board_set & mask== 0){
[INFO] [stdout]     |            ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 230 -         if (self.board_set & mask== 0){
[INFO] [stdout] 230 +         if self.board_set & mask== 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:232:19
[INFO] [stdout]     |
[INFO] [stdout] 232 |         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout]     |                   ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 232 -         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout] 232 +         } else if !self.board_p1 & mask == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/game.rs:258:36
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout]     |                                    ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout] 258 +             let row_number = match slot >> 8 * column_number {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/engine.rs:197:11
[INFO] [stdout]     |
[INFO] [stdout] 197 |     while (minimum_possible < maximum_possible){
[INFO] [stdout]     |           ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -     while (minimum_possible < maximum_possible){
[INFO] [stdout] 197 +     while minimum_possible < maximum_possible {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `thread::sleep`
[INFO] [stdout]   --> src/lib.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     use std::{thread::sleep, time::{Duration, Instant}};
[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/game.rs:232:19
[INFO] [stdout]     |
[INFO] [stdout] 232 |         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout]     |                   ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 232 -         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout] 232 +         } else if !self.board_p1 & mask == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:230:12
[INFO] [stdout]     |
[INFO] [stdout] 230 |         if (self.board_set & mask== 0){
[INFO] [stdout]     |            ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 230 -         if (self.board_set & mask== 0){
[INFO] [stdout] 230 +         if self.board_set & mask== 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/game.rs:232:19
[INFO] [stdout]     |
[INFO] [stdout] 232 |         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout]     |                   ^                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 232 -         } else if (!self.board_p1 & mask == 0){
[INFO] [stdout] 232 +         } else if !self.board_p1 & mask == 0 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/game.rs:258:36
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout]     |                                    ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout] 258 +             let row_number = match slot >> 8 * column_number {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `match` scrutinee expression
[INFO] [stdout]    --> src/game.rs:258:36
[INFO] [stdout]     |
[INFO] [stdout] 258 |             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout]     |                                    ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 258 -             let row_number = match (slot >> 8 * column_number) {
[INFO] [stdout] 258 +             let row_number = match slot >> 8 * column_number {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/engine.rs:197:11
[INFO] [stdout]     |
[INFO] [stdout] 197 |     while (minimum_possible < maximum_possible){
[INFO] [stdout]     |           ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -     while (minimum_possible < maximum_possible){
[INFO] [stdout] 197 +     while minimum_possible < maximum_possible {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `thread::sleep`
[INFO] [stdout]   --> src/lib.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     use std::{thread::sleep, time::{Duration, Instant}};
[INFO] [stdout]    |               ^^^^^^^^^^^^^         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/engine.rs:197:11
[INFO] [stdout]     |
[INFO] [stdout] 197 |     while (minimum_possible < maximum_possible){
[INFO] [stdout]     |           ^                                   ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 197 -     while (minimum_possible < maximum_possible){
[INFO] [stdout] 197 +     while minimum_possible < maximum_possible {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration` and `thread::sleep`
[INFO] [stdout]   --> src/lib.rs:50:15
[INFO] [stdout]    |
[INFO] [stdout] 50 |     use std::{thread::sleep, time::{Duration, Instant}};
[INFO] [stdout]    |               ^^^^^^^^^^^^^         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 52 |     let mut game = Game::new();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `column_number`
[INFO] [stdout]    --> src/game.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_column_number`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row_number`
[INFO] [stdout]    --> src/game.rs:313:51
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_row_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board_player`
[INFO] [stdout]    --> src/game.rs:340:13
[INFO] [stdout]     |
[INFO] [stdout] 340 |         let board_player = if self.moves_made % 2 == 0 {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_board_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 52 |     let mut game = Game::new();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 52 |     let mut game = Game::new();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> src/lib.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 48 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 52 |     let mut game = Game::new();
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `column_number`
[INFO] [stdout]    --> src/game.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_column_number`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row_number`
[INFO] [stdout]    --> src/game.rs:313:51
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_row_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board_player`
[INFO] [stdout]    --> src/game.rs:340:13
[INFO] [stdout]     |
[INFO] [stdout] 340 |         let board_player = if self.moves_made % 2 == 0 {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_board_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `column_number`
[INFO] [stdout]    --> src/game.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_column_number`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_pv` is never used
[INFO] [stdout]    --> src/lib.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn trace_pv(game: &mut Game, transposition_table: &mut TranspositionTable, book: &OpeningBook, nodes: &mut u64){
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_corrections` is never used
[INFO] [stdout]    --> src/lib.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn test_book_corrections() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_code_decode` is never used
[INFO] [stdout]    --> src/lib.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn test_book_code_decode(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_lookup` is never used
[INFO] [stdout]    --> src/lib.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn test_book_lookup(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Slot` is never used
[INFO] [stdout]  --> src/game.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Slot {
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASK_OFFSET` is never used
[INFO] [stdout]   --> src/game.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub static WIN_MASK_OFFSET: u8 = 3 * 8 + 3;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASKS` is never used
[INFO] [stdout]   --> src/game.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub static WIN_MASKS:[u64;16] = [251658240,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit` is never used
[INFO] [stdout]   --> src/game.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_bit(board: u64, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_bit` is never used
[INFO] [stdout]   --> src/game.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn set_bit(board: u64, column_number:u8, row_number:u8, set: bool)->u64{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_board` is never used
[INFO] [stdout]   --> src/game.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn print_board(board: u64){
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stable_sort_moves` is never used
[INFO] [stdout]    --> src/game.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn stable_sort_moves(col_scores: [(usize, i32);7], playable_cols: usize)->[usize;7]{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_slot`, `get_slot`, `print`, and `get_winning_move` are never used
[INFO] [stdout]    --> src/game.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl Game {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_slot(&mut self, column_number: u8, row_number: u8, value: Slot){
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_slot(&self, column_number: u8, row_number: u8)->Slot{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn print(&self){
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_winning_move(&self)->Option<u8>{
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_tree_width` is never used
[INFO] [stdout]    --> src/engine.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn calculate_tree_width(game:&mut Game, plies: i8, seen: &mut HashSet<u64>)->u64{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]   --> src/book.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn decode(code: i32) -> (u64, u64){
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &raw mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:53
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &raw const OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                      +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row_number`
[INFO] [stdout]    --> src/game.rs:313:51
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_row_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board_player`
[INFO] [stdout]    --> src/game.rs:340:13
[INFO] [stdout]     |
[INFO] [stdout] 340 |         let board_player = if self.moves_made % 2 == 0 {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_board_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `column_number`
[INFO] [stdout]    --> src/game.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_column_number`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `row_number`
[INFO] [stdout]    --> src/game.rs:313:51
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn check_win(&mut self, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]     |                                                   ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_row_number`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `board_player`
[INFO] [stdout]    --> src/game.rs:340:13
[INFO] [stdout]     |
[INFO] [stdout] 340 |         let board_player = if self.moves_made % 2 == 0 {
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_board_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_pv` is never used
[INFO] [stdout]    --> src/lib.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn trace_pv(game: &mut Game, transposition_table: &mut TranspositionTable, book: &OpeningBook, nodes: &mut u64){
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_corrections` is never used
[INFO] [stdout]    --> src/lib.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn test_book_corrections() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_code_decode` is never used
[INFO] [stdout]    --> src/lib.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn test_book_code_decode(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_lookup` is never used
[INFO] [stdout]    --> src/lib.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn test_book_lookup(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Slot` is never used
[INFO] [stdout]  --> src/game.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Slot {
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASK_OFFSET` is never used
[INFO] [stdout]   --> src/game.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub static WIN_MASK_OFFSET: u8 = 3 * 8 + 3;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASKS` is never used
[INFO] [stdout]   --> src/game.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub static WIN_MASKS:[u64;16] = [251658240,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit` is never used
[INFO] [stdout]   --> src/game.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_bit(board: u64, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_bit` is never used
[INFO] [stdout]   --> src/game.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn set_bit(board: u64, column_number:u8, row_number:u8, set: bool)->u64{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_board` is never used
[INFO] [stdout]   --> src/game.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn print_board(board: u64){
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stable_sort_moves` is never used
[INFO] [stdout]    --> src/game.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn stable_sort_moves(col_scores: [(usize, i32);7], playable_cols: usize)->[usize;7]{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_slot`, `get_slot`, `print`, and `get_winning_move` are never used
[INFO] [stdout]    --> src/game.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl Game {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_slot(&mut self, column_number: u8, row_number: u8, value: Slot){
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_slot(&self, column_number: u8, row_number: u8)->Slot{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn print(&self){
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_winning_move(&self)->Option<u8>{
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_tree_width` is never used
[INFO] [stdout]    --> src/engine.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn calculate_tree_width(game:&mut Game, plies: i8, seen: &mut HashSet<u64>)->u64{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]   --> src/book.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn decode(code: i32) -> (u64, u64){
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &raw mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:53
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &raw const OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                      +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/lib.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn main() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_pv` is never used
[INFO] [stdout]    --> src/lib.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn trace_pv(game: &mut Game, transposition_table: &mut TranspositionTable, book: &OpeningBook, nodes: &mut u64){
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_corrections` is never used
[INFO] [stdout]    --> src/lib.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn test_book_corrections() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_code_decode` is never used
[INFO] [stdout]    --> src/lib.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn test_book_code_decode(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_lookup` is never used
[INFO] [stdout]    --> src/lib.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn test_book_lookup(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Slot` is never used
[INFO] [stdout]  --> src/game.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Slot {
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `trace_pv` is never used
[INFO] [stdout]    --> src/lib.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn trace_pv(game: &mut Game, transposition_table: &mut TranspositionTable, book: &OpeningBook, nodes: &mut u64){
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_test_file` is never used
[INFO] [stdout]    --> src/lib.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn read_test_file(filename: &str)->(Vec<Vec<u8>>,Vec<i8>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_game` is never used
[INFO] [stdout]    --> src/lib.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn setup_game(game:&mut Game, moves: &Vec<u8>){
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_corrections` is never used
[INFO] [stdout]    --> src/lib.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn test_book_corrections() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_code_decode` is never used
[INFO] [stdout]    --> src/lib.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn test_book_code_decode(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_book_lookup` is never used
[INFO] [stdout]    --> src/lib.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn test_book_lookup(){
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Slot` is never used
[INFO] [stdout]  --> src/game.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum Slot {
[INFO] [stdout]   |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASK_OFFSET` is never used
[INFO] [stdout]   --> src/game.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub static WIN_MASK_OFFSET: u8 = 3 * 8 + 3;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASKS` is never used
[INFO] [stdout]   --> src/game.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub static WIN_MASKS:[u64;16] = [251658240,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit` is never used
[INFO] [stdout]   --> src/game.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_bit(board: u64, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_bit` is never used
[INFO] [stdout]   --> src/game.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn set_bit(board: u64, column_number:u8, row_number:u8, set: bool)->u64{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_board` is never used
[INFO] [stdout]   --> src/game.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn print_board(board: u64){
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stable_sort_moves` is never used
[INFO] [stdout]    --> src/game.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn stable_sort_moves(col_scores: [(usize, i32);7], playable_cols: usize)->[usize;7]{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_slot`, `get_slot`, `print`, and `get_winning_move` are never used
[INFO] [stdout]    --> src/game.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl Game {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_slot(&mut self, column_number: u8, row_number: u8, value: Slot){
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_slot(&self, column_number: u8, row_number: u8)->Slot{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn print(&self){
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_winning_move(&self)->Option<u8>{
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_tree_width` is never used
[INFO] [stdout]    --> src/engine.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn calculate_tree_width(game:&mut Game, plies: i8, seen: &mut HashSet<u64>)->u64{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]   --> src/book.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn decode(code: i32) -> (u64, u64){
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &raw mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:53
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &raw const OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                      +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASK_OFFSET` is never used
[INFO] [stdout]   --> src/game.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub static WIN_MASK_OFFSET: u8 = 3 * 8 + 3;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `WIN_MASKS` is never used
[INFO] [stdout]   --> src/game.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub static WIN_MASKS:[u64;16] = [251658240,
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_bit` is never used
[INFO] [stdout]   --> src/game.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn get_bit(board: u64, column_number:u8, row_number:u8) -> bool{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_bit` is never used
[INFO] [stdout]   --> src/game.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn set_bit(board: u64, column_number:u8, row_number:u8, set: bool)->u64{
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_board` is never used
[INFO] [stdout]   --> src/game.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn print_board(board: u64){
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `stable_sort_moves` is never used
[INFO] [stdout]    --> src/game.rs:158:8
[INFO] [stdout]     |
[INFO] [stdout] 158 | pub fn stable_sort_moves(col_scores: [(usize, i32);7], playable_cols: usize)->[usize;7]{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_slot`, `get_slot`, `print`, and `get_winning_move` are never used
[INFO] [stdout]    --> src/game.rs:210:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl Game {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_slot(&mut self, column_number: u8, row_number: u8, value: Slot){
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn get_slot(&self, column_number: u8, row_number: u8)->Slot{
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     pub fn print(&self){
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn get_winning_move(&self)->Option<u8>{
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_tree_width` is never used
[INFO] [stdout]    --> src/engine.rs:216:8
[INFO] [stdout]     |
[INFO] [stdout] 216 | pub fn calculate_tree_width(game:&mut Game, plies: i8, seen: &mut HashSet<u64>)->u64{
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decode` is never used
[INFO] [stdout]   --> src/book.rs:99:8
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub fn decode(code: i32) -> (u64, u64){
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:27
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` on by default
[INFO] [stdout] help: use `&raw mut` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &raw mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/lib.rs:41:53
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 41 |         search(&mut game, &mut TRANSPOSITION_TABLE, &raw const OPENING_BOOK, &mut nodes)
[INFO] [stdout]    |                                                      +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 13.81s
[INFO] running `Command { std: "docker" "inspect" "334b7742bfef7551522675ded2294b9f7f10008c97f9611139cdba6b36f2fd2d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "334b7742bfef7551522675ded2294b9f7f10008c97f9611139cdba6b36f2fd2d", kill_on_drop: false }`
[INFO] [stdout] 334b7742bfef7551522675ded2294b9f7f10008c97f9611139cdba6b36f2fd2d
