[INFO] cloning repository https://github.com/themreKalkan/RuthChess-6.0
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/themreKalkan/RuthChess-6.0" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthemreKalkan%2FRuthChess-6.0", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthemreKalkan%2FRuthChess-6.0'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4803f5bd0e975ee34211d0696fd57a37af7ce5af
[INFO] testing themreKalkan/RuthChess-6.0 against beta-2025-09-21 for beta-1.91-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FthemreKalkan%2FRuthChess-6.0" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/themreKalkan/RuthChess-6.0
[INFO] finished tweaking git repo https://github.com/themreKalkan/RuthChess-6.0
[INFO] tweaked toml for git repo https://github.com/themreKalkan/RuthChess-6.0 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/themreKalkan/RuthChess-6.0 on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/themreKalkan/RuthChess-6.0 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" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: build
[INFO] [stderr] warning: unused manifest key: profile.release.target-cpu
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7fbb6932517ea07abb37d15092c666edf97cf47caea64d7d3ca9930322b6a41c
[INFO] running `Command { std: "docker" "start" "-a" "7fbb6932517ea07abb37d15092c666edf97cf47caea64d7d3ca9930322b6a41c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7fbb6932517ea07abb37d15092c666edf97cf47caea64d7d3ca9930322b6a41c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7fbb6932517ea07abb37d15092c666edf97cf47caea64d7d3ca9930322b6a41c", kill_on_drop: false }`
[INFO] [stdout] 7fbb6932517ea07abb37d15092c666edf97cf47caea64d7d3ca9930322b6a41c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c74facab4cc8c710853006f10e90daae9c7b9bee368961f9628a892c635be1f6
[INFO] running `Command { std: "docker" "start" "-a" "c74facab4cc8c710853006f10e90daae9c7b9bee368961f9628a892c635be1f6", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: build
[INFO] [stderr] warning: unused manifest key: profile.release.target-cpu
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling autocfg v1.5.0
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling cfg-if v1.0.1
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling bytemuck v1.23.1
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling crossbeam v0.8.4
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling RuthChessOVI v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/board/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_queen_attacks`
[INFO] [stdout]  --> src/board/position.rs:6:120
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1726:20
[INFO] [stdout]      |
[INFO] [stdout] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stdout] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1736:20
[INFO] [stdout]      |
[INFO] [stdout] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout]      |                    ^                                       ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stdout]  --> src/board/zobrist.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stdout]  --> src/eval/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, `FILE_B`, `FILE_C`, `FILE_D`, `FILE_E`, `FILE_F`, `FILE_G`, and `FILE_H`
[INFO] [stdout]  --> src/eval/pawns.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stdout]    --> src/eval/evaluate.rs:317:33
[INFO] [stdout]     |
[INFO] [stdout] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/mobility.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/mobility.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/space.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/space.rs:5:42
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stdout]  --> src/eval/king_safety.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stdout]  --> src/eval/king_safety.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stdout]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/threats.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `rank_of`
[INFO] [stdout]  --> src/eval/threats.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/eval/eval_util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `popcount` and `square_mask`
[INFO] [stdout]  --> src/movegen/magic.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stdout]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/movegen/magic.rs:131:7
[INFO] [stdout]     |
[INFO] [stdout] 131 |     if(square == 64){
[INFO] [stdout]     |       ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 131 -     if(square == 64){
[INFO] [stdout] 131 +     if square == 64 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stdout]  --> src/movegen/moves.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stdout]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all_attacks`
[INFO] [stdout]  --> src/movegen/moves.rs:7:44
[INFO] [stdout]   |
[INFO] [stdout] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::arch::x86_64::*`
[INFO] [stdout]   --> src/movegen/moves.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::arch::x86_64::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stdout]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stdout]   --> src/uci/protocol.rs:4:47
[INFO] [stdout]    |
[INFO] [stdout]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stdout]    |                                               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         transposition::TranspositionTable,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stdout]   --> src/search/alphabeta.rs:5:19
[INFO] [stdout]    |
[INFO] [stdout]  5 |         zobrist::{ZOBRIST},
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stdout]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stdout]  9 |         material::calculate_phase,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |         eval_util,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stdout]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stdout]    |                                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]   --> src/search/alphabeta.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::cmp::{max, min};
[INFO] [stdout]    |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/search/alphabeta.rs:224:11
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if(depth == 31){
[INFO] [stdout]     |           ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if(depth == 31){
[INFO] [stdout] 224 +         if depth == 31 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/search/alphabeta.rs:1189:61
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout]      |                                                             ^                    ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/search/search_node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stdout]  --> src/search/search_node.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stdout]  --> src/search/search_node.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 |     board::position::{Position, Move},
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 5 |     eval::evaluate::Score,
[INFO] [stdout] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     search::time_management::TimeManager,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stdout]  --> src/search/pruning.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::eval::material::calculate_phase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `captured_pawn_square`
[INFO] [stdout]    --> src/board/position.rs:805:13
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stdout] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_square`
[INFO] [stdout]    --> src/board/position.rs:807:13
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]     --> src/board/position.rs:1247:28
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1748:9
[INFO] [stdout]      |
[INFO] [stdout] 1748 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by_color`
[INFO] [stdout]     --> src/board/position.rs:1761:58
[INFO] [stdout]      |
[INFO] [stdout] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stdout]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1762:9
[INFO] [stdout]      |
[INFO] [stdout] 1762 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1775:9
[INFO] [stdout]      |
[INFO] [stdout] 1775 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/eval/material.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | unsafe fn init_pawn_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | unsafe fn init_knight_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:198:1
[INFO] [stdout]     |
[INFO] [stdout] 198 | unsafe fn init_bishop_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn init_rook_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 | unsafe fn init_queen_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | unsafe fn init_king_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stdout]    --> src/eval/pawns.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |     let mut doubled_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_doubled_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stdout]     |
[INFO] [stdout] 279 -     let mut doubled_count = 0;
[INFO] [stdout] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]    --> src/eval/pawns.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let square_bb = 1u64 << square;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let _square_bb = 1u64 << square;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 310 -         let square_bb = 1u64 << square;
[INFO] [stdout] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rank`
[INFO] [stdout]    --> src/eval/pawns.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let rank = rank_of(square);
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _rank = rank_of(square);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 313 -         let rank = rank_of(square);
[INFO] [stdout] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `same_rank_mask`
[INFO] [stdout]    --> src/eval/pawns.rs:440:9
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stdout] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stdout] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_pieces`
[INFO] [stdout]    --> src/eval/mobility.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]   --> src/eval/space.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let square_bb = 1u64 << square;
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _square_bb = 1u64 << square;
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]    |
[INFO] [stdout] 96 -         let square_bb = 1u64 << square;
[INFO] [stdout] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_rank`
[INFO] [stdout]    --> src/eval/king_safety.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let king_rank = king_sq / 8;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _king_rank = king_sq / 8;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 162 -     let king_rank = king_sq / 8;
[INFO] [stdout] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pawns`
[INFO] [stdout]    --> src/eval/king_safety.rs:476:9
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_type`
[INFO] [stdout]    --> src/eval/threats.rs:153:46
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stdout]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_king`
[INFO] [stdout]    --> src/eval/threats.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/threats.rs:434:9
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stdout] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_valuable`
[INFO] [stdout]    --> src/eval/threats.rs:435:9
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]    --> src/eval/threats.rs:758:22
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/threats.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `color`
[INFO] [stdout]   --> src/eval/initiative.rs:45:55
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opponent_color`
[INFO] [stdout]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     let opponent_color = our_color.opposite();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_position` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:361:17
[INFO] [stdout]     |
[INFO] [stdout] 361 |         let mut new_position = None;
[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: variable `found_moves` is assigned to, but never used
[INFO] [stdout]    --> src/uci/protocol.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let mut found_moves = false;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_found_moves` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_moves` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                         found_moves = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_hash`
[INFO] [stdout]    --> src/uci/protocol.rs:422:29
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let old_hash = pos.hash;
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let _old_hash = pos.hash;
[INFO] [stdout]     |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 422 -                         let old_hash = pos.hash;
[INFO] [stdout] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/search/alphabeta.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stdout]     |         ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/search/alphabeta.rs:509:34
[INFO] [stdout]     |
[INFO] [stdout] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece`
[INFO] [stdout]    --> src/search/alphabeta.rs:748:34
[INFO] [stdout]     |
[INFO] [stdout] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `move_count` is assigned to, but never used
[INFO] [stdout]    --> src/search/alphabeta.rs:853:21
[INFO] [stdout]     |
[INFO] [stdout] 853 |             let mut move_count = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_move_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 853 -             let mut move_count = 0;
[INFO] [stdout] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_value`
[INFO] [stdout]    --> src/search/alphabeta.rs:985:49
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_pv` is never read
[INFO] [stdout]     --> src/search/alphabeta.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         let mut best_pv = Vec::new();
[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/search/alphabeta.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_age`
[INFO] [stdout]    --> src/search/transposition.rs:136:62
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_MOVES` is never used
[INFO] [stdout]    --> src/board/position.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_TYPE` is never used
[INFO] [stdout]    --> src/board/position.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveHashData` is never constructed
[INFO] [stdout]    --> src/board/position.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | struct MoveHashData {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_checking_piece` and `count_checks` are never used
[INFO] [stdout]     --> src/board/position.rs:951:8
[INFO] [stdout]      |
[INFO] [stdout]  313 | impl Position {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHASE_VALUES` is never used
[INFO] [stdout]   --> src/eval/material.rs:97:7
[INFO] [stdout]    |
[INFO] [stdout] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stdout]   --> src/eval/mobility.rs:89:7
[INFO] [stdout]    |
[INFO] [stdout] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:106:7
[INFO] [stdout]     |
[INFO] [stdout] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WING_FILES` is never used
[INFO] [stdout]   --> src/eval/space.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIN_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_path_attacked` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const MAX_MOVES: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_capture_history` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HistoryTables {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash_move` is never read
[INFO] [stdout]    --> src/search/alphabeta.rs:347:5
[INFO] [stdout]     |
[INFO] [stdout] 344 | struct MoveOrder {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 347 |     hash_move: Move,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_position` and `thread_id` are never read
[INFO] [stdout]    --> src/search/alphabeta.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct SearchContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 468 |     root_position: Position,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     thread_id: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SearchContext {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 476 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCORE_NONE` is never used
[INFO] [stdout]  --> src/search/transposition.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_tactical_position` is never used
[INFO] [stdout]    --> src/search/pruning.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stdout]    --> src/search/pruning.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stdout]    --> src/search/pruning.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_material_advantage` is never used
[INFO] [stdout]    --> src/search/pruning.rs:168:4
[INFO] [stdout]     |
[INFO] [stdout] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `RuthChessOVI` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `ruth_chess_ovi`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/board/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_queen_attacks`
[INFO] [stdout]  --> src/board/position.rs:6:120
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1726:20
[INFO] [stdout]      |
[INFO] [stdout] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stdout] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1736:20
[INFO] [stdout]      |
[INFO] [stdout] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout]      |                    ^                                       ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stdout]  --> src/board/zobrist.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stdout]  --> src/eval/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, `FILE_B`, `FILE_C`, `FILE_D`, `FILE_E`, `FILE_F`, `FILE_G`, and `FILE_H`
[INFO] [stdout]  --> src/eval/pawns.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/mobility.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/mobility.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/space.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/space.rs:5:42
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stdout]  --> src/eval/king_safety.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stdout]  --> src/eval/king_safety.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stdout]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/threats.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `rank_of`
[INFO] [stdout]  --> src/eval/threats.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/eval/eval_util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stdout]    --> src/eval/evaluate.rs:317:33
[INFO] [stdout]     |
[INFO] [stdout] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `EvalResult`, `MATE_VALUE`, `Score`, `evaluate_detailed`, `evaluate_fast`, and `evaluate`
[INFO] [stdout]   --> src/eval/mod.rs:15:20
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use evaluate::{Score, EvalResult, evaluate, evaluate_fast, evaluate_detailed, MATE_VALUE, DRAW_VALUE};
[INFO] [stdout]    |                    ^^^^^  ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvalCache`, `is_endgame`, `is_middlegame`, and `phase_value`
[INFO] [stdout]   --> src/eval/mod.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use eval_util::{EvalCache, phase_value, is_endgame, is_middlegame};
[INFO] [stdout]    |                     ^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_PHASE` and `calculate_phase`
[INFO] [stdout]   --> src/eval/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use material::{calculate_phase, MAX_PHASE};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `popcount` and `square_mask`
[INFO] [stdout]  --> src/movegen/magic.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stdout]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/movegen/magic.rs:131:7
[INFO] [stdout]     |
[INFO] [stdout] 131 |     if(square == 64){
[INFO] [stdout]     |       ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 131 -     if(square == 64){
[INFO] [stdout] 131 +     if square == 64 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stdout]  --> src/movegen/moves.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stdout]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all_attacks`
[INFO] [stdout]  --> src/movegen/moves.rs:7:44
[INFO] [stdout]   |
[INFO] [stdout] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::arch::x86_64::*`
[INFO] [stdout]   --> src/movegen/moves.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::arch::x86_64::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stdout]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stdout]   --> src/search/alphabeta.rs:5:19
[INFO] [stdout]    |
[INFO] [stdout]  5 |         zobrist::{ZOBRIST},
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stdout]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stdout]  9 |         material::calculate_phase,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |         eval_util,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stdout]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stdout]    |                                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]   --> src/search/alphabeta.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::cmp::{max, min};
[INFO] [stdout]    |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/search/alphabeta.rs:224:11
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if(depth == 31){
[INFO] [stdout]     |           ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if(depth == 31){
[INFO] [stdout] 224 +         if depth == 31 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/search/alphabeta.rs:1189:61
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout]      |                                                             ^                    ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/search/search_node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stdout]  --> src/search/search_node.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stdout]  --> src/search/search_node.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 |     board::position::{Position, Move},
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 5 |     eval::evaluate::Score,
[INFO] [stdout] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     search::time_management::TimeManager,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stdout]  --> src/search/pruning.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::eval::material::calculate_phase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stdout]   --> src/uci/protocol.rs:4:47
[INFO] [stdout]    |
[INFO] [stdout]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stdout]    |                                               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         transposition::TranspositionTable,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::evaluate`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::eval::evaluate::evaluate;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Move`, `PieceType`, and `Position`
[INFO] [stdout]   --> src/main.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::board::position::{Position,Move,PieceType};
[INFO] [stdout]    |                              ^^^^^^^^ ^^^^ ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, and `self`
[INFO] [stdout]   --> src/main.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::io::{self, BufRead, BufReader};
[INFO] [stdout]    |               ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uci::protocol`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use uci::protocol;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RuthChessOVI::board::bitboard::square_to_algebraic`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use RuthChessOVI::board::bitboard::square_to_algebraic;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `captured_pawn_square`
[INFO] [stdout]    --> src/board/position.rs:805:13
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stdout] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_square`
[INFO] [stdout]    --> src/board/position.rs:807:13
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]     --> src/board/position.rs:1247:28
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1748:9
[INFO] [stdout]      |
[INFO] [stdout] 1748 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by_color`
[INFO] [stdout]     --> src/board/position.rs:1761:58
[INFO] [stdout]      |
[INFO] [stdout] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stdout]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1762:9
[INFO] [stdout]      |
[INFO] [stdout] 1762 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1775:9
[INFO] [stdout]      |
[INFO] [stdout] 1775 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/eval/material.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | unsafe fn init_pawn_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | unsafe fn init_knight_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:198:1
[INFO] [stdout]     |
[INFO] [stdout] 198 | unsafe fn init_bishop_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn init_rook_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 | unsafe fn init_queen_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | unsafe fn init_king_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stdout]    --> src/eval/pawns.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |     let mut doubled_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_doubled_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stdout]     |
[INFO] [stdout] 279 -     let mut doubled_count = 0;
[INFO] [stdout] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]    --> src/eval/pawns.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let square_bb = 1u64 << square;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let _square_bb = 1u64 << square;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 310 -         let square_bb = 1u64 << square;
[INFO] [stdout] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rank`
[INFO] [stdout]    --> src/eval/pawns.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let rank = rank_of(square);
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _rank = rank_of(square);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 313 -         let rank = rank_of(square);
[INFO] [stdout] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `same_rank_mask`
[INFO] [stdout]    --> src/eval/pawns.rs:440:9
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_pieces`
[INFO] [stdout]    --> src/eval/mobility.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]   --> src/eval/space.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let square_bb = 1u64 << square;
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _square_bb = 1u64 << square;
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]    |
[INFO] [stdout] 96 -         let square_bb = 1u64 << square;
[INFO] [stdout] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_rank`
[INFO] [stdout]    --> src/eval/king_safety.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let king_rank = king_sq / 8;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _king_rank = king_sq / 8;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 162 -     let king_rank = king_sq / 8;
[INFO] [stdout] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pawns`
[INFO] [stdout]    --> src/eval/king_safety.rs:476:9
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_type`
[INFO] [stdout]    --> src/eval/threats.rs:153:46
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stdout]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_king`
[INFO] [stdout]    --> src/eval/threats.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/threats.rs:434:9
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stdout] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_valuable`
[INFO] [stdout]    --> src/eval/threats.rs:435:9
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]    --> src/eval/threats.rs:758:22
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/threats.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `all_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stdout] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stdout] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]   --> src/eval/initiative.rs:45:55
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opponent_color`
[INFO] [stdout]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     let opponent_color = our_color.opposite();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/search/alphabeta.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stdout]     |         ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/search/alphabeta.rs:509:34
[INFO] [stdout]     |
[INFO] [stdout] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece`
[INFO] [stdout]    --> src/search/alphabeta.rs:748:34
[INFO] [stdout]     |
[INFO] [stdout] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `move_count` is assigned to, but never used
[INFO] [stdout]    --> src/search/alphabeta.rs:853:21
[INFO] [stdout]     |
[INFO] [stdout] 853 |             let mut move_count = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_move_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 853 -             let mut move_count = 0;
[INFO] [stdout] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_value`
[INFO] [stdout]    --> src/search/alphabeta.rs:985:49
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_pv` is never read
[INFO] [stdout]     --> src/search/alphabeta.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         let mut best_pv = Vec::new();
[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: variable does not need to be mutable
[INFO] [stdout]     --> src/search/alphabeta.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_age`
[INFO] [stdout]    --> src/search/transposition.rs:136:62
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_position` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:361:17
[INFO] [stdout]     |
[INFO] [stdout] 361 |         let mut new_position = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `found_moves` is assigned to, but never used
[INFO] [stdout]    --> src/uci/protocol.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let mut found_moves = false;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_found_moves` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_moves` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                         found_moves = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_hash`
[INFO] [stdout]    --> src/uci/protocol.rs:422:29
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let old_hash = pos.hash;
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let _old_hash = pos.hash;
[INFO] [stdout]     |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 422 -                         let old_hash = pos.hash;
[INFO] [stdout] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FULL` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const FULL: Bitboard = 0xFFFF_FFFF_FFFF_FFFF;
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_1` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub const RANK_1: Bitboard = 0x0000_0000_0000_00FF;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_2` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const RANK_2: Bitboard = 0x0000_0000_0000_FF00;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_3` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const RANK_3: Bitboard = 0x0000_0000_00FF_0000;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_4` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const RANK_4: Bitboard = 0x0000_0000_FF00_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_5` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const RANK_5: Bitboard = 0x0000_00FF_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_6` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RANK_6: Bitboard = 0x0000_FF00_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_7` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RANK_7: Bitboard = 0x00FF_0000_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_8` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub const RANK_8: Bitboard = 0xFF00_0000_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_B` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const FILE_B: Bitboard = 0x0202_0202_0202_0202;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_C` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const FILE_C: Bitboard = 0x0404_0404_0404_0404;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_D` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const FILE_D: Bitboard = 0x0808_0808_0808_0808;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_E` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const FILE_E: Bitboard = 0x1010_1010_1010_1010;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_F` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const FILE_F: Bitboard = 0x2020_2020_2020_2020;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_G` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const FILE_G: Bitboard = 0x4040_4040_4040_4040;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `popcount` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn popcount(bb: Bitboard) -> u8 {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_bit` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:60:14
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub const fn has_bit(bb: Bitboard, square: u8) -> bool {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_bit` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub fn set_bit(bb: &mut Bitboard, square: u8) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_bit` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn clear_bit(bb: &mut Bitboard, square: u8) {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_bit` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn toggle_bit(bb: &mut Bitboard, square: u8) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lsb` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:80:14
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub const fn lsb(bb: Bitboard) -> Bitboard {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_lsb` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:85:14
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub const fn reset_lsb(bb: Bitboard) -> Bitboard {
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `msb` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn msb(bb: Bitboard) -> Bitboard {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rank` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:139:14
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub const fn get_rank(square: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:144:14
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub const fn get_file(square: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rank_mask` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:149:14
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const fn rank_mask(rank: u8) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_mask` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:154:14
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub const fn file_mask(file: u8) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_distance` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn square_distance(sq1: u8, sq2: u8) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitboardIterator` is never constructed
[INFO] [stdout]    --> src/board/bitboard.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct BitboardIterator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:201:18
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl BitboardIterator {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 200 |     #[inline(always)]
[INFO] [stdout] 201 |     pub const fn new(bb: Bitboard) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iter_bits` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:221:14
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub const fn iter_bits(bb: Bitboard) -> BitboardIterator {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:225:8
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub fn print(bb: Bitboard) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `king_to` and `castling_rights_mask` are never read
[INFO] [stdout]    --> src/board/position.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct CastleData {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 140 |     pub king_to: u8,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub castling_rights_mask: u8,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_MOVES` is never used
[INFO] [stdout]    --> src/board/position.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_TYPE` is never used
[INFO] [stdout]    --> src/board/position.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_u32`, `to_u32`, `is_pawn_move`, and `is_castling` are never used
[INFO] [stdout]    --> src/board/position.rs:211:18
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl Move {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub const fn from_u32(val:u32) -> Self { Self(val) }
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub const fn to_u32(self) -> u32 { self.0}
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub const fn is_pawn_move(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub const fn is_castling(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveHashData` is never constructed
[INFO] [stdout]    --> src/board/position.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | struct MoveHashData {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/board/position.rs:314:12
[INFO] [stdout]      |
[INFO] [stdout]  313 | impl Position {
[INFO] [stdout]      | ------------- associated items in this implementation
[INFO] [stdout]  314 |     pub fn new() -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  358 |     pub fn see_ge(&self, mv: Move, threshold: i32) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  480 |     pub fn is_capture(&self, mv: Move) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  485 |     pub fn piece_value(&self, piece: PieceType) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  578 |     pub fn captured_piece(&self, mv: Move) -> PieceType {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  583 |     pub fn is_pinned(&self, square: u8, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  831 |     pub fn get_pinned_piece_legal_squares(&self, square: u8, color: Color) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1154 |     pub fn remove_piece(&mut self, square: u8) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1213 |     pub fn king_check(&self, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1603 |     pub fn is_square_attacked_after_move(&self, square: u8, by_color: Color, occupied: u64) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1645 |     pub fn is_in_check_with_all_attackers(&self, color: Color) -> (bool, Vec<PieceType>) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1701 |     pub fn square_attacked_by(&self, square: u8, by_color: Color) -> Option<PieceType> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1901 |     pub fn get_knight_attacks(&self, square: u8) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1906 |     pub fn get_king_attacks(&self, square: u8) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1910 |     pub fn copy_from(&mut self, other: &Position) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1928 |     pub fn create_temp_copy(&self) -> Position {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2065 |     pub fn material_count(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2076 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_PAWN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const WHITE_PAWN: usize = 0;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_KNIGHT` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const WHITE_KNIGHT: usize = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_BISHOP` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const WHITE_BISHOP: usize = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_ROOK` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const WHITE_ROOK: usize = 3;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_QUEEN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const WHITE_QUEEN: usize = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_KING` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const WHITE_KING: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_PAWN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const BLACK_PAWN: usize = 6;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_KNIGHT` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const BLACK_KNIGHT: usize = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_BISHOP` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const BLACK_BISHOP: usize = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_ROOK` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const BLACK_ROOK: usize = 9;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_QUEEN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const BLACK_QUEEN: usize = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_KING` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const BLACK_KING: usize = 11;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_piece_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn get_piece_hash(piece_index: usize, square: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_en_passant_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn get_en_passant_hash(file: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_castling_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn get_castling_hash(rights: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_side_to_move_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn get_side_to_move_hash() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEMPO_BONUS` is never used
[INFO] [stdout]   --> src/eval/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const TEMPO_BONUS: i32 = 28;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAZY_EVAL_MARGIN` is never used
[INFO] [stdout]   --> src/eval/mod.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const LAZY_EVAL_MARGIN: i32 = 400;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVAL_CACHE_SIZE` is never used
[INFO] [stdout]   --> src/eval/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const EVAL_CACHE_SIZE: usize = 1024 * 1024;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quick_eval` is never used
[INFO] [stdout]   --> src/eval/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn quick_eval(pos: &crate::board::position::Position) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `needs_deep_eval` is never used
[INFO] [stdout]   --> src/eval/mod.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn needs_deep_eval(pos: &crate::board::position::Position) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complexity_score` is never used
[INFO] [stdout]   --> src/eval/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn complexity_score(pos: &crate::board::position::Position) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAWN_VALUE_MG` is never used
[INFO] [stdout]   --> src/eval/material.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const PAWN_VALUE_MG: i32 = 124;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAWN_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const PAWN_VALUE_EG: i32 = 206;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const KNIGHT_VALUE_EG: i32 = 854;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BISHOP_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const BISHOP_VALUE_EG: i32 = 915;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const ROOK_VALUE_EG: i32 = 1380;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUEEN_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const QUEEN_VALUE_EG: i32 = 2682;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PHASE` is never used
[INFO] [stdout]   --> src/eval/material.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub const MAX_PHASE: u32 = 256;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHASE_VALUES` is never used
[INFO] [stdout]   --> src/eval/material.rs:97:7
[INFO] [stdout]    |
[INFO] [stdout] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_material_signature` is never used
[INFO] [stdout]    --> src/eval/material.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub fn get_material_signature(pos: &Position) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recognize_endgame_type` is never used
[INFO] [stdout]    --> src/eval/material.rs:425:8
[INFO] [stdout]     |
[INFO] [stdout] 425 | pub fn recognize_endgame_type(pos: &Position) -> EndgameType {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_endgame_scale_factor` is never used
[INFO] [stdout]    --> src/eval/material.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EndgameType` is never used
[INFO] [stdout]    --> src/eval/material.rs:496:10
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub enum EndgameType {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pst_move_delta` is never used
[INFO] [stdout]    --> src/eval/pst.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn get_pst_move_delta(piece_type: PieceType, from: u8, to: u8, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `flip_square` is never used
[INFO] [stdout]    --> src/eval/pst.rs:276:14
[INFO] [stdout]     |
[INFO] [stdout] 276 | pub const fn flip_square(square: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rank_to_square` is never used
[INFO] [stdout]    --> src/eval/pst.rs:281:14
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub const fn rank_to_square(rank: u8, file: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHELTER_STRENGTH` is never used
[INFO] [stdout]   --> src/eval/pawns.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const SHELTER_STRENGTH: [[i32; 8]; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STORM_DANGER` is never used
[INFO] [stdout]   --> src/eval/pawns.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | const STORM_DANGER: [[i32; 8]; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_pawns` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:250:8
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub fn evaluate_pawns(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_pawn_asymmetry` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:533:8
[INFO] [stdout]     |
[INFO] [stdout] 533 | pub fn evaluate_pawn_asymmetry(white_pawns: Bitboard, black_pawns: Bitboard) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_king_pawn_shelter` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:549:8
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub fn evaluate_king_pawn_shelter(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_outpost_square` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:612:8
[INFO] [stdout]     |
[INFO] [stdout] 612 | pub fn is_outpost_square(pos: &Position, square: u8, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stdout]   --> src/eval/mobility.rs:89:7
[INFO] [stdout]    |
[INFO] [stdout] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:106:7
[INFO] [stdout]     |
[INFO] [stdout] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_average_mobility` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:588:8
[INFO] [stdout]     |
[INFO] [stdout] 588 | pub fn calculate_average_mobility(pos: &Position) -> (f32, f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_total_mobility_count` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:617:4
[INFO] [stdout]     |
[INFO] [stdout] 617 | fn calculate_total_mobility_count(pos: &Position, color: Color, mobility_area: Bitboard) -> u32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WING_FILES` is never used
[INFO] [stdout]   --> src/eval/space.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_pawn_space` is never used
[INFO] [stdout]    --> src/eval/space.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub fn evaluate_pawn_space(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_piece_activity` is never used
[INFO] [stdout]    --> src/eval/space.rs:347:8
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub fn evaluate_piece_activity(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_piece_activity_bonus` is never used
[INFO] [stdout]    --> src/eval/space.rs:373:4
[INFO] [stdout]     |
[INFO] [stdout] 373 | fn calculate_piece_activity_bonus(square: u8, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_king_in_danger` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:509:8
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub fn is_king_in_danger(pos: &Position, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_back_rank_threats` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn evaluate_back_rank_threats(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_castling_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:585:8
[INFO] [stdout]     |
[INFO] [stdout] 585 | pub fn evaluate_castling_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_kingside_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:611:4
[INFO] [stdout]     |
[INFO] [stdout] 611 | fn evaluate_kingside_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_queenside_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:647:4
[INFO] [stdout]     |
[INFO] [stdout] 647 | fn evaluate_queenside_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_compensation` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn calculate_compensation(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_total_material` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:170:4
[INFO] [stdout]     |
[INFO] [stdout] 170 | fn calculate_total_material(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_development_compensation` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:182:4
[INFO] [stdout]     |
[INFO] [stdout] 182 | fn evaluate_development_compensation(pos: &Position, color: Color, deficit: i32) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_developed_pieces` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn count_developed_pieces(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_initiative_compensation` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:218:4
[INFO] [stdout]     |
[INFO] [stdout] 218 | fn evaluate_initiative_compensation(pos: &Position, color: Color, deficit: i32) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_total_attacks` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn count_total_attacks(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_positional_compensation` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_positional_compensation(pos: &Position, color: Color, deficit: i32) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_pawn_islands` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:264:4
[INFO] [stdout]     |
[INFO] [stdout] 264 | fn count_pawn_islands(pawns: Bitboard) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_drawing_tendency` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:284:8
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub fn has_drawing_tendency(pos: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_trade_value` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub fn calculate_trade_value(us: &[u32; 6], them: &[u32; 6], piece_type: PieceType) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIN_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_tactical_threats` is never used
[INFO] [stdout]    --> src/eval/threats.rs:857:8
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub fn has_tactical_threats(pos: &Position, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EvalCache` is never constructed
[INFO] [stdout]  --> src/eval/eval_util.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct EvalCache {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EvalCacheEntry` is never constructed
[INFO] [stdout]   --> src/eval/eval_util.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | struct EvalCacheEntry {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `probe`, `store`, and `clear` are never used
[INFO] [stdout]   --> src/eval/eval_util.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl EvalCache {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(size: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn probe(&self, hash: u64) -> Option<i32> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn store(&mut self, hash: u64, score: i32, depth: u8) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_EVAL_CACHE` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | static GLOBAL_EVAL_CACHE: Lazy<RwLock<EvalCache>> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn probe_eval_cache(hash: u64) -> Option<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn store_eval_cache(hash: u64, score: i32, depth: u8) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn clear_eval_cache() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase_value` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn phase_value(phase: u32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_middlegame` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn is_middlegame(phase: u32) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_opening` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:90:8
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub fn is_opening(phase: u32) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_complexity` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:302:8
[INFO] [stdout]     |
[INFO] [stdout] 302 | pub fn calculate_complexity(pos: &Position) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_material_value` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:338:4
[INFO] [stdout]     |
[INFO] [stdout] 338 | fn calculate_material_value(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_pawn_islands` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn count_pawn_islands(pawns: u64) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_passed_pawns` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:365:4
[INFO] [stdout]     |
[INFO] [stdout] 365 | fn count_passed_pawns(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:384:4
[INFO] [stdout]     |
[INFO] [stdout] 384 | fn is_passed_pawn(square: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_active_pieces` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:405:4
[INFO] [stdout]     |
[INFO] [stdout] 405 | fn count_active_pieces(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_king_exposed` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:423:4
[INFO] [stdout]     |
[INFO] [stdout] 423 | fn is_king_exposed(pos: &Position, color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_king_shield_mask` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:439:4
[INFO] [stdout]     |
[INFO] [stdout] 439 | fn get_king_shield_mask(king_sq: u8, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_to_win_probability` is never used
[INFO] [stdout]    --> src/eval/eval_util.rs:466:8
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub fn score_to_win_probability(score: i32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EvalResult` is never constructed
[INFO] [stdout]    --> src/eval/evaluate.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub struct EvalResult {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `mate_in`, `mated_in`, and `draw` are never used
[INFO] [stdout]    --> src/eval/evaluate.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl EvalResult {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] 126 |     pub fn new(score: i32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mate_in(moves: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn mated_in(moves: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn draw() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]    --> src/eval/evaluate.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct DetailedEvaluation {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub total: Score,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DetailedEvaluation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:310:8
[INFO] [stdout]     |
[INFO] [stdout] 310 | pub fn evaluate(pos: &Position) -> EvalResult {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_for_debug` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:710:8
[INFO] [stdout]     |
[INFO] [stdout] 710 | pub fn evaluate_for_debug(pos: &Position) -> EvalResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_lazy` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:751:8
[INFO] [stdout]     |
[INFO] [stdout] 751 | pub fn evaluate_lazy(pos: &Position, alpha: i32, beta: i32) -> Option<i32> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_for_color` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:767:8
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub fn evaluate_for_color(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_winning` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:782:8
[INFO] [stdout]     |
[INFO] [stdout] 782 | pub fn is_winning(score: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_drawn` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:786:8
[INFO] [stdout]     |
[INFO] [stdout] 786 | pub fn is_drawn(score: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_to_win_probability` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:790:8
[INFO] [stdout]     |
[INFO] [stdout] 790 | pub fn score_to_win_probability(score: i32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `endgame_scale_factor` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:796:8
[INFO] [stdout]     |
[INFO] [stdout] 796 | pub fn endgame_scale_factor(pos: &Position) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_eval_components` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:820:8
[INFO] [stdout]     |
[INFO] [stdout] 820 | pub fn get_eval_components(pos: &Position) -> [i32; 8] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_complexity` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:836:8
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub fn evaluate_complexity(pos: &Position) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `needs_careful_evaluation` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:840:8
[INFO] [stdout]     |
[INFO] [stdout] 840 | pub fn needs_careful_evaluation(pos: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `static_exchange_estimate` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:875:8
[INFO] [stdout]     |
[INFO] [stdout] 875 | pub fn static_exchange_estimate(pos: &Position, square: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tactical_complexity` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:889:8
[INFO] [stdout]     |
[INFO] [stdout] 889 | pub fn tactical_complexity(pos: &Position) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aggressive_weights` is never used
[INFO] [stdout]   --> src/eval/weights.rs:92:8
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub fn aggressive_weights() -> WeightSet {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `positional_weights` is never used
[INFO] [stdout]    --> src/eval/weights.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn positional_weights() -> WeightSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `endgame_weights` is never used
[INFO] [stdout]    --> src/eval/weights.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub fn endgame_weights() -> WeightSet {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_aggressive_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn use_aggressive_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_positional_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn use_positional_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_endgame_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn use_endgame_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `material_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn material_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bishop_pair_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn bishop_pair_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pst_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn pst_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pawn_structure_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn pawn_structure_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mobility_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:237:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub fn mobility_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `space_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn space_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_safety_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn king_safety_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `imbalance_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn imbalance_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `threats_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn threats_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tempo_bonus_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub fn tempo_bonus_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scale_all_weights` is never used
[INFO] [stdout]    --> src/eval/weights.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn scale_all_weights(factor: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_weights_from_string` is never used
[INFO] [stdout]    --> src/eval/weights.rs:317:8
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn parse_weights_from_string(input: &str) -> Result<WeightSet, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adjust_weights_for_phase` is never used
[INFO] [stdout]    --> src/eval/weights.rs:424:8
[INFO] [stdout]     |
[INFO] [stdout] 424 | pub fn adjust_weights_for_phase(phase: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `position_favors_initiative` is never used
[INFO] [stdout]    --> src/eval/initiative.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn position_favors_initiative(pos: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_tempo` is never used
[INFO] [stdout]    --> src/eval/initiative.rs:345:8
[INFO] [stdout]     |
[INFO] [stdout] 345 | pub fn evaluate_tempo(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_attacks` is never used
[INFO] [stdout]    --> src/movegen/magic.rs:415:8
[INFO] [stdout]     |
[INFO] [stdout] 415 | pub fn king_attacks(occ:Bitboard) -> Bitboard {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_moves` is never used
[INFO] [stdout]   --> src/movegen/moves.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn generate_moves(pos: &Position) -> Vec<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_king_moves` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn generate_king_moves(pos: &Position, moves: &mut Vec<Move>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_path_attacked` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const MAX_MOVES: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hashfull` is never read
[INFO] [stdout]   --> src/search/alphabeta.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct SearchResult {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub hashfull: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_capture_history` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HistoryTables {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash_move` is never read
[INFO] [stdout]    --> src/search/alphabeta.rs:347:5
[INFO] [stdout]     |
[INFO] [stdout] 344 | struct MoveOrder {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 347 |     hash_move: Move,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_position` and `thread_id` are never read
[INFO] [stdout]    --> src/search/alphabeta.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct SearchContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 468 |     root_position: Position,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     thread_id: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SearchContext {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 476 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `see_ge_threshold` is never used
[INFO] [stdout]     --> src/search/alphabeta.rs:1347:8
[INFO] [stdout]      |
[INFO] [stdout] 1347 | pub fn see_ge_threshold(pos: &Position, mv: Move, threshold: i32) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpha_beta_search` is never used
[INFO] [stdout]     --> src/search/alphabeta.rs:1351:8
[INFO] [stdout]      |
[INFO] [stdout] 1351 | pub fn alpha_beta_search(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/search/time_management.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct TimeManager {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  5 |     start_time: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  6 |     allocated_time: Duration,
[INFO] [stdout]  7 |     move_time: Option<Duration>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     white_time: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     black_time: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     white_increment: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     black_increment: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     moves_to_go: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 15 |     is_white_to_move: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimeManager` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_infinite`, `new`, `can_extend`, `remaining_time_ms`, `elapsed_ms`, and `set_side_to_move` are never used
[INFO] [stdout]    --> src/search/time_management.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl TimeManager {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn can_extend(&self, start: Instant, extension_factor: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn remaining_time_ms(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn set_side_to_move(&mut self, is_white: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCORE_NONE` is never used
[INFO] [stdout]  --> src/search/transposition.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOUND_NONE` is never used
[INFO] [stdout]   --> src/search/transposition.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const BOUND_NONE: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `store_eval` and `prefetch` are never used
[INFO] [stdout]    --> src/search/transposition.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn store_eval(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn prefetch(&self, hash: u64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `score_from_tt` and `score_to_tt` are never used
[INFO] [stdout]    --> src/search/transposition.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 288 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] 289 |     #[inline(always)]
[INFO] [stdout] 290 |     pub fn score_from_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn score_to_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tt_score_from_tt` is never used
[INFO] [stdout]    --> src/search/transposition.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn tt_score_from_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tt_score_to_tt` is never used
[INFO] [stdout]    --> src/search/transposition.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn tt_score_to_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_capture_on`, `is_quiet_on`, and `captured_piece_on` are never used
[INFO] [stdout]    --> src/search/transposition.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl Move {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] 369 |     #[inline(always)]
[INFO] [stdout] 370 |     pub fn is_capture_on(self, pos: &Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn is_quiet_on(self, pos: &Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn captured_piece_on(self, pos: &Position) -> PieceType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TT_BOUND_NONE` is never used
[INFO] [stdout]    --> src/search/transposition.rs:390:11
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub const TT_BOUND_NONE: u8 = BOUND_NONE;
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchResult` is never constructed
[INFO] [stdout]   --> src/search/search_node.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SearchResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUTILITY_MARGINS` is never used
[INFO] [stdout]  --> src/search/pruning.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const FUTILITY_MARGINS: [i32; 8] = [0, 100, 150, 200, 300, 400, 550, 700];
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEE_QUIET_THRESHOLD` is never used
[INFO] [stdout]  --> src/search/pruning.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SEE_QUIET_THRESHOLD: i32 = -50;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEE_CAPTURE_THRESHOLD` is never used
[INFO] [stdout]   --> src/search/pruning.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const SEE_CAPTURE_THRESHOLD: i32 = -100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `futility_pruning` is never used
[INFO] [stdout]   --> src/search/pruning.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn futility_pruning(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_tactical_position` is never used
[INFO] [stdout]    --> src/search/pruning.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stdout]    --> src/search/pruning.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stdout]    --> src/search/pruning.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_material_advantage` is never used
[INFO] [stdout]    --> src/search/pruning.rs:168:4
[INFO] [stdout]     |
[INFO] [stdout] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_null_move_conditions` is never used
[INFO] [stdout]    --> src/search/pruning.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn enhanced_null_move_conditions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_move_reduction` is never used
[INFO] [stdout]    --> src/search/pruning.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn null_move_reduction(depth: i32, static_eval: i32, beta: i32) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `history_pruning` is never used
[INFO] [stdout]    --> src/search/pruning.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn history_pruning(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Futility`, `History`, `MultiCut`, and `ProbCut` are never constructed
[INFO] [stdout]    --> src/search/pruning.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub enum PruningReason {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 255 |     Futility,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     History,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 261 |     MultiCut,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 262 |     ProbCut,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PruningReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]    --> src/search/pruning.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 265 | impl PruningReason {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 266 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> src/search/pruning.rs:308:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl PruningStats {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiCutTracker` is never constructed
[INFO] [stdout]    --> src/search/pruning.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub struct MultiCutTracker {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record_cutoff`, `should_multi_cut`, and `reset` are never used
[INFO] [stdout]    --> src/search/pruning.rs:327:12
[INFO] [stdout]     |
[INFO] [stdout] 326 | impl MultiCutTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 327 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn record_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn should_multi_cut(&self, depth: i32, moves_searched: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized] target(s) in 20.82s
[INFO] running `Command { std: "docker" "inspect" "c74facab4cc8c710853006f10e90daae9c7b9bee368961f9628a892c635be1f6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c74facab4cc8c710853006f10e90daae9c7b9bee368961f9628a892c635be1f6", kill_on_drop: false }`
[INFO] [stdout] c74facab4cc8c710853006f10e90daae9c7b9bee368961f9628a892c635be1f6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 5b53c6669b5eb426b9f8d935572935808be5e53eee9f637f2c6b925486ef6219
[INFO] running `Command { std: "docker" "start" "-a" "5b53c6669b5eb426b9f8d935572935808be5e53eee9f637f2c6b925486ef6219", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: build
[INFO] [stderr] warning: unused manifest key: profile.release.target-cpu
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling half v2.6.0
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling plotters-backend v0.3.7
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling os_str_bytes v6.6.1
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling ciborium-io v0.2.2
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling ciborium-ll v0.2.2
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling oorandom v11.1.5
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling clap_lex v0.2.4
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling plotters-svg v0.3.7
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling clap v3.2.25
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling plotters v0.3.7
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling RuthChessOVI v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/board/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_queen_attacks`
[INFO] [stdout]  --> src/board/position.rs:6:120
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1726:20
[INFO] [stdout]      |
[INFO] [stdout] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stdout] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1736:20
[INFO] [stdout]      |
[INFO] [stdout] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout]      |                    ^                                       ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stdout]  --> src/board/zobrist.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stdout]  --> src/eval/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, `FILE_B`, `FILE_C`, `FILE_D`, `FILE_E`, `FILE_F`, `FILE_G`, and `FILE_H`
[INFO] [stdout]  --> src/eval/pawns.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stdout]    --> src/eval/evaluate.rs:317:33
[INFO] [stdout]     |
[INFO] [stdout] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/mobility.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/mobility.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/space.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/space.rs:5:42
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stdout]  --> src/eval/king_safety.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stdout]  --> src/eval/king_safety.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stdout]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/threats.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `rank_of`
[INFO] [stdout]  --> src/eval/threats.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/eval/eval_util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `popcount` and `square_mask`
[INFO] [stdout]  --> src/movegen/magic.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stdout]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/movegen/magic.rs:131:7
[INFO] [stdout]     |
[INFO] [stdout] 131 |     if(square == 64){
[INFO] [stdout]     |       ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 131 -     if(square == 64){
[INFO] [stdout] 131 +     if square == 64 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stdout]  --> src/movegen/moves.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stdout]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all_attacks`
[INFO] [stdout]  --> src/movegen/moves.rs:7:44
[INFO] [stdout]   |
[INFO] [stdout] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::arch::x86_64::*`
[INFO] [stdout]   --> src/movegen/moves.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::arch::x86_64::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stdout]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stdout]   --> src/uci/protocol.rs:4:47
[INFO] [stdout]    |
[INFO] [stdout]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stdout]    |                                               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         transposition::TranspositionTable,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stdout]   --> src/search/alphabeta.rs:5:19
[INFO] [stdout]    |
[INFO] [stdout]  5 |         zobrist::{ZOBRIST},
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stdout]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stdout]  9 |         material::calculate_phase,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |         eval_util,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stdout]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stdout]    |                                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]   --> src/search/alphabeta.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::cmp::{max, min};
[INFO] [stdout]    |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/search/alphabeta.rs:224:11
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if(depth == 31){
[INFO] [stdout]     |           ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if(depth == 31){
[INFO] [stdout] 224 +         if depth == 31 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/search/alphabeta.rs:1189:61
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout]      |                                                             ^                    ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/search/search_node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stdout]  --> src/search/search_node.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stdout]  --> src/search/search_node.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 |     board::position::{Position, Move},
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 5 |     eval::evaluate::Score,
[INFO] [stdout] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     search::time_management::TimeManager,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stdout]  --> src/search/pruning.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::eval::material::calculate_phase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `captured_pawn_square`
[INFO] [stdout]    --> src/board/position.rs:805:13
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stdout] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_square`
[INFO] [stdout]    --> src/board/position.rs:807:13
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]     --> src/board/position.rs:1247:28
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1748:9
[INFO] [stdout]      |
[INFO] [stdout] 1748 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by_color`
[INFO] [stdout]     --> src/board/position.rs:1761:58
[INFO] [stdout]      |
[INFO] [stdout] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stdout]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1762:9
[INFO] [stdout]      |
[INFO] [stdout] 1762 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1775:9
[INFO] [stdout]      |
[INFO] [stdout] 1775 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/eval/material.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | unsafe fn init_pawn_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | unsafe fn init_knight_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:198:1
[INFO] [stdout]     |
[INFO] [stdout] 198 | unsafe fn init_bishop_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn init_rook_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 | unsafe fn init_queen_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | unsafe fn init_king_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stdout]    --> src/eval/pawns.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |     let mut doubled_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_doubled_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stdout]     |
[INFO] [stdout] 279 -     let mut doubled_count = 0;
[INFO] [stdout] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]    --> src/eval/pawns.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let square_bb = 1u64 << square;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let _square_bb = 1u64 << square;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 310 -         let square_bb = 1u64 << square;
[INFO] [stdout] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rank`
[INFO] [stdout]    --> src/eval/pawns.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let rank = rank_of(square);
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _rank = rank_of(square);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 313 -         let rank = rank_of(square);
[INFO] [stdout] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `same_rank_mask`
[INFO] [stdout]    --> src/eval/pawns.rs:440:9
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stdout] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stdout] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_pieces`
[INFO] [stdout]    --> src/eval/mobility.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]   --> src/eval/space.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let square_bb = 1u64 << square;
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _square_bb = 1u64 << square;
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]    |
[INFO] [stdout] 96 -         let square_bb = 1u64 << square;
[INFO] [stdout] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_rank`
[INFO] [stdout]    --> src/eval/king_safety.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let king_rank = king_sq / 8;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _king_rank = king_sq / 8;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 162 -     let king_rank = king_sq / 8;
[INFO] [stdout] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pawns`
[INFO] [stdout]    --> src/eval/king_safety.rs:476:9
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_type`
[INFO] [stdout]    --> src/eval/threats.rs:153:46
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stdout]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_king`
[INFO] [stdout]    --> src/eval/threats.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/threats.rs:434:9
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stdout] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_valuable`
[INFO] [stdout]    --> src/eval/threats.rs:435:9
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]    --> src/eval/threats.rs:758:22
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/threats.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `color`
[INFO] [stdout]   --> src/eval/initiative.rs:45:55
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opponent_color`
[INFO] [stdout]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     let opponent_color = our_color.opposite();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_position` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:361:17
[INFO] [stdout]     |
[INFO] [stdout] 361 |         let mut new_position = None;
[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: variable `found_moves` is assigned to, but never used
[INFO] [stdout]    --> src/uci/protocol.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let mut found_moves = false;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_found_moves` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_moves` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                         found_moves = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_hash`
[INFO] [stdout]    --> src/uci/protocol.rs:422:29
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let old_hash = pos.hash;
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let _old_hash = pos.hash;
[INFO] [stdout]     |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 422 -                         let old_hash = pos.hash;
[INFO] [stdout] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/search/alphabeta.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stdout]     |         ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/search/alphabeta.rs:509:34
[INFO] [stdout]     |
[INFO] [stdout] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece`
[INFO] [stdout]    --> src/search/alphabeta.rs:748:34
[INFO] [stdout]     |
[INFO] [stdout] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `move_count` is assigned to, but never used
[INFO] [stdout]    --> src/search/alphabeta.rs:853:21
[INFO] [stdout]     |
[INFO] [stdout] 853 |             let mut move_count = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_move_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 853 -             let mut move_count = 0;
[INFO] [stdout] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_value`
[INFO] [stdout]    --> src/search/alphabeta.rs:985:49
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_pv` is never read
[INFO] [stdout]     --> src/search/alphabeta.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         let mut best_pv = Vec::new();
[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/search/alphabeta.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_age`
[INFO] [stdout]    --> src/search/transposition.rs:136:62
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_MOVES` is never used
[INFO] [stdout]    --> src/board/position.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_TYPE` is never used
[INFO] [stdout]    --> src/board/position.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveHashData` is never constructed
[INFO] [stdout]    --> src/board/position.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | struct MoveHashData {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_checking_piece` and `count_checks` are never used
[INFO] [stdout]     --> src/board/position.rs:951:8
[INFO] [stdout]      |
[INFO] [stdout]  313 | impl Position {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHASE_VALUES` is never used
[INFO] [stdout]   --> src/eval/material.rs:97:7
[INFO] [stdout]    |
[INFO] [stdout] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stdout]   --> src/eval/mobility.rs:89:7
[INFO] [stdout]    |
[INFO] [stdout] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:106:7
[INFO] [stdout]     |
[INFO] [stdout] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WING_FILES` is never used
[INFO] [stdout]   --> src/eval/space.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIN_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_path_attacked` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const MAX_MOVES: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_capture_history` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HistoryTables {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash_move` is never read
[INFO] [stdout]    --> src/search/alphabeta.rs:347:5
[INFO] [stdout]     |
[INFO] [stdout] 344 | struct MoveOrder {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 347 |     hash_move: Move,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_position` and `thread_id` are never read
[INFO] [stdout]    --> src/search/alphabeta.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct SearchContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 468 |     root_position: Position,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     thread_id: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SearchContext {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 476 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCORE_NONE` is never used
[INFO] [stdout]  --> src/search/transposition.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_tactical_position` is never used
[INFO] [stdout]    --> src/search/pruning.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stdout]    --> src/search/pruning.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stdout]    --> src/search/pruning.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_material_advantage` is never used
[INFO] [stdout]    --> src/search/pruning.rs:168:4
[INFO] [stdout]     |
[INFO] [stdout] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: crate `RuthChessOVI` should have a snake case name
[INFO] [stdout]   |
[INFO] [stdout]   = help: convert the identifier to snake case: `ruth_chess_ovi`
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]    Compiling ciborium v0.2.2
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling criterion v0.4.0
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/board/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_queen_attacks`
[INFO] [stdout]  --> src/board/position.rs:6:120
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1726:20
[INFO] [stdout]      |
[INFO] [stdout] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stdout] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1736:20
[INFO] [stdout]      |
[INFO] [stdout] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout]      |                    ^                                       ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stdout]  --> src/board/zobrist.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stdout]  --> src/eval/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/board/position.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_D`, and `FILE_F`
[INFO] [stdout]  --> src/eval/pawns.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stdout]   |                                        ^^^^^                          ^^^^^^          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/mobility.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/mobility.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/space.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/space.rs:5:42
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_queen_attacks`
[INFO] [stdout]  --> src/board/position.rs:6:120
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stdout]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1726:20
[INFO] [stdout]      |
[INFO] [stdout] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stdout] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]     --> src/board/position.rs:1736:20
[INFO] [stdout]      |
[INFO] [stdout] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout]      |                    ^                                       ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stdout] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stdout]  --> src/board/zobrist.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stdout]  --> src/eval/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stdout]  --> src/eval/king_safety.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stdout]  --> src/eval/king_safety.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stdout]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/threats.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_D`, and `FILE_F`
[INFO] [stdout]  --> src/eval/pawns.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stdout]   |                                        ^^^^^                          ^^^^^^          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `rank_of`
[INFO] [stdout]  --> src/eval/threats.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/eval/eval_util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stdout]    --> src/eval/evaluate.rs:317:33
[INFO] [stdout]     |
[INFO] [stdout] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/mobility.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/mobility.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/space.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_pawn_attacks`
[INFO] [stdout]  --> src/eval/space.rs:5:42
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stdout]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stdout]  --> src/eval/king_safety.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stdout]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stdout]  --> src/eval/king_safety.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stdout]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EMPTY`
[INFO] [stdout]  --> src/eval/threats.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stdout]   |                                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `file_of` and `rank_of`
[INFO] [stdout]  --> src/eval/threats.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stdout]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stdout]  --> src/eval/eval_util.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::eval::evaluate::Score;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stdout]    --> src/eval/evaluate.rs:317:33
[INFO] [stdout]     |
[INFO] [stdout] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `popcount` and `square_mask`
[INFO] [stdout]  --> src/movegen/magic.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stdout]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/movegen/magic.rs:131:7
[INFO] [stdout]     |
[INFO] [stdout] 131 |     if(square == 64){
[INFO] [stdout]     |       ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 131 -     if(square == 64){
[INFO] [stdout] 131 +     if square == 64 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stdout]  --> src/movegen/moves.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stdout]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all_attacks`
[INFO] [stdout]  --> src/movegen/moves.rs:7:44
[INFO] [stdout]   |
[INFO] [stdout] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::arch::x86_64::*`
[INFO] [stdout]   --> src/movegen/moves.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::arch::x86_64::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stdout]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `EvalResult`, `MATE_VALUE`, `Score`, `evaluate_detailed`, `evaluate_fast`, and `evaluate`
[INFO] [stdout]   --> src/eval/mod.rs:15:20
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use evaluate::{Score, EvalResult, evaluate, evaluate_fast, evaluate_detailed, MATE_VALUE, DRAW_VALUE};
[INFO] [stdout]    |                    ^^^^^  ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stdout]   --> src/uci/protocol.rs:4:47
[INFO] [stdout]    |
[INFO] [stdout]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stdout]    |                                               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         transposition::TranspositionTable,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EvalCache`, `is_endgame`, `is_middlegame`, and `phase_value`
[INFO] [stdout]   --> src/eval/mod.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use eval_util::{EvalCache, phase_value, is_endgame, is_middlegame};
[INFO] [stdout]    |                     ^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stdout]   --> src/search/alphabeta.rs:5:19
[INFO] [stdout]    |
[INFO] [stdout]  5 |         zobrist::{ZOBRIST},
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stdout]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stdout]  9 |         material::calculate_phase,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |         eval_util,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stdout]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stdout]    |                                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MAX_PHASE` and `calculate_phase`
[INFO] [stdout]   --> src/eval/mod.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use material::{calculate_phase, MAX_PHASE};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `popcount` and `square_mask`
[INFO] [stdout]  --> src/movegen/magic.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stdout]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/movegen/magic.rs:131:7
[INFO] [stdout]     |
[INFO] [stdout] 131 |     if(square == 64){
[INFO] [stdout]     |       ^            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 131 -     if(square == 64){
[INFO] [stdout] 131 +     if square == 64 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stdout]  --> src/movegen/moves.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stdout]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `all_attacks`
[INFO] [stdout]  --> src/movegen/moves.rs:7:44
[INFO] [stdout]   |
[INFO] [stdout] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stdout]   |                                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::arch::x86_64::*`
[INFO] [stdout]   --> src/movegen/moves.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::arch::x86_64::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stdout]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stdout]   --> src/search/alphabeta.rs:5:19
[INFO] [stdout]    |
[INFO] [stdout]  5 |         zobrist::{ZOBRIST},
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stdout]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stdout]  9 |         material::calculate_phase,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |         eval_util,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stdout]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stdout]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stdout]    |                                                                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]   --> src/search/alphabeta.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::cmp::{max, min};
[INFO] [stdout]    |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]   --> src/search/alphabeta.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::cmp::{max, min};
[INFO] [stdout]    |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/search/alphabeta.rs:224:11
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if(depth == 31){
[INFO] [stdout]     |           ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if(depth == 31){
[INFO] [stdout] 224 +         if depth == 31 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/search/alphabeta.rs:1189:61
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout]      |                                                             ^                    ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/search/search_node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stdout]  --> src/search/search_node.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stdout]  --> src/search/search_node.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 |     board::position::{Position, Move},
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 5 |     eval::evaluate::Score,
[INFO] [stdout] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     search::time_management::TimeManager,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stdout]  --> src/search/pruning.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::eval::material::calculate_phase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/search/alphabeta.rs:224:11
[INFO] [stdout]     |
[INFO] [stdout] 224 |         if(depth == 31){
[INFO] [stdout]     |           ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 224 -         if(depth == 31){
[INFO] [stdout] 224 +         if depth == 31 {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]     --> src/search/alphabeta.rs:1189:61
[INFO] [stdout]      |
[INFO] [stdout] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout]      |                                                             ^                    ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stdout] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/search/search_node.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stdout]  --> src/search/search_node.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stdout]  --> src/search/search_node.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 |     board::position::{Position, Move},
[INFO] [stdout]   |                       ^^^^^^^^
[INFO] [stdout] 5 |     eval::evaluate::Score,
[INFO] [stdout] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     search::time_management::TimeManager,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stdout]  --> src/search/pruning.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::eval::material::calculate_phase;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stdout]   --> src/uci/protocol.rs:4:47
[INFO] [stdout]    |
[INFO] [stdout]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stdout]    |                                               ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |         transposition::TranspositionTable,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::eval::evaluate::evaluate`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::eval::evaluate::evaluate;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Move`, `PieceType`, and `Position`
[INFO] [stdout]   --> src/main.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::board::position::{Position,Move,PieceType};
[INFO] [stdout]    |                              ^^^^^^^^ ^^^^ ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufRead`, `BufReader`, and `self`
[INFO] [stdout]   --> src/main.rs:15:15
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::io::{self, BufRead, BufReader};
[INFO] [stdout]    |               ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uci::protocol`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use uci::protocol;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RuthChessOVI::board::bitboard::square_to_algebraic`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use RuthChessOVI::board::bitboard::square_to_algebraic;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `captured_pawn_square`
[INFO] [stdout]    --> src/board/position.rs:805:13
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stdout] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_square`
[INFO] [stdout]    --> src/board/position.rs:807:13
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]     --> src/board/position.rs:1247:28
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `captured_pawn_square`
[INFO] [stdout]    --> src/board/position.rs:805:13
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stdout] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_square`
[INFO] [stdout]    --> src/board/position.rs:807:13
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stdout] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1748:9
[INFO] [stdout]      |
[INFO] [stdout] 1748 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by_color`
[INFO] [stdout]     --> src/board/position.rs:1761:58
[INFO] [stdout]      |
[INFO] [stdout] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stdout]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1762:9
[INFO] [stdout]      |
[INFO] [stdout] 1762 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1775:9
[INFO] [stdout]      |
[INFO] [stdout] 1775 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]     --> src/board/position.rs:1247:28
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1748:9
[INFO] [stdout]      |
[INFO] [stdout] 1748 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by_color`
[INFO] [stdout]     --> src/board/position.rs:1761:58
[INFO] [stdout]      |
[INFO] [stdout] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stdout]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1762:9
[INFO] [stdout]      |
[INFO] [stdout] 1762 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]     --> src/board/position.rs:1775:9
[INFO] [stdout]      |
[INFO] [stdout] 1775 |         unsafe {
[INFO] [stdout]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/eval/material.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | unsafe fn init_pawn_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | unsafe fn init_knight_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:198:1
[INFO] [stdout]     |
[INFO] [stdout] 198 | unsafe fn init_bishop_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn init_rook_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 | unsafe fn init_queen_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | unsafe fn init_king_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stdout]    --> src/eval/pawns.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |     let mut doubled_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_doubled_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stdout]     |
[INFO] [stdout] 279 -     let mut doubled_count = 0;
[INFO] [stdout] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]    --> src/eval/pawns.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let square_bb = 1u64 << square;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let _square_bb = 1u64 << square;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 310 -         let square_bb = 1u64 << square;
[INFO] [stdout] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rank`
[INFO] [stdout]    --> src/eval/pawns.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let rank = rank_of(square);
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _rank = rank_of(square);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 313 -         let rank = rank_of(square);
[INFO] [stdout] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `same_rank_mask`
[INFO] [stdout]    --> src/eval/pawns.rs:440:9
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/eval/material.rs:483:33
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:185:9
[INFO] [stdout]     |
[INFO] [stdout] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:182:1
[INFO] [stdout]     |
[INFO] [stdout] 182 | unsafe fn init_pawn_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:190:1
[INFO] [stdout]     |
[INFO] [stdout] 190 | unsafe fn init_knight_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_pieces`
[INFO] [stdout]    --> src/eval/mobility.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:201:9
[INFO] [stdout]     |
[INFO] [stdout] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:198:1
[INFO] [stdout]     |
[INFO] [stdout] 198 | unsafe fn init_bishop_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:209:9
[INFO] [stdout]     |
[INFO] [stdout] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:206:1
[INFO] [stdout]     |
[INFO] [stdout] 206 | unsafe fn init_rook_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:210:9
[INFO] [stdout]     |
[INFO] [stdout] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:217:9
[INFO] [stdout]     |
[INFO] [stdout] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:214:1
[INFO] [stdout]     |
[INFO] [stdout] 214 | unsafe fn init_queen_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:218:9
[INFO] [stdout]     |
[INFO] [stdout] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:225:9
[INFO] [stdout]     |
[INFO] [stdout] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/eval/pst.rs:222:1
[INFO] [stdout]     |
[INFO] [stdout] 222 | unsafe fn init_king_table() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/eval/pst.rs:226:9
[INFO] [stdout]     |
[INFO] [stdout] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]   --> src/eval/space.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let square_bb = 1u64 << square;
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _square_bb = 1u64 << square;
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]    |
[INFO] [stdout] 96 -         let square_bb = 1u64 << square;
[INFO] [stdout] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stdout]    --> src/eval/pawns.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |     let mut doubled_count = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_doubled_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stdout]     |
[INFO] [stdout] 279 -     let mut doubled_count = 0;
[INFO] [stdout] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]    --> src/eval/pawns.rs:310:13
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let square_bb = 1u64 << square;
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 310 |         let _square_bb = 1u64 << square;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 310 -         let square_bb = 1u64 << square;
[INFO] [stdout] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rank`
[INFO] [stdout]    --> src/eval/pawns.rs:313:13
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let rank = rank_of(square);
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 313 |         let _rank = rank_of(square);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 313 -         let rank = rank_of(square);
[INFO] [stdout] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `same_rank_mask`
[INFO] [stdout]    --> src/eval/pawns.rs:440:9
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stdout] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `king_rank`
[INFO] [stdout]    --> src/eval/king_safety.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let king_rank = king_sq / 8;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _king_rank = king_sq / 8;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 162 -     let king_rank = king_sq / 8;
[INFO] [stdout] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stdout] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stdout] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pawns`
[INFO] [stdout]    --> src/eval/king_safety.rs:476:9
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_pieces`
[INFO] [stdout]    --> src/eval/mobility.rs:222:9
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stdout] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_type`
[INFO] [stdout]    --> src/eval/threats.rs:153:46
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stdout]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_king`
[INFO] [stdout]    --> src/eval/threats.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/threats.rs:434:9
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stdout] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_valuable`
[INFO] [stdout]    --> src/eval/threats.rs:435:9
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square_bb`
[INFO] [stdout]   --> src/eval/space.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let square_bb = 1u64 << square;
[INFO] [stdout]    |             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let _square_bb = 1u64 << square;
[INFO] [stdout]    |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]    |
[INFO] [stdout] 96 -         let square_bb = 1u64 << square;
[INFO] [stdout] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]    --> src/eval/threats.rs:758:22
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/threats.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `king_rank`
[INFO] [stdout]    --> src/eval/king_safety.rs:162:9
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let king_rank = king_sq / 8;
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 162 |     let _king_rank = king_sq / 8;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 162 -     let king_rank = king_sq / 8;
[INFO] [stdout] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pawns`
[INFO] [stdout]    --> src/eval/king_safety.rs:476:9
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_type`
[INFO] [stdout]    --> src/eval/threats.rs:153:46
[INFO] [stdout]     |
[INFO] [stdout] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stdout]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `all_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:320:9
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stdout] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/evaluate.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stdout]     |             ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stdout] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_king`
[INFO] [stdout]    --> src/eval/threats.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stdout] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `our_pieces`
[INFO] [stdout]    --> src/eval/threats.rs:434:9
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stdout] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy_valuable`
[INFO] [stdout]    --> src/eval/threats.rs:435:9
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]    --> src/eval/threats.rs:758:22
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      ^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |                      +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/eval/threats.rs:803:9
[INFO] [stdout]     |
[INFO] [stdout] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `color`
[INFO] [stdout]   --> src/eval/initiative.rs:45:55
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `white_pawns`
[INFO] [stdout]    --> src/eval/initiative.rs:393:13
[INFO] [stdout]     |
[INFO] [stdout] 393 |         let white_pawns = 1u64 << 36;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 393 |         let _white_pawns = 1u64 << 36;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 393 -         let white_pawns = 1u64 << 36;
[INFO] [stdout] 393 +         let eval::space::WING_FILES = 1u64 << 36;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]   --> src/eval/initiative.rs:45:55
[INFO] [stdout]    |
[INFO] [stdout] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stdout]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `white_pawns`
[INFO] [stdout]    --> src/eval/initiative.rs:393:13
[INFO] [stdout]     |
[INFO] [stdout] 393 |         let white_pawns = 1u64 << 36;
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 393 |         let _white_pawns = 1u64 << 36;
[INFO] [stdout]     |             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 393 -         let white_pawns = 1u64 << 36;
[INFO] [stdout] 393 +         let eval::space::WING_FILES = 1u64 << 36;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opponent_color`
[INFO] [stdout]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     let opponent_color = our_color.opposite();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:170:9
[INFO] [stdout]     |
[INFO] [stdout] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/movegen/moves.rs:270:9
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/search/alphabeta.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stdout]     |         ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `opponent_color`
[INFO] [stdout]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |     let opponent_color = our_color.opposite();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/search/alphabeta.rs:509:34
[INFO] [stdout]     |
[INFO] [stdout] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece`
[INFO] [stdout]    --> src/search/alphabeta.rs:748:34
[INFO] [stdout]     |
[INFO] [stdout] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `move_count` is assigned to, but never used
[INFO] [stdout]    --> src/search/alphabeta.rs:853:21
[INFO] [stdout]     |
[INFO] [stdout] 853 |             let mut move_count = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_move_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 853 -             let mut move_count = 0;
[INFO] [stdout] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_value`
[INFO] [stdout]    --> src/search/alphabeta.rs:985:49
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_pv` is never read
[INFO] [stdout]     --> src/search/alphabeta.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         let mut best_pv = Vec::new();
[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 `new_position` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:361:17
[INFO] [stdout]     |
[INFO] [stdout] 361 |         let mut new_position = None;
[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: variable `found_moves` is assigned to, but never used
[INFO] [stdout]    --> src/uci/protocol.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let mut found_moves = false;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_found_moves` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_moves` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                         found_moves = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_hash`
[INFO] [stdout]    --> src/uci/protocol.rs:422:29
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let old_hash = pos.hash;
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let _old_hash = pos.hash;
[INFO] [stdout]     |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 422 -                         let old_hash = pos.hash;
[INFO] [stdout] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/search/alphabeta.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_age`
[INFO] [stdout]    --> src/search/transposition.rs:136:62
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/search/alphabeta.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stdout]     |         ------------------------------------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pos`
[INFO] [stdout]    --> src/search/alphabeta.rs:509:34
[INFO] [stdout]     |
[INFO] [stdout] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece`
[INFO] [stdout]    --> src/search/alphabeta.rs:748:34
[INFO] [stdout]     |
[INFO] [stdout] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stdout]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `new_position` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:361:17
[INFO] [stdout]     |
[INFO] [stdout] 361 |         let mut new_position = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `found_moves` is assigned to, but never used
[INFO] [stdout]    --> src/uci/protocol.rs:381:25
[INFO] [stdout]     |
[INFO] [stdout] 381 |                 let mut found_moves = false;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_found_moves` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `found_moves` is never read
[INFO] [stdout]    --> src/uci/protocol.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                         found_moves = true;
[INFO] [stdout]     |                         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `old_hash`
[INFO] [stdout]    --> src/uci/protocol.rs:422:29
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let old_hash = pos.hash;
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 422 |                         let _old_hash = pos.hash;
[INFO] [stdout]     |                             +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stdout]     |
[INFO] [stdout] 422 -                         let old_hash = pos.hash;
[INFO] [stdout] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `move_count` is assigned to, but never used
[INFO] [stdout]    --> src/search/alphabeta.rs:853:21
[INFO] [stdout]     |
[INFO] [stdout] 853 |             let mut move_count = 0;
[INFO] [stdout]     |                     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_move_count` instead
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 853 -             let mut move_count = 0;
[INFO] [stdout] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `piece_value`
[INFO] [stdout]    --> src/search/alphabeta.rs:985:49
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stdout]     |                                                 +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stdout]     |
[INFO] [stdout] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stdout] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `best_pv` is never read
[INFO] [stdout]     --> src/search/alphabeta.rs:1035:17
[INFO] [stdout]      |
[INFO] [stdout] 1035 |         let mut best_pv = Vec::new();
[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/search/alphabeta.rs:1310:13
[INFO] [stdout]      |
[INFO] [stdout] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stdout]      |             ----^^^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FULL` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const FULL: Bitboard = 0xFFFF_FFFF_FFFF_FFFF;
[INFO] [stdout]   |           ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_2` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const RANK_2: Bitboard = 0x0000_0000_0000_FF00;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_3` is never used
[INFO] [stdout]  --> src/board/bitboard.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const RANK_3: Bitboard = 0x0000_0000_00FF_0000;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_4` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const RANK_4: Bitboard = 0x0000_0000_FF00_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_5` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const RANK_5: Bitboard = 0x0000_00FF_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_6` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const RANK_6: Bitboard = 0x0000_FF00_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RANK_7` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub const RANK_7: Bitboard = 0x00FF_0000_0000_0000;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_D` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const FILE_D: Bitboard = 0x0808_0808_0808_0808;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FILE_F` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:21:11
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub const FILE_F: Bitboard = 0x2020_2020_2020_2020;
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_bit` is never used
[INFO] [stdout]   --> src/board/bitboard.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn toggle_bit(bb: &mut Bitboard, square: u8) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rank` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:139:14
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub const fn get_rank(square: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_file` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:144:14
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub const fn get_file(square: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rank_mask` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:149:14
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub const fn rank_mask(rank: u8) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `file_mask` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:154:14
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub const fn file_mask(file: u8) -> Bitboard {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_distance` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:159:8
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub fn square_distance(sq1: u8, sq2: u8) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BitboardIterator` is never constructed
[INFO] [stdout]    --> src/board/bitboard.rs:195:12
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub struct BitboardIterator {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:201:18
[INFO] [stdout]     |
[INFO] [stdout] 199 | impl BitboardIterator {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 200 |     #[inline(always)]
[INFO] [stdout] 201 |     pub const fn new(bb: Bitboard) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iter_bits` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:221:14
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub const fn iter_bits(bb: Bitboard) -> BitboardIterator {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print` is never used
[INFO] [stdout]    --> src/board/bitboard.rs:225:8
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub fn print(bb: Bitboard) {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `king_to` and `castling_rights_mask` are never read
[INFO] [stdout]    --> src/board/position.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct CastleData {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 140 |     pub king_to: u8,
[INFO] [stdout]     |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub castling_rights_mask: u8,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_MOVES` is never used
[INFO] [stdout]    --> src/board/position.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_TYPE` is never used
[INFO] [stdout]    --> src/board/position.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_u32`, `to_u32`, `is_pawn_move`, and `is_castling` are never used
[INFO] [stdout]    --> src/board/position.rs:211:18
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl Move {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub const fn from_u32(val:u32) -> Self { Self(val) }
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub const fn to_u32(self) -> u32 { self.0}
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub const fn is_pawn_move(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub const fn is_castling(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveHashData` is never constructed
[INFO] [stdout]    --> src/board/position.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | struct MoveHashData {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_age`
[INFO] [stdout]    --> src/search/transposition.rs:136:62
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |                                                              +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stdout]     |
[INFO] [stdout] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stdout] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]     --> src/board/position.rs:358:12
[INFO] [stdout]      |
[INFO] [stdout]  313 | impl Position {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  358 |     pub fn see_ge(&self, mv: Move, threshold: i32) -> bool {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  480 |     pub fn is_capture(&self, mv: Move) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  485 |     pub fn piece_value(&self, piece: PieceType) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  578 |     pub fn captured_piece(&self, mv: Move) -> PieceType {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  583 |     pub fn is_pinned(&self, square: u8, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  831 |     pub fn get_pinned_piece_legal_squares(&self, square: u8, color: Color) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1154 |     pub fn remove_piece(&mut self, square: u8) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1213 |     pub fn king_check(&self, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1603 |     pub fn is_square_attacked_after_move(&self, square: u8, by_color: Color, occupied: u64) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1645 |     pub fn is_in_check_with_all_attackers(&self, color: Color) -> (bool, Vec<PieceType>) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1701 |     pub fn square_attacked_by(&self, square: u8, by_color: Color) -> Option<PieceType> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1901 |     pub fn get_knight_attacks(&self, square: u8) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1906 |     pub fn get_king_attacks(&self, square: u8) -> Bitboard {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1910 |     pub fn copy_from(&mut self, other: &Position) {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1928 |     pub fn create_temp_copy(&self) -> Position {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 2065 |     pub fn material_count(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_PAWN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const WHITE_PAWN: usize = 0;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_KNIGHT` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub const WHITE_KNIGHT: usize = 1;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_BISHOP` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub const WHITE_BISHOP: usize = 2;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_ROOK` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const WHITE_ROOK: usize = 3;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_QUEEN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const WHITE_QUEEN: usize = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE_KING` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const WHITE_KING: usize = 5;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_PAWN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:30:11
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub const BLACK_PAWN: usize = 6;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_KNIGHT` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const BLACK_KNIGHT: usize = 7;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_BISHOP` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const BLACK_BISHOP: usize = 8;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_ROOK` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const BLACK_ROOK: usize = 9;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_QUEEN` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:34:11
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub const BLACK_QUEEN: usize = 10;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLACK_KING` is never used
[INFO] [stdout]   --> src/board/zobrist.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const BLACK_KING: usize = 11;
[INFO] [stdout]    |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_piece_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn get_piece_hash(piece_index: usize, square: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_en_passant_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:133:8
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub fn get_en_passant_hash(file: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_castling_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn get_castling_hash(rights: u8) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_side_to_move_hash` is never used
[INFO] [stdout]    --> src/board/zobrist.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn get_side_to_move_hash() -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TEMPO_BONUS` is never used
[INFO] [stdout]   --> src/eval/mod.rs:19:11
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub const TEMPO_BONUS: i32 = 28;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LAZY_EVAL_MARGIN` is never used
[INFO] [stdout]   --> src/eval/mod.rs:20:11
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub const LAZY_EVAL_MARGIN: i32 = 400;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EVAL_CACHE_SIZE` is never used
[INFO] [stdout]   --> src/eval/mod.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const EVAL_CACHE_SIZE: usize = 1024 * 1024;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quick_eval` is never used
[INFO] [stdout]   --> src/eval/mod.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn quick_eval(pos: &crate::board::position::Position) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `needs_deep_eval` is never used
[INFO] [stdout]   --> src/eval/mod.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn needs_deep_eval(pos: &crate::board::position::Position) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complexity_score` is never used
[INFO] [stdout]   --> src/eval/mod.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn complexity_score(pos: &crate::board::position::Position) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAWN_VALUE_MG` is never used
[INFO] [stdout]   --> src/eval/material.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub const PAWN_VALUE_MG: i32 = 124;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PAWN_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub const PAWN_VALUE_EG: i32 = 206;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:18:11
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub const KNIGHT_VALUE_EG: i32 = 854;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:22:11
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub const ROOK_VALUE_EG: i32 = 1380;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `QUEEN_VALUE_EG` is never used
[INFO] [stdout]   --> src/eval/material.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub const QUEEN_VALUE_EG: i32 = 2682;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PHASE` is never used
[INFO] [stdout]   --> src/eval/material.rs:96:11
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub const MAX_PHASE: u32 = 256;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHASE_VALUES` is never used
[INFO] [stdout]   --> src/eval/material.rs:97:7
[INFO] [stdout]    |
[INFO] [stdout] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_material_signature` is never used
[INFO] [stdout]    --> src/eval/material.rs:409:8
[INFO] [stdout]     |
[INFO] [stdout] 409 | pub fn get_material_signature(pos: &Position) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_endgame_scale_factor` is never used
[INFO] [stdout]    --> src/eval/material.rs:483:8
[INFO] [stdout]     |
[INFO] [stdout] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pst_move_delta` is never used
[INFO] [stdout]    --> src/eval/pst.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn get_pst_move_delta(piece_type: PieceType, from: u8, to: u8, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rank_to_square` is never used
[INFO] [stdout]    --> src/eval/pst.rs:281:14
[INFO] [stdout]     |
[INFO] [stdout] 281 | pub const fn rank_to_square(rank: u8, file: u8) -> u8 {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SHELTER_STRENGTH` is never used
[INFO] [stdout]   --> src/eval/pawns.rs:57:7
[INFO] [stdout]    |
[INFO] [stdout] 57 | const SHELTER_STRENGTH: [[i32; 8]; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STORM_DANGER` is never used
[INFO] [stdout]   --> src/eval/pawns.rs:64:7
[INFO] [stdout]    |
[INFO] [stdout] 64 | const STORM_DANGER: [[i32; 8]; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_king_pawn_shelter` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:549:8
[INFO] [stdout]     |
[INFO] [stdout] 549 | pub fn evaluate_king_pawn_shelter(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_outpost_square` is never used
[INFO] [stdout]    --> src/eval/pawns.rs:612:8
[INFO] [stdout]     |
[INFO] [stdout] 612 | pub fn is_outpost_square(pos: &Position, square: u8, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stdout]   --> src/eval/mobility.rs:89:7
[INFO] [stdout]    |
[INFO] [stdout] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:106:7
[INFO] [stdout]     |
[INFO] [stdout] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WING_FILES` is never used
[INFO] [stdout]   --> src/eval/space.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_pawn_space` is never used
[INFO] [stdout]    --> src/eval/space.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub fn evaluate_pawn_space(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_piece_activity` is never used
[INFO] [stdout]    --> src/eval/space.rs:347:8
[INFO] [stdout]     |
[INFO] [stdout] 347 | pub fn evaluate_piece_activity(pos: &Position) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_piece_activity_bonus` is never used
[INFO] [stdout]    --> src/eval/space.rs:373:4
[INFO] [stdout]     |
[INFO] [stdout] 373 | fn calculate_piece_activity_bonus(square: u8, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_king_in_danger` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:509:8
[INFO] [stdout]     |
[INFO] [stdout] 509 | pub fn is_king_in_danger(pos: &Position, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_back_rank_threats` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn evaluate_back_rank_threats(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_castling_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:585:8
[INFO] [stdout]     |
[INFO] [stdout] 585 | pub fn evaluate_castling_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_kingside_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:611:4
[INFO] [stdout]     |
[INFO] [stdout] 611 | fn evaluate_kingside_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_queenside_safety` is never used
[INFO] [stdout]    --> src/eval/king_safety.rs:647:4
[INFO] [stdout]     |
[INFO] [stdout] 647 | fn evaluate_queenside_safety(pos: &Position, color: Color) -> Score {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_trade_value` is never used
[INFO] [stdout]    --> src/eval/imbalance.rs:308:8
[INFO] [stdout]     |
[INFO] [stdout] 308 | pub fn calculate_trade_value(us: &[u32; 6], them: &[u32; 6], piece_type: PieceType) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIN_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_tactical_threats` is never used
[INFO] [stdout]    --> src/eval/threats.rs:857:8
[INFO] [stdout]     |
[INFO] [stdout] 857 | pub fn has_tactical_threats(pos: &Position, color: Color) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl EvalCache {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn clear(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_EVAL_CACHE` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | static GLOBAL_EVAL_CACHE: Lazy<RwLock<EvalCache>> = Lazy::new(|| {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `probe_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn probe_eval_cache(hash: u64) -> Option<i32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `store_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn store_eval_cache(hash: u64, score: i32, depth: u8) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_eval_cache` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn clear_eval_cache() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `phase_value` is never used
[INFO] [stdout]   --> src/eval/eval_util.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn phase_value(phase: u32) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `mate_in`, `mated_in`, and `draw` are never used
[INFO] [stdout]    --> src/eval/evaluate.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout] 125 | impl EvalResult {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn mate_in(moves: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn mated_in(moves: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn draw() -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `total` is never read
[INFO] [stdout]    --> src/eval/evaluate.rs:171:9
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub struct DetailedEvaluation {
[INFO] [stdout]     |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub total: Score,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DetailedEvaluation` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_for_debug` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:710:8
[INFO] [stdout]     |
[INFO] [stdout] 710 | pub fn evaluate_for_debug(pos: &Position) -> EvalResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_for_color` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:767:8
[INFO] [stdout]     |
[INFO] [stdout] 767 | pub fn evaluate_for_color(pos: &Position, color: Color) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_winning` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:782:8
[INFO] [stdout]     |
[INFO] [stdout] 782 | pub fn is_winning(score: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_drawn` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:786:8
[INFO] [stdout]     |
[INFO] [stdout] 786 | pub fn is_drawn(score: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score_to_win_probability` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:790:8
[INFO] [stdout]     |
[INFO] [stdout] 790 | pub fn score_to_win_probability(score: i32) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `endgame_scale_factor` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:796:8
[INFO] [stdout]     |
[INFO] [stdout] 796 | pub fn endgame_scale_factor(pos: &Position) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_eval_components` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:820:8
[INFO] [stdout]     |
[INFO] [stdout] 820 | pub fn get_eval_components(pos: &Position) -> [i32; 8] {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_complexity` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:836:8
[INFO] [stdout]     |
[INFO] [stdout] 836 | pub fn evaluate_complexity(pos: &Position) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `needs_careful_evaluation` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:840:8
[INFO] [stdout]     |
[INFO] [stdout] 840 | pub fn needs_careful_evaluation(pos: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `static_exchange_estimate` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:875:8
[INFO] [stdout]     |
[INFO] [stdout] 875 | pub fn static_exchange_estimate(pos: &Position, square: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tactical_complexity` is never used
[INFO] [stdout]    --> src/eval/evaluate.rs:889:8
[INFO] [stdout]     |
[INFO] [stdout] 889 | pub fn tactical_complexity(pos: &Position) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_aggressive_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:204:8
[INFO] [stdout]     |
[INFO] [stdout] 204 | pub fn use_aggressive_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_positional_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:208:8
[INFO] [stdout]     |
[INFO] [stdout] 208 | pub fn use_positional_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_endgame_style` is never used
[INFO] [stdout]    --> src/eval/weights.rs:212:8
[INFO] [stdout]     |
[INFO] [stdout] 212 | pub fn use_endgame_style() {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bishop_pair_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn bishop_pair_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pst_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:227:8
[INFO] [stdout]     |
[INFO] [stdout] 227 | pub fn pst_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pawn_structure_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:232:8
[INFO] [stdout]     |
[INFO] [stdout] 232 | pub fn pawn_structure_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mobility_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:237:8
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub fn mobility_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `space_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn space_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_safety_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn king_safety_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `imbalance_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn imbalance_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `threats_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn threats_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tempo_bonus_weight` is never used
[INFO] [stdout]    --> src/eval/weights.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub fn tempo_bonus_weight() -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `scale_all_weights` is never used
[INFO] [stdout]    --> src/eval/weights.rs:270:8
[INFO] [stdout]     |
[INFO] [stdout] 270 | pub fn scale_all_weights(factor: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `adjust_weights_for_phase` is never used
[INFO] [stdout]    --> src/eval/weights.rs:424:8
[INFO] [stdout]     |
[INFO] [stdout] 424 | pub fn adjust_weights_for_phase(phase: u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `position_favors_initiative` is never used
[INFO] [stdout]    --> src/eval/initiative.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn position_favors_initiative(pos: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_attacks` is never used
[INFO] [stdout]    --> src/movegen/magic.rs:415:8
[INFO] [stdout]     |
[INFO] [stdout] 415 | pub fn king_attacks(occ:Bitboard) -> Bitboard {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_moves` is never used
[INFO] [stdout]   --> src/movegen/moves.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn generate_moves(pos: &Position) -> Vec<Move> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_king_moves` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:162:4
[INFO] [stdout]     |
[INFO] [stdout] 162 | fn generate_king_moves(pos: &Position, moves: &mut Vec<Move>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_path_attacked` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const MAX_MOVES: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hashfull` is never read
[INFO] [stdout]   --> src/search/alphabeta.rs:96:9
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct SearchResult {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 96 |     pub hashfull: u32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_capture_history` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HistoryTables {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash_move` is never read
[INFO] [stdout]    --> src/search/alphabeta.rs:347:5
[INFO] [stdout]     |
[INFO] [stdout] 344 | struct MoveOrder {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 347 |     hash_move: Move,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_position` and `thread_id` are never read
[INFO] [stdout]    --> src/search/alphabeta.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct SearchContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 468 |     root_position: Position,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     thread_id: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SearchContext {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 476 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `see_ge_threshold` is never used
[INFO] [stdout]     --> src/search/alphabeta.rs:1347:8
[INFO] [stdout]      |
[INFO] [stdout] 1347 | pub fn see_ge_threshold(pos: &Position, mv: Move, threshold: i32) -> bool {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpha_beta_search` is never used
[INFO] [stdout]     --> src/search/alphabeta.rs:1351:8
[INFO] [stdout]      |
[INFO] [stdout] 1351 | pub fn alpha_beta_search(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/search/time_management.rs:5:5
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct TimeManager {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout]  5 |     start_time: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]  6 |     allocated_time: Duration,
[INFO] [stdout]  7 |     move_time: Option<Duration>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     white_time: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 11 |     black_time: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 12 |     white_increment: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     black_increment: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     moves_to_go: Option<u32>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 15 |     is_white_to_move: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TimeManager` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_infinite`, `new`, `can_extend`, `remaining_time_ms`, `elapsed_ms`, and `set_side_to_move` are never used
[INFO] [stdout]    --> src/search/time_management.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl TimeManager {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_infinite(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 196 |     pub fn can_extend(&self, start: Instant, extension_factor: f64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn remaining_time_ms(&self) -> Option<u32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 221 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     pub fn set_side_to_move(&mut self, is_white: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCORE_NONE` is never used
[INFO] [stdout]  --> src/search/transposition.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOUND_NONE` is never used
[INFO] [stdout]   --> src/search/transposition.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const BOUND_NONE: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `store_eval` and `prefetch` are never used
[INFO] [stdout]    --> src/search/transposition.rs:216:12
[INFO] [stdout]     |
[INFO] [stdout]  98 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn store_eval(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn prefetch(&self, hash: u64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `score_from_tt` and `score_to_tt` are never used
[INFO] [stdout]    --> src/search/transposition.rs:290:12
[INFO] [stdout]     |
[INFO] [stdout] 288 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- associated functions in this implementation
[INFO] [stdout] 289 |     #[inline(always)]
[INFO] [stdout] 290 |     pub fn score_from_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 301 |     pub fn score_to_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tt_score_from_tt` is never used
[INFO] [stdout]    --> src/search/transposition.rs:313:8
[INFO] [stdout]     |
[INFO] [stdout] 313 | pub fn tt_score_from_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tt_score_to_tt` is never used
[INFO] [stdout]    --> src/search/transposition.rs:324:8
[INFO] [stdout]     |
[INFO] [stdout] 324 | pub fn tt_score_to_tt(score: i32, ply: u8) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_capture_on`, `is_quiet_on`, and `captured_piece_on` are never used
[INFO] [stdout]    --> src/search/transposition.rs:370:12
[INFO] [stdout]     |
[INFO] [stdout] 368 | impl Move {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] 369 |     #[inline(always)]
[INFO] [stdout] 370 |     pub fn is_capture_on(self, pos: &Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 376 |     pub fn is_quiet_on(self, pos: &Position) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn captured_piece_on(self, pos: &Position) -> PieceType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TT_BOUND_NONE` is never used
[INFO] [stdout]    --> src/search/transposition.rs:390:11
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub const TT_BOUND_NONE: u8 = BOUND_NONE;
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchResult` is never constructed
[INFO] [stdout]   --> src/search/search_node.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SearchResult {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FUTILITY_MARGINS` is never used
[INFO] [stdout]  --> src/search/pruning.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const FUTILITY_MARGINS: [i32; 8] = [0, 100, 150, 200, 300, 400, 550, 700];
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEE_QUIET_THRESHOLD` is never used
[INFO] [stdout]  --> src/search/pruning.rs:9:11
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub const SEE_QUIET_THRESHOLD: i32 = -50;
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEE_CAPTURE_THRESHOLD` is never used
[INFO] [stdout]   --> src/search/pruning.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const SEE_CAPTURE_THRESHOLD: i32 = -100;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `futility_pruning` is never used
[INFO] [stdout]   --> src/search/pruning.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn futility_pruning(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_tactical_position` is never used
[INFO] [stdout]    --> src/search/pruning.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stdout]    --> src/search/pruning.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stdout]    --> src/search/pruning.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_material_advantage` is never used
[INFO] [stdout]    --> src/search/pruning.rs:168:4
[INFO] [stdout]     |
[INFO] [stdout] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_null_move_conditions` is never used
[INFO] [stdout]    --> src/search/pruning.rs:194:8
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub fn enhanced_null_move_conditions(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `null_move_reduction` is never used
[INFO] [stdout]    --> src/search/pruning.rs:222:8
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub fn null_move_reduction(depth: i32, static_eval: i32, beta: i32) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `history_pruning` is never used
[INFO] [stdout]    --> src/search/pruning.rs:230:8
[INFO] [stdout]     |
[INFO] [stdout] 230 | pub fn history_pruning(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Futility`, `History`, `MultiCut`, and `ProbCut` are never constructed
[INFO] [stdout]    --> src/search/pruning.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 254 | pub enum PruningReason {
[INFO] [stdout]     |          ------------- variants in this enum
[INFO] [stdout] 255 |     Futility,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 260 |     History,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 261 |     MultiCut,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 262 |     ProbCut,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PruningReason` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `description` is never used
[INFO] [stdout]    --> src/search/pruning.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 265 | impl PruningReason {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 266 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> src/search/pruning.rs:308:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl PruningStats {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 308 |     pub fn clear(&self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MultiCutTracker` is never constructed
[INFO] [stdout]    --> src/search/pruning.rs:320:12
[INFO] [stdout]     |
[INFO] [stdout] 320 | pub struct MultiCutTracker {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `record_cutoff`, `should_multi_cut`, and `reset` are never used
[INFO] [stdout]    --> src/search/pruning.rs:327:12
[INFO] [stdout]     |
[INFO] [stdout] 326 | impl MultiCutTracker {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout] 327 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn record_cutoff(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 339 |     pub fn should_multi_cut(&self, depth: i32, moves_searched: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_MOVES` is never used
[INFO] [stdout]    --> src/board/position.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `CASTLE_TYPE` is never used
[INFO] [stdout]    --> src/board/position.rs:179:8
[INFO] [stdout]     |
[INFO] [stdout] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveHashData` is never constructed
[INFO] [stdout]    --> src/board/position.rs:306:8
[INFO] [stdout]     |
[INFO] [stdout] 306 | struct MoveHashData {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `find_checking_piece` and `count_checks` are never used
[INFO] [stdout]     --> src/board/position.rs:951:8
[INFO] [stdout]      |
[INFO] [stdout]  313 | impl Position {
[INFO] [stdout]      | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PHASE_VALUES` is never used
[INFO] [stdout]   --> src/eval/material.rs:97:7
[INFO] [stdout]    |
[INFO] [stdout] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stdout]   --> src/eval/mobility.rs:89:7
[INFO] [stdout]    |
[INFO] [stdout] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stdout]    --> src/eval/mobility.rs:106:7
[INFO] [stdout]     |
[INFO] [stdout] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WING_FILES` is never used
[INFO] [stdout]   --> src/eval/space.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PIN_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stdout]   --> src/eval/threats.rs:55:7
[INFO] [stdout]    |
[INFO] [stdout] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_path_attacked` is never used
[INFO] [stdout]    --> src/movegen/moves.rs:234:4
[INFO] [stdout]     |
[INFO] [stdout] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:31:7
[INFO] [stdout]    |
[INFO] [stdout] 31 | const MAX_MOVES: usize = 256;
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:49:7
[INFO] [stdout]    |
[INFO] [stdout] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stdout]   --> src/search/alphabeta.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_capture_history` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl HistoryTables {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hash_move` is never read
[INFO] [stdout]    --> src/search/alphabeta.rs:347:5
[INFO] [stdout]     |
[INFO] [stdout] 344 | struct MoveOrder {
[INFO] [stdout]     |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 347 |     hash_move: Move,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `root_position` and `thread_id` are never read
[INFO] [stdout]    --> src/search/alphabeta.rs:468:5
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub struct SearchContext {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 468 |     root_position: Position,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 471 |     thread_id: usize,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/search/alphabeta.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | impl SearchContext {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] 476 |     fn new(
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SCORE_NONE` is never used
[INFO] [stdout]  --> src/search/transposition.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stdout]   |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_tactical_position` is never used
[INFO] [stdout]    --> src/search/pruning.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stdout]    --> src/search/pruning.rs:130:4
[INFO] [stdout]     |
[INFO] [stdout] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stdout]    --> src/search/pruning.rs:156:4
[INFO] [stdout]     |
[INFO] [stdout] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_material_advantage` is never used
[INFO] [stdout]    --> src/search/pruning.rs:168:4
[INFO] [stdout]     |
[INFO] [stdout] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [optimized] target(s) in 56.48s
[INFO] running `Command { std: "docker" "inspect" "5b53c6669b5eb426b9f8d935572935808be5e53eee9f637f2c6b925486ef6219", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5b53c6669b5eb426b9f8d935572935808be5e53eee9f637f2c6b925486ef6219", kill_on_drop: false }`
[INFO] [stdout] 5b53c6669b5eb426b9f8d935572935808be5e53eee9f637f2c6b925486ef6219
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] cc9476ce29e45e8c7658336949b4220b0898dc3010480220f206e13153b6ab11
[INFO] running `Command { std: "docker" "start" "-a" "cc9476ce29e45e8c7658336949b4220b0898dc3010480220f206e13153b6ab11", kill_on_drop: false }`
[INFO] [stderr] warning: unused manifest key: build
[INFO] [stderr] warning: unused manifest key: profile.release.target-cpu
[INFO] [stderr] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stderr]  --> src/board/position.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::eval::evaluate::Score;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_queen_attacks`
[INFO] [stderr]  --> src/board/position.rs:6:120
[INFO] [stderr]   |
[INFO] [stderr] 6 | ...ttacks,get_king_attacks,get_pawn_attacks,get_rook_attacks,get_queen_attacks,get_knight_attacks};
[INFO] [stderr]   |                                                              ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]     --> src/board/position.rs:1726:20
[INFO] [stderr]      |
[INFO] [stderr] 1726 |                 if (self.has_diagonal_attack(square, bishops)) {
[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] 1726 -                 if (self.has_diagonal_attack(square, bishops)) {
[INFO] [stderr] 1726 +                 if self.has_diagonal_attack(square, bishops) {
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]     --> src/board/position.rs:1736:20
[INFO] [stderr]      |
[INFO] [stderr] 1736 |                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stderr]      |                    ^                                       ^
[INFO] [stderr]      |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]      |
[INFO] [stderr] 1736 -                 if (self.has_straight_attack(square, rooks)) {
[INFO] [stderr] 1736 +                 if self.has_straight_attack(square, rooks) {
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::bitboard::Bitboard`
[INFO] [stderr]  --> src/board/zobrist.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use super::bitboard::Bitboard;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::board::bitboard::Bitboard`
[INFO] [stderr]  --> src/eval/material.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::Bitboard;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `EMPTY`, `FILE_A`, `FILE_B`, `FILE_C`, `FILE_D`, `FILE_E`, `FILE_F`, `FILE_G`, and `FILE_H`
[INFO] [stderr]  --> src/eval/pawns.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stderr]   |                                        ^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `get_bishop_attacks`, `get_knight_attacks`, `get_queen_attacks`, and `get_rook_attacks`
[INFO] [stderr]    --> src/eval/evaluate.rs:317:33
[INFO] [stderr]     |
[INFO] [stderr] 317 |     use crate::movegen::magic::{get_knight_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks};
[INFO] [stderr]     |                                 ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EMPTY`
[INFO] [stderr]  --> src/eval/mobility.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stderr]   |                                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `get_king_attacks` and `get_pawn_attacks`
[INFO] [stderr]  --> src/eval/mobility.rs:6:24
[INFO] [stderr]   |
[INFO] [stderr] 6 |     get_queen_attacks, get_king_attacks, get_pawn_attacks
[INFO] [stderr]   |                        ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EMPTY`
[INFO] [stderr]  --> src/eval/space.rs:3:40
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::board::bitboard::{Bitboard, EMPTY, CENTER, EXTENDED_CENTER};
[INFO] [stderr]   |                                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_pawn_attacks`
[INFO] [stderr]  --> src/eval/space.rs:5:42
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::movegen::magic::{all_attacks, get_pawn_attacks};
[INFO] [stderr]   |                                          ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `EMPTY`, `FILE_A`, and `FILE_H`
[INFO] [stderr]  --> src/eval/king_safety.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_H};
[INFO] [stderr]   |                                        ^^^^^  ^^^^^^  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `file_of` and `relative_rank`
[INFO] [stderr]  --> src/eval/king_safety.rs:4:24
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::eval::pst::{file_of, rank_of, relative_rank};
[INFO] [stderr]   |                        ^^^^^^^           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `EMPTY`
[INFO] [stderr]  --> src/eval/threats.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::{Bitboard, EMPTY};
[INFO] [stderr]   |                                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `file_of` and `rank_of`
[INFO] [stderr]  --> src/eval/threats.rs:4:24
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::eval::pst::{file_of, rank_of};
[INFO] [stderr]   |                        ^^^^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::eval::evaluate::Score`
[INFO] [stderr]  --> src/eval/eval_util.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::eval::evaluate::Score;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `popcount` and `square_mask`
[INFO] [stderr]  --> src/movegen/magic.rs:1:40
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::board::bitboard::{Bitboard, popcount, square_mask, EMPTY};
[INFO] [stderr]   |                                        ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/movegen/magic.rs:131:7
[INFO] [stderr]     |
[INFO] [stderr] 131 |     if(square == 64){
[INFO] [stderr]     |       ^            ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 131 -     if(square == 64){
[INFO] [stderr] 131 +     if square == 64 {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `has_bit` and `square_mask`
[INFO] [stderr]  --> src/movegen/moves.rs:1:40
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::board::bitboard::{Bitboard, square_mask, has_bit};
[INFO] [stderr]   |                                        ^^^^^^^^^^^  ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `all_attacks`
[INFO] [stderr]  --> src/movegen/moves.rs:7:44
[INFO] [stderr]   |
[INFO] [stderr] 7 |                    add_moves_from_bitboard,all_attacks};
[INFO] [stderr]   |                                            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::arch::x86_64::*`
[INFO] [stderr]   --> src/movegen/moves.rs:29:5
[INFO] [stderr]    |
[INFO] [stderr] 29 | use std::arch::x86_64::*;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::movegen::magic::all_attacks_for_king`
[INFO] [stderr]  --> src/movegen/legal_moves.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::movegen::magic::all_attacks_for_king;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `MoveType` and `transposition::TranspositionTable`
[INFO] [stderr]   --> src/uci/protocol.rs:4:47
[INFO] [stderr]    |
[INFO] [stderr]  4 |         position::{Position, Move, PieceType, MoveType, Color},
[INFO] [stderr]    |                                               ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 15 |         transposition::TranspositionTable,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DRAW_VALUE`, `Score`, `TTData`, `ZOBRIST`, `all_attacks_for_king`, `all_attacks`, `eval_util`, `evaluate`, `get_queen_attacks`, and `material::calculate_phase`
[INFO] [stderr]   --> src/search/alphabeta.rs:5:19
[INFO] [stderr]    |
[INFO] [stderr]  5 |         zobrist::{ZOBRIST},
[INFO] [stderr]    |                   ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  8 |         evaluate::{evaluate, evaluate_fast, Score, MATE_VALUE, DRAW_VALUE,evaluate_int},
[INFO] [stderr]    |                    ^^^^^^^^                 ^^^^^              ^^^^^^^^^^
[INFO] [stderr]  9 |         material::calculate_phase,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 10 |         eval_util,
[INFO] [stderr]    |         ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 14 |         magic::{all_attacks, get_bishop_attacks, get_rook_attacks, get_queen_attacks,
[INFO] [stderr]    |                 ^^^^^^^^^^^                                        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 15 |                 get_knight_attacks, get_king_attacks, get_pawn_attacks,all_attacks_for_king},
[INFO] [stderr]    |                                                                        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 19 |         transposition::{TranspositionTable, TT_BOUND_EXACT, TT_BOUND_LOWER, TT_BOUND_UPPER, TTData},
[INFO] [stderr]    |                                                                                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `max` and `min`
[INFO] [stderr]   --> src/search/alphabeta.rs:27:16
[INFO] [stderr]    |
[INFO] [stderr] 27 | use std::cmp::{max, min};
[INFO] [stderr]    |                ^^^  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `if` condition
[INFO] [stderr]    --> src/search/alphabeta.rs:224:11
[INFO] [stderr]     |
[INFO] [stderr] 224 |         if(depth == 31){
[INFO] [stderr]     |           ^           ^
[INFO] [stderr]     |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 224 -         if(depth == 31){
[INFO] [stderr] 224 +         if depth == 31 {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]     --> src/search/alphabeta.rs:1189:61
[INFO] [stderr]      |
[INFO] [stderr] 1189 |                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stderr]      |                                                             ^                    ^
[INFO] [stderr]      |
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]      |
[INFO] [stderr] 1189 -                 depth_offset: if thread_id < 4 { 0 } else { (thread_id as i32 / 4) },
[INFO] [stderr] 1189 +                 depth_offset: if thread_id < 4 { 0 } else { thread_id as i32 / 4 },
[INFO] [stderr]      |
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]  --> src/search/search_node.rs:1:5
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::sync::Arc;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::atomic::AtomicBool`
[INFO] [stderr]  --> src/search/search_node.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use std::sync::atomic::AtomicBool;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Position`, `search::alphabeta::alpha_beta_search`, and `search::time_management::TimeManager`
[INFO] [stderr]  --> src/search/search_node.rs:4:23
[INFO] [stderr]   |
[INFO] [stderr] 4 |     board::position::{Position, Move},
[INFO] [stderr]   |                       ^^^^^^^^
[INFO] [stderr] 5 |     eval::evaluate::Score,
[INFO] [stderr] 6 |     search::alphabeta::alpha_beta_search,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 7 |     search::time_management::TimeManager,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::eval::material::calculate_phase`
[INFO] [stderr]  --> src/search/pruning.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::eval::material::calculate_phase;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `captured_pawn_square`
[INFO] [stderr]    --> src/board/position.rs:805:13
[INFO] [stderr]     |
[INFO] [stderr] 805 |         let captured_pawn_square = to ^ 8;
[INFO] [stderr]     |             ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 805 |         let _captured_pawn_square = to ^ 8;
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 805 -         let captured_pawn_square = to ^ 8;
[INFO] [stderr] 805 +         let search::transposition::TT_BOUND_UPPER = to ^ 8;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `king_square`
[INFO] [stderr]    --> src/board/position.rs:807:13
[INFO] [stderr]     |
[INFO] [stderr] 807 |         let king_square = self.king_square(self.side_to_move);
[INFO] [stderr]     |             ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 807 |         let _king_square = self.king_square(self.side_to_move);
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 807 -         let king_square = self.king_square(self.side_to_move);
[INFO] [stderr] 807 +         let search::transposition::TT_BOUND_UPPER = self.king_square(self.side_to_move);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `undo`
[INFO] [stderr]     --> src/board/position.rs:1247:28
[INFO] [stderr]      |
[INFO] [stderr] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stderr]      |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]     --> src/board/position.rs:1748:9
[INFO] [stderr]      |
[INFO] [stderr] 1748 |         unsafe {
[INFO] [stderr]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr]      |
[INFO] [stderr]      = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `by_color`
[INFO] [stderr]     --> src/board/position.rs:1761:58
[INFO] [stderr]      |
[INFO] [stderr] 1761 |     pub fn is_square_attacked_ovi_upg(&self, square: u8, by_color: Color,atts:Bitboard) -> bool {
[INFO] [stderr]      |                                                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_by_color`
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]     --> src/board/position.rs:1762:9
[INFO] [stderr]      |
[INFO] [stderr] 1762 |         unsafe {
[INFO] [stderr]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary `unsafe` block
[INFO] [stderr]     --> src/board/position.rs:1775:9
[INFO] [stderr]      |
[INFO] [stderr] 1775 |         unsafe {
[INFO] [stderr]      |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pos`
[INFO] [stderr]    --> src/eval/material.rs:483:33
[INFO] [stderr]     |
[INFO] [stderr] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stderr]     |                                 ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:185:9
[INFO] [stderr]     |
[INFO] [stderr] 185 |         (*table_ptr)[PieceType::Pawn as usize].mg[sq] = PAWN_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:182:1
[INFO] [stderr]     |
[INFO] [stderr] 182 | unsafe fn init_pawn_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:186:9
[INFO] [stderr]     |
[INFO] [stderr] 186 |         (*table_ptr)[PieceType::Pawn as usize].eg[sq] = PAWN_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:193:9
[INFO] [stderr]     |
[INFO] [stderr] 193 |         (*table_ptr)[PieceType::Knight as usize].mg[sq] = KNIGHT_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:190:1
[INFO] [stderr]     |
[INFO] [stderr] 190 | unsafe fn init_knight_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:194:9
[INFO] [stderr]     |
[INFO] [stderr] 194 |         (*table_ptr)[PieceType::Knight as usize].eg[sq] = KNIGHT_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:201:9
[INFO] [stderr]     |
[INFO] [stderr] 201 |         (*table_ptr)[PieceType::Bishop as usize].mg[sq] = BISHOP_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:198:1
[INFO] [stderr]     |
[INFO] [stderr] 198 | unsafe fn init_bishop_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:202:9
[INFO] [stderr]     |
[INFO] [stderr] 202 |         (*table_ptr)[PieceType::Bishop as usize].eg[sq] = BISHOP_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:209:9
[INFO] [stderr]     |
[INFO] [stderr] 209 |         (*table_ptr)[PieceType::Rook as usize].mg[sq] = ROOK_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:206:1
[INFO] [stderr]     |
[INFO] [stderr] 206 | unsafe fn init_rook_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:210:9
[INFO] [stderr]     |
[INFO] [stderr] 210 |         (*table_ptr)[PieceType::Rook as usize].eg[sq] = ROOK_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:217:9
[INFO] [stderr]     |
[INFO] [stderr] 217 |         (*table_ptr)[PieceType::Queen as usize].mg[sq] = QUEEN_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:214:1
[INFO] [stderr]     |
[INFO] [stderr] 214 | unsafe fn init_queen_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:218:9
[INFO] [stderr]     |
[INFO] [stderr] 218 |         (*table_ptr)[PieceType::Queen as usize].eg[sq] = QUEEN_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:225:9
[INFO] [stderr]     |
[INFO] [stderr] 225 |         (*table_ptr)[PieceType::King as usize].mg[sq] = KING_MG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stderr]    --> src/eval/pst.rs:222:1
[INFO] [stderr]     |
[INFO] [stderr] 222 | unsafe fn init_king_table() {
[INFO] [stderr]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stderr]    --> src/eval/pst.rs:226:9
[INFO] [stderr]     |
[INFO] [stderr] 226 |         (*table_ptr)[PieceType::King as usize].eg[sq] = KING_EG[sq];
[INFO] [stderr]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stderr]     |
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stderr]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stderr] 
[INFO] [stderr] warning: variable `doubled_count` is assigned to, but never used
[INFO] [stderr]    --> src/eval/pawns.rs:279:13
[INFO] [stderr]     |
[INFO] [stderr] 279 |     let mut doubled_count = 0;
[INFO] [stderr]     |             ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_doubled_count` instead
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `MAX_PHASE`
[INFO] [stderr]     |
[INFO] [stderr] 279 -     let mut doubled_count = 0;
[INFO] [stderr] 279 +     let mut eval::evaluate::MAX_PHASE = 0;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `square_bb`
[INFO] [stderr]    --> src/eval/pawns.rs:310:13
[INFO] [stderr]     |
[INFO] [stderr] 310 |         let square_bb = 1u64 << square;
[INFO] [stderr]     |             ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 310 |         let _square_bb = 1u64 << square;
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 310 -         let square_bb = 1u64 << square;
[INFO] [stderr] 310 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rank`
[INFO] [stderr]    --> src/eval/pawns.rs:313:13
[INFO] [stderr]     |
[INFO] [stderr] 313 |         let rank = rank_of(square);
[INFO] [stderr]     |             ^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 313 |         let _rank = rank_of(square);
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 313 -         let rank = rank_of(square);
[INFO] [stderr] 313 +         let search::transposition::TT_BOUND_UPPER = rank_of(square);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `same_rank_mask`
[INFO] [stderr]    --> src/eval/pawns.rs:440:9
[INFO] [stderr]     |
[INFO] [stderr] 440 |     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 440 |     let _same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 440 -     let same_rank_mask = 0xFFu64 << (rank * 8);
[INFO] [stderr] 440 +     let eval::space::WING_FILES = 0xFFu64 << (rank * 8);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `all_pieces`
[INFO] [stderr]    --> src/eval/evaluate.rs:320:9
[INFO] [stderr]     |
[INFO] [stderr] 320 |     let all_pieces = pos.all_pieces();
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 320 |     let _all_pieces = pos.all_pieces();
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 320 -     let all_pieces = pos.all_pieces();
[INFO] [stderr] 320 +     let eval::space::WING_FILES = pos.all_pieces();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `our_pieces`
[INFO] [stderr]    --> src/eval/evaluate.rs:324:13
[INFO] [stderr]     |
[INFO] [stderr] 324 |         let our_pieces = pos.pieces(color);
[INFO] [stderr]     |             ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 324 |         let _our_pieces = pos.pieces(color);
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 324 -         let our_pieces = pos.pieces(color);
[INFO] [stderr] 324 +         let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enemy_pieces`
[INFO] [stderr]    --> src/eval/mobility.rs:222:9
[INFO] [stderr]     |
[INFO] [stderr] 222 |     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stderr]     |         ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 222 |     let _enemy_pieces = pos.pieces(color.opposite());
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 222 -     let enemy_pieces = pos.pieces(color.opposite());
[INFO] [stderr] 222 +     let eval::space::WING_FILES = pos.pieces(color.opposite());
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `square_bb`
[INFO] [stderr]   --> src/eval/space.rs:96:13
[INFO] [stderr]    |
[INFO] [stderr] 96 |         let square_bb = 1u64 << square;
[INFO] [stderr]    |             ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 96 |         let _square_bb = 1u64 << square;
[INFO] [stderr]    |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]    |
[INFO] [stderr] 96 -         let square_bb = 1u64 << square;
[INFO] [stderr] 96 +         let eval::space::WING_FILES = 1u64 << square;
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `king_rank`
[INFO] [stderr]    --> src/eval/king_safety.rs:162:9
[INFO] [stderr]     |
[INFO] [stderr] 162 |     let king_rank = king_sq / 8;
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 162 |     let _king_rank = king_sq / 8;
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 162 -     let king_rank = king_sq / 8;
[INFO] [stderr] 162 +     let search::transposition::TT_BOUND_UPPER = king_sq / 8;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `our_pawns`
[INFO] [stderr]    --> src/eval/king_safety.rs:476:9
[INFO] [stderr]     |
[INFO] [stderr] 476 |     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stderr]     |         ^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 476 |     let _our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 476 -     let our_pawns = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stderr] 476 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Pawn, color);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `piece_type`
[INFO] [stderr]    --> src/eval/threats.rs:153:46
[INFO] [stderr]     |
[INFO] [stderr] 153 | fn is_piece_weak(pos: &Position, square: u8, piece_type: PieceType, color: Color) -> bool {
[INFO] [stderr]     |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_piece_type`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enemy_king`
[INFO] [stderr]    --> src/eval/threats.rs:404:9
[INFO] [stderr]     |
[INFO] [stderr] 404 |     let enemy_king = pos.king_square(color.opposite());
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 404 |     let _enemy_king = pos.king_square(color.opposite());
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 404 -     let enemy_king = pos.king_square(color.opposite());
[INFO] [stderr] 404 +     let search::transposition::TT_BOUND_UPPER = pos.king_square(color.opposite());
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `our_pieces`
[INFO] [stderr]    --> src/eval/threats.rs:434:9
[INFO] [stderr]     |
[INFO] [stderr] 434 |     let our_pieces = pos.pieces(color);
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 434 |     let _our_pieces = pos.pieces(color);
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 434 -     let our_pieces = pos.pieces(color);
[INFO] [stderr] 434 +     let eval::space::WING_FILES = pos.pieces(color);
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `enemy_valuable`
[INFO] [stderr]    --> src/eval/threats.rs:435:9
[INFO] [stderr]     |
[INFO] [stderr] 435 |     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 435 |     let _enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 435 -     let enemy_valuable = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stderr] 435 +     let eval::space::WING_FILES = pos.pieces_colored(PieceType::Queen, color.opposite()) |
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `ray`
[INFO] [stderr]    --> src/eval/threats.rs:758:22
[INFO] [stderr]     |
[INFO] [stderr] 758 | fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stderr]     |                      ^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 758 | fn extend_ray_beyond(_ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stderr]     |                      +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 758 - fn extend_ray_beyond(ray: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stderr] 758 + fn extend_ray_beyond(eval::space::WING_FILES: Bitboard, from: u8, through: u8) -> Bitboard {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/eval/threats.rs:803:9
[INFO] [stderr]     |
[INFO] [stderr] 803 |     let mut temp_all_pieces = pos.all_pieces() & !(1u64 << blocker);
[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: unused variable: `color`
[INFO] [stderr]   --> src/eval/initiative.rs:45:55
[INFO] [stderr]    |
[INFO] [stderr] 45 | fn evaluate_pawn_asymmetry_initiative(pos: &Position, color: Color) -> Score {
[INFO] [stderr]    |                                                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/movegen/moves.rs:170:9
[INFO] [stderr]     |
[INFO] [stderr] 170 |     let mut attacks = get_king_attacks(from);
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/movegen/moves.rs:270:9
[INFO] [stderr]     |
[INFO] [stderr] 270 |     let mut attacks = get_king_attacks(from);
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `opponent_color`
[INFO] [stderr]   --> src/movegen/legal_moves.rs:12:9
[INFO] [stderr]    |
[INFO] [stderr] 12 |     let opponent_color = our_color.opposite();
[INFO] [stderr]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_opponent_color`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `new_position` is never read
[INFO] [stderr]    --> src/uci/protocol.rs:361:17
[INFO] [stderr]     |
[INFO] [stderr] 361 |         let mut new_position = None;
[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: variable `found_moves` is assigned to, but never used
[INFO] [stderr]    --> src/uci/protocol.rs:381:25
[INFO] [stderr]     |
[INFO] [stderr] 381 |                 let mut found_moves = false;
[INFO] [stderr]     |                         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_found_moves` instead
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `found_moves` is never read
[INFO] [stderr]    --> src/uci/protocol.rs:386:25
[INFO] [stderr]     |
[INFO] [stderr] 386 |                         found_moves = true;
[INFO] [stderr]     |                         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `old_hash`
[INFO] [stderr]    --> src/uci/protocol.rs:422:29
[INFO] [stderr]     |
[INFO] [stderr] 422 |                         let old_hash = pos.hash;
[INFO] [stderr]     |                             ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 422 |                         let _old_hash = pos.hash;
[INFO] [stderr]     |                             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 422 -                         let old_hash = pos.hash;
[INFO] [stderr] 422 +                         let eval::space::WING_FILES = pos.hash;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]    --> src/search/alphabeta.rs:290:9
[INFO] [stderr]     |
[INFO] [stderr] 276 |         PieceType::Bishop | PieceType::Queen => {
[INFO] [stderr]     |         ------------------------------------ matches all the relevant values
[INFO] [stderr] ...
[INFO] [stderr] 290 |         PieceType::Queen if removed_piece == PieceType::Queen => {
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `pos`
[INFO] [stderr]    --> src/search/alphabeta.rs:509:34
[INFO] [stderr]     |
[INFO] [stderr] 509 |     fn is_repetition_draw(&self, pos: &Position) -> bool {
[INFO] [stderr]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_pos`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `piece`
[INFO] [stderr]    --> src/search/alphabeta.rs:748:34
[INFO] [stderr]     |
[INFO] [stderr] 748 | ...                   let (piece, color) = pos.piece_at(mv.from());
[INFO] [stderr]     |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_piece`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `move_count` is assigned to, but never used
[INFO] [stderr]    --> src/search/alphabeta.rs:853:21
[INFO] [stderr]     |
[INFO] [stderr] 853 |             let mut move_count = 0;
[INFO] [stderr]     |                     ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: consider using `_move_count` instead
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stderr]     |
[INFO] [stderr] 853 -             let mut move_count = 0;
[INFO] [stderr] 853 +             let mut search::pruning::SEE_CAPTURE_THRESHOLD = 0;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `piece_value`
[INFO] [stderr]    --> src/search/alphabeta.rs:985:49
[INFO] [stderr]     |
[INFO] [stderr] 985 | fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stderr]     |                                                 ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 985 | fn is_piece_hanging(pos: &Position, square: u8, _piece_value: i32) -> bool {
[INFO] [stderr]     |                                                 +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `SEE_CAPTURE_THRESHOLD`
[INFO] [stderr]     |
[INFO] [stderr] 985 - fn is_piece_hanging(pos: &Position, square: u8, piece_value: i32) -> bool {
[INFO] [stderr] 985 + fn is_piece_hanging(pos: &Position, square: u8, search::pruning::SEE_CAPTURE_THRESHOLD: i32) -> bool {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `best_pv` is never read
[INFO] [stderr]     --> src/search/alphabeta.rs:1035:17
[INFO] [stderr]      |
[INFO] [stderr] 1035 |         let mut best_pv = Vec::new();
[INFO] [stderr]      |                 ^^^^^^^
[INFO] [stderr]      |
[INFO] [stderr]      = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/search/alphabeta.rs:1310:13
[INFO] [stderr]      |
[INFO] [stderr] 1310 |         let mut mate_in = (MATE_VALUE - score.abs() + 1) / 2;
[INFO] [stderr]      |             ----^^^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `new_age`
[INFO] [stderr]    --> src/search/transposition.rs:136:62
[INFO] [stderr]     |
[INFO] [stderr] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stderr]     |                                                              ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 136 |     fn should_replace(&self, entry: &TTEntry, new_depth: u8, _new_age: u8, new_bound: u8) -> bool {
[INFO] [stderr]     |                                                              +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `TT_BOUND_UPPER`
[INFO] [stderr]     |
[INFO] [stderr] 136 -     fn should_replace(&self, entry: &TTEntry, new_depth: u8, new_age: u8, new_bound: u8) -> bool {
[INFO] [stderr] 136 +     fn should_replace(&self, entry: &TTEntry, new_depth: u8, search::transposition::TT_BOUND_UPPER: u8, new_bound: u8) -> bool {
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: static `CASTLE_MOVES` is never used
[INFO] [stderr]    --> src/board/position.rs:174:8
[INFO] [stderr]     |
[INFO] [stderr] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: static `CASTLE_TYPE` is never used
[INFO] [stderr]    --> src/board/position.rs:179:8
[INFO] [stderr]     |
[INFO] [stderr] 179 | static CASTLE_TYPE: [Option<(Color, usize)>; 64] = {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MoveHashData` is never constructed
[INFO] [stderr]    --> src/board/position.rs:306:8
[INFO] [stderr]     |
[INFO] [stderr] 306 | struct MoveHashData {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `find_checking_piece` and `count_checks` are never used
[INFO] [stderr]     --> src/board/position.rs:951:8
[INFO] [stderr]      |
[INFO] [stderr]  313 | impl Position {
[INFO] [stderr]      | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PHASE_VALUES` is never used
[INFO] [stderr]   --> src/eval/material.rs:97:7
[INFO] [stderr]    |
[INFO] [stderr] 97 | const PHASE_VALUES: [u32; 6] = [0, 1, 1, 2, 4, 0];
[INFO] [stderr]    |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ROOK_ON_FILE` is never used
[INFO] [stderr]   --> src/eval/mobility.rs:89:7
[INFO] [stderr]    |
[INFO] [stderr] 89 | const ROOK_ON_FILE: [Score; 4] = [
[INFO] [stderr]    |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `KNIGHT_ON_HOLE` is never used
[INFO] [stderr]    --> src/eval/mobility.rs:106:7
[INFO] [stderr]     |
[INFO] [stderr] 106 | const KNIGHT_ON_HOLE: Score = Score::new(17, 10);
[INFO] [stderr]     |       ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WING_FILES` is never used
[INFO] [stderr]   --> src/eval/space.rs:18:7
[INFO] [stderr]    |
[INFO] [stderr] 18 | const WING_FILES: Bitboard = 0xC3C3C3C3C3C3C3C3;
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PIN_BONUS` is never used
[INFO] [stderr]   --> src/eval/threats.rs:50:7
[INFO] [stderr]    |
[INFO] [stderr] 50 | const PIN_BONUS: Score = Score::new(20, 25);
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `DISCOVERED_ATTACK_BONUS` is never used
[INFO] [stderr]   --> src/eval/threats.rs:55:7
[INFO] [stderr]    |
[INFO] [stderr] 55 | const DISCOVERED_ATTACK_BONUS: Score = Score::new(35, 40);
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_path_attacked` is never used
[INFO] [stderr]    --> src/movegen/moves.rs:234:4
[INFO] [stderr]     |
[INFO] [stderr] 234 | fn is_path_attacked(pos: &Position, path: Bitboard, king_sq: u8, by_color: Color) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_MOVES` is never used
[INFO] [stderr]   --> src/search/alphabeta.rs:31:7
[INFO] [stderr]    |
[INFO] [stderr] 31 | const MAX_MOVES: usize = 256;
[INFO] [stderr]    |       ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NULL_MOVE_REDUCTION` is never used
[INFO] [stderr]   --> src/search/alphabeta.rs:49:7
[INFO] [stderr]    |
[INFO] [stderr] 49 | const NULL_MOVE_REDUCTION: i32 = 3;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `NULL_MOVE_DEPTH_REDUCTION` is never used
[INFO] [stderr]   --> src/search/alphabeta.rs:50:7
[INFO] [stderr]    |
[INFO] [stderr] 50 | const NULL_MOVE_DEPTH_REDUCTION: i32 = 4;
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `update_capture_history` is never used
[INFO] [stderr]    --> src/search/alphabeta.rs:122:8
[INFO] [stderr]     |
[INFO] [stderr] 106 | impl HistoryTables {
[INFO] [stderr]     | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 122 |     fn update_capture_history(&mut self, color: Color, piece: PieceType, to: u8, captured: PieceType, bonus: i32) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `hash_move` is never read
[INFO] [stderr]    --> src/search/alphabeta.rs:347:5
[INFO] [stderr]     |
[INFO] [stderr] 344 | struct MoveOrder {
[INFO] [stderr]     |        --------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 347 |     hash_move: Move,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `root_position` and `thread_id` are never read
[INFO] [stderr]    --> src/search/alphabeta.rs:468:5
[INFO] [stderr]     |
[INFO] [stderr] 463 | pub struct SearchContext {
[INFO] [stderr]     |            ------------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 468 |     root_position: Position,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 471 |     thread_id: usize,
[INFO] [stderr]     |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/search/alphabeta.rs:476:8
[INFO] [stderr]     |
[INFO] [stderr] 475 | impl SearchContext {
[INFO] [stderr]     | ------------------ associated function in this implementation
[INFO] [stderr] 476 |     fn new(
[INFO] [stderr]     |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SCORE_NONE` is never used
[INFO] [stderr]  --> src/search/transposition.rs:6:7
[INFO] [stderr]   |
[INFO] [stderr] 6 | const SCORE_NONE: i32 = -32768;
[INFO] [stderr]   |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_tactical_position` is never used
[INFO] [stderr]    --> src/search/pruning.rs:121:4
[INFO] [stderr]     |
[INFO] [stderr] 121 | fn is_tactical_position(pos: &Position) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_hanging_valuable_pieces` is never used
[INFO] [stderr]    --> src/search/pruning.rs:130:4
[INFO] [stderr]     |
[INFO] [stderr] 130 | fn has_hanging_valuable_pieces(pos: &Position) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_pawn_attacks_bitboard` is never used
[INFO] [stderr]    --> src/search/pruning.rs:156:4
[INFO] [stderr]     |
[INFO] [stderr] 156 | fn get_pawn_attacks_bitboard(pawns: u64, color: Color) -> u64 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `has_material_advantage` is never used
[INFO] [stderr]    --> src/search/pruning.rs:168:4
[INFO] [stderr]     |
[INFO] [stderr] 168 | fn has_material_advantage(pos: &Position) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: crate `RuthChessOVI` should have a snake case name
[INFO] [stderr]   |
[INFO] [stderr]   = help: convert the identifier to snake case: `ruth_chess_ovi`
[INFO] [stderr]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] For more information about this error, try `rustc --explain E0133`.
[INFO] [stderr] warning: `RuthChessOVI` (lib) generated 108 warnings (run `cargo fix --lib -p RuthChessOVI` to apply 62 suggestions)
[INFO] [stderr] warning: unused imports: `EMPTY`, `FILE_D`, and `FILE_F`
[INFO] [stderr]  --> src/eval/pawns.rs:2:40
[INFO] [stderr]   |
[INFO] [stderr] 2 | use crate::board::bitboard::{Bitboard, EMPTY, FILE_A, FILE_B, FILE_C, FILE_D, FILE_E, FILE_F, FILE_G, FILE_H};
[INFO] [stderr]   |                                        ^^^^^                          ^^^^^^          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DRAW_VALUE`, `EvalResult`, `MATE_VALUE`, `Score`, `evaluate_detailed`, `evaluate_fast`, and `evaluate`
[INFO] [stderr]   --> src/eval/mod.rs:15:20
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use evaluate::{Score, EvalResult, evaluate, evaluate_fast, evaluate_detailed, MATE_VALUE, DRAW_VALUE};
[INFO] [stderr]    |                    ^^^^^  ^^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `EvalCache`, `is_endgame`, `is_middlegame`, and `phase_value`
[INFO] [stderr]   --> src/eval/mod.rs:16:21
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use eval_util::{EvalCache, phase_value, is_endgame, is_middlegame};
[INFO] [stderr]    |                     ^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `MAX_PHASE` and `calculate_phase`
[INFO] [stderr]   --> src/eval/mod.rs:17:20
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use material::{calculate_phase, MAX_PHASE};
[INFO] [stderr]    |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::eval::evaluate::evaluate`
[INFO] [stderr]   --> src/main.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::eval::evaluate::evaluate;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Move`, `PieceType`, and `Position`
[INFO] [stderr]   --> src/main.rs:12:30
[INFO] [stderr]    |
[INFO] [stderr] 12 | use crate::board::position::{Position,Move,PieceType};
[INFO] [stderr]    |                              ^^^^^^^^ ^^^^ ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `BufRead`, `BufReader`, and `self`
[INFO] [stderr]   --> src/main.rs:15:15
[INFO] [stderr]    |
[INFO] [stderr] 15 | use std::io::{self, BufRead, BufReader};
[INFO] [stderr]    |               ^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::sync::Arc`
[INFO] [stderr]   --> src/main.rs:16:5
[INFO] [stderr]    |
[INFO] [stderr] 16 | use std::sync::Arc;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::thread`
[INFO] [stderr]   --> src/main.rs:17:5
[INFO] [stderr]    |
[INFO] [stderr] 17 | use std::thread;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `uci::protocol`
[INFO] [stderr]   --> src/main.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use uci::protocol;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `RuthChessOVI::board::bitboard::square_to_algebraic`
[INFO] [stderr]   --> src/main.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use RuthChessOVI::board::bitboard::square_to_algebraic;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `white_pawns`
[INFO] [stderr]    --> src/eval/initiative.rs:393:13
[INFO] [stderr]     |
[INFO] [stderr] 393 |         let white_pawns = 1u64 << 36;
[INFO] [stderr]     |             ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 393 |         let _white_pawns = 1u64 << 36;
[INFO] [stderr]     |             +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `WING_FILES`
[INFO] [stderr]     |
[INFO] [stderr] 393 -         let white_pawns = 1u64 << 36;
[INFO] [stderr] 393 +         let eval::space::WING_FILES = 1u64 << 36;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `best_pv` is never read
[INFO] [stderr]     --> src/search/alphabeta.rs:1035:17
[INFO] [stderr]      |
[INFO] [stderr] 1035 |         let mut best_pv = Vec::new();
[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 `new_position` is never read
[INFO] [stderr]    --> src/uci/protocol.rs:361:17
[INFO] [stderr]     |
[INFO] [stderr] 361 |         let mut new_position = None;
[INFO] [stderr]     |                 ^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FULL` is never used
[INFO] [stderr]  --> src/board/bitboard.rs:5:11
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub const FULL: Bitboard = 0xFFFF_FFFF_FFFF_FFFF;
[INFO] [stderr]   |           ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_2` is never used
[INFO] [stderr]  --> src/board/bitboard.rs:8:11
[INFO] [stderr]   |
[INFO] [stderr] 8 | pub const RANK_2: Bitboard = 0x0000_0000_0000_FF00;
[INFO] [stderr]   |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_3` is never used
[INFO] [stderr]  --> src/board/bitboard.rs:9:11
[INFO] [stderr]   |
[INFO] [stderr] 9 | pub const RANK_3: Bitboard = 0x0000_0000_00FF_0000;
[INFO] [stderr]   |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_4` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:10:11
[INFO] [stderr]    |
[INFO] [stderr] 10 | pub const RANK_4: Bitboard = 0x0000_0000_FF00_0000;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_5` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:11:11
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub const RANK_5: Bitboard = 0x0000_00FF_0000_0000;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_6` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:12:11
[INFO] [stderr]    |
[INFO] [stderr] 12 | pub const RANK_6: Bitboard = 0x0000_FF00_0000_0000;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `RANK_7` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:13:11
[INFO] [stderr]    |
[INFO] [stderr] 13 | pub const RANK_7: Bitboard = 0x00FF_0000_0000_0000;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FILE_D` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:19:11
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub const FILE_D: Bitboard = 0x0808_0808_0808_0808;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `FILE_F` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:21:11
[INFO] [stderr]    |
[INFO] [stderr] 21 | pub const FILE_F: Bitboard = 0x2020_2020_2020_2020;
[INFO] [stderr]    |           ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `toggle_bit` is never used
[INFO] [stderr]   --> src/board/bitboard.rs:75:8
[INFO] [stderr]    |
[INFO] [stderr] 75 | pub fn toggle_bit(bb: &mut Bitboard, square: u8) {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_rank` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:139:14
[INFO] [stderr]     |
[INFO] [stderr] 139 | pub const fn get_rank(square: u8) -> u8 {
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_file` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:144:14
[INFO] [stderr]     |
[INFO] [stderr] 144 | pub const fn get_file(square: u8) -> u8 {
[INFO] [stderr]     |              ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rank_mask` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:149:14
[INFO] [stderr]     |
[INFO] [stderr] 149 | pub const fn rank_mask(rank: u8) -> Bitboard {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `file_mask` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:154:14
[INFO] [stderr]     |
[INFO] [stderr] 154 | pub const fn file_mask(file: u8) -> Bitboard {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `square_distance` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:159:8
[INFO] [stderr]     |
[INFO] [stderr] 159 | pub fn square_distance(sq1: u8, sq2: u8) -> u8 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `BitboardIterator` is never constructed
[INFO] [stderr]    --> src/board/bitboard.rs:195:12
[INFO] [stderr]     |
[INFO] [stderr] 195 | pub struct BitboardIterator {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:201:18
[INFO] [stderr]     |
[INFO] [stderr] 199 | impl BitboardIterator {
[INFO] [stderr]     | --------------------- associated function in this implementation
[INFO] [stderr] 200 |     #[inline(always)]
[INFO] [stderr] 201 |     pub const fn new(bb: Bitboard) -> Self {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `iter_bits` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:221:14
[INFO] [stderr]     |
[INFO] [stderr] 221 | pub const fn iter_bits(bb: Bitboard) -> BitboardIterator {
[INFO] [stderr]     |              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print` is never used
[INFO] [stderr]    --> src/board/bitboard.rs:225:8
[INFO] [stderr]     |
[INFO] [stderr] 225 | pub fn print(bb: Bitboard) {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `king_to` and `castling_rights_mask` are never read
[INFO] [stderr]    --> src/board/position.rs:140:9
[INFO] [stderr]     |
[INFO] [stderr] 139 | pub struct CastleData {
[INFO] [stderr]     |            ---------- fields in this struct
[INFO] [stderr] 140 |     pub king_to: u8,
[INFO] [stderr]     |         ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 143 |     pub castling_rights_mask: u8,
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: static `CASTLE_MOVES` is never used
[INFO] [stderr]    --> src/board/position.rs:174:8
[INFO] [stderr]     |
[INFO] [stderr] 174 | static CASTLE_MOVES: [[(u8, u8, u8); 2]; 2] = [
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `from_u32`, `to_u32`, `is_pawn_move`, and `is_castling` are never used
[INFO] [stderr]    --> src/board/position.rs:211:18
[INFO] [stderr]     |
[INFO] [stderr] 192 | impl Move {
[INFO] [stderr]     | --------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 211 |     pub const fn from_u32(val:u32) -> Self { Self(val) }
[INFO] [stderr]     |                  ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 216 |     pub const fn to_u32(self) -> u32 { self.0}
[INFO] [stderr]     |                  ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 230 |     pub const fn is_pawn_move(&self) -> bool {
[INFO] [stderr]     |                  ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 246 |     pub const fn is_castling(&self) -> bool {
[INFO] [stderr]     |                  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]     --> src/board/position.rs:358:12
[INFO] [stderr]      |
[INFO] [stderr]  313 | impl Position {
[INFO] [stderr]      | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  358 |     pub fn see_ge(&self, mv: Move, threshold: i32) -> bool {
[INFO] [stderr]      |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  480 |     pub fn is_capture(&self, mv: Move) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  485 |     pub fn piece_value(&self, piece: PieceType) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  578 |     pub fn captured_piece(&self, mv: Move) -> PieceType {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  583 |     pub fn is_pinned(&self, square: u8, color: Color) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  831 |     pub fn get_pinned_piece_legal_squares(&self, square: u8, color: Color) -> Bitboard {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  951 |     fn find_checking_piece(&self, king_square: u8, color: Color) -> Option<(u8, PieceType)> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1029 |     fn count_checks(&self, color: Color) -> u32 {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1154 |     pub fn remove_piece(&mut self, square: u8) {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1213 |     pub fn king_check(&self, color: Color) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1247 |     pub fn push_undo(self, undo: UndoInfo) {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1603 |     pub fn is_square_attacked_after_move(&self, square: u8, by_color: Color, occupied: u64) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1645 |     pub fn is_in_check_with_all_attackers(&self, color: Color) -> (bool, Vec<PieceType>) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1701 |     pub fn square_attacked_by(&self, square: u8, by_color: Color) -> Option<PieceType> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1901 |     pub fn get_knight_attacks(&self, square: u8) -> Bitboard {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1906 |     pub fn get_king_attacks(&self, square: u8) -> Bitboard {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1910 |     pub fn copy_from(&mut self, other: &Position) {
[INFO] [stderr]      |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1928 |     pub fn create_temp_copy(&self) -> Position {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 2065 |     pub fn material_count(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_PAWN` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:24:11
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub const WHITE_PAWN: usize = 0;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_KNIGHT` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:25:11
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub const WHITE_KNIGHT: usize = 1;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_BISHOP` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:26:11
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub const WHITE_BISHOP: usize = 2;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_ROOK` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:27:11
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub const WHITE_ROOK: usize = 3;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_QUEEN` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:28:11
[INFO] [stderr]    |
[INFO] [stderr] 28 | pub const WHITE_QUEEN: usize = 4;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `WHITE_KING` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:29:11
[INFO] [stderr]    |
[INFO] [stderr] 29 | pub const WHITE_KING: usize = 5;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_PAWN` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:30:11
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub const BLACK_PAWN: usize = 6;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_KNIGHT` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:31:11
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub const BLACK_KNIGHT: usize = 7;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_BISHOP` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:32:11
[INFO] [stderr]    |
[INFO] [stderr] 32 | pub const BLACK_BISHOP: usize = 8;
[INFO] [stderr]    |           ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_ROOK` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:33:11
[INFO] [stderr]    |
[INFO] [stderr] 33 | pub const BLACK_ROOK: usize = 9;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_QUEEN` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:34:11
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub const BLACK_QUEEN: usize = 10;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `BLACK_KING` is never used
[INFO] [stderr]   --> src/board/zobrist.rs:35:11
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub const BLACK_KING: usize = 11;
[INFO] [stderr]    |           ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_piece_hash` is never used
[INFO] [stderr]    --> src/board/zobrist.rs:128:8
[INFO] [stderr]     |
[INFO] [stderr] 128 | pub fn get_piece_hash(piece_index: usize, square: u8) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_en_passant_hash` is never used
[INFO] [stderr]    --> src/board/zobrist.rs:133:8
[INFO] [stderr]     |
[INFO] [stderr] 133 | pub fn get_en_passant_hash(file: u8) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_castling_hash` is never used
[INFO] [stderr]    --> src/board/zobrist.rs:138:8
[INFO] [stderr]     |
[INFO] [stderr] 138 | pub fn get_castling_hash(rights: u8) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_side_to_move_hash` is never used
[INFO] [stderr]    --> src/board/zobrist.rs:143:8
[INFO] [stderr]     |
[INFO] [stderr] 143 | pub fn get_side_to_move_hash() -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TEMPO_BONUS` is never used
[INFO] [stderr]   --> src/eval/mod.rs:19:11
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub const TEMPO_BONUS: i32 = 28;
[INFO] [stderr]    |           ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LAZY_EVAL_MARGIN` is never used
[INFO] [stderr]   --> src/eval/mod.rs:20:11
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub const LAZY_EVAL_MARGIN: i32 = 400;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `EVAL_CACHE_SIZE` is never used
[INFO] [stderr]   --> src/eval/mod.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const EVAL_CACHE_SIZE: usize = 1024 * 1024;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `quick_eval` is never used
[INFO] [stderr]   --> src/eval/mod.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub fn quick_eval(pos: &crate::board::position::Position) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `needs_deep_eval` is never used
[INFO] [stderr]   --> src/eval/mod.rs:30:8
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub fn needs_deep_eval(pos: &crate::board::position::Position) -> bool {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `complexity_score` is never used
[INFO] [stderr]   --> src/eval/mod.rs:34:8
[INFO] [stderr]    |
[INFO] [stderr] 34 | pub fn complexity_score(pos: &crate::board::position::Position) -> i32 {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PAWN_VALUE_MG` is never used
[INFO] [stderr]   --> src/eval/material.rs:15:11
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub const PAWN_VALUE_MG: i32 = 124;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `PAWN_VALUE_EG` is never used
[INFO] [stderr]   --> src/eval/material.rs:16:11
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub const PAWN_VALUE_EG: i32 = 206;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `KNIGHT_VALUE_EG` is never used
[INFO] [stderr]   --> src/eval/material.rs:18:11
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub const KNIGHT_VALUE_EG: i32 = 854;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `ROOK_VALUE_EG` is never used
[INFO] [stderr]   --> src/eval/material.rs:22:11
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub const ROOK_VALUE_EG: i32 = 1380;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `QUEEN_VALUE_EG` is never used
[INFO] [stderr]   --> src/eval/material.rs:24:11
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub const QUEEN_VALUE_EG: i32 = 2682;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_PHASE` is never used
[INFO] [stderr]   --> src/eval/material.rs:96:11
[INFO] [stderr]    |
[INFO] [stderr] 96 | pub const MAX_PHASE: u32 = 256;
[INFO] [stderr]    |           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_material_signature` is never used
[INFO] [stderr]    --> src/eval/material.rs:409:8
[INFO] [stderr]     |
[INFO] [stderr] 409 | pub fn get_material_signature(pos: &Position) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_endgame_scale_factor` is never used
[INFO] [stderr]    --> src/eval/material.rs:483:8
[INFO] [stderr]     |
[INFO] [stderr] 483 | pub fn get_endgame_scale_factor(pos: &Position, endgame_type: EndgameType) -> f32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_pst_move_delta` is never used
[INFO] [stderr]    --> src/eval/pst.rs:269:8
[INFO] [stderr]     |
[INFO] [stderr] 269 | pub fn get_pst_move_delta(piece_type: PieceType, from: u8, to: u8, color: Color) -> Score {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `rank_to_square` is never used
[INFO] [stderr]    --> src/eval/pst.rs:281:14
[INFO] [stderr]     |
[INFO] [stderr] 281 | pub const fn rank_to_square(rank: u8, file: u8) -> u8 {
[INFO] [stderr]     |              ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `SHELTER_STRENGTH` is never used
[INFO] [stderr]   --> src/eval/pawns.rs:57:7
[INFO] [stderr]    |
[INFO] [stderr] 57 | const SHELTER_STRENGTH: [[i32; 8]; 4] = [
[INFO] [stderr]    |       ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `STORM_DANGER` is never used
[INFO] [stderr]   --> src/eval/pawns.rs:64:7
[INFO] [stderr]    |
[INFO] [stderr] 64 | const STORM_DANGER: [[i32; 8]; 4] = [
[INFO] [stderr]    |       ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_king_pawn_shelter` is never used
[INFO] [stderr]    --> src/eval/pawns.rs:549:8
[INFO] [stderr]     |
[INFO] [stderr] 549 | pub fn evaluate_king_pawn_shelter(pos: &Position, color: Color) -> Score {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_outpost_square` is never used
[INFO] [stderr]    --> src/eval/pawns.rs:612:8
[INFO] [stderr]     |
[INFO] [stderr] 612 | pub fn is_outpost_square(pos: &Position, square: u8, color: Color) -> bool {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_pawn_space` is never used
[INFO] [stderr]    --> src/eval/space.rs:308:8
[INFO] [stderr]     |
[INFO] [stderr] 308 | pub fn evaluate_pawn_space(pos: &Position) -> Score {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_piece_activity` is never used
[INFO] [stderr]    --> src/eval/space.rs:347:8
[INFO] [stderr]     |
[INFO] [stderr] 347 | pub fn evaluate_piece_activity(pos: &Position) -> Score {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `calculate_piece_activity_bonus` is never used
[INFO] [stderr]    --> src/eval/space.rs:373:4
[INFO] [stderr]     |
[INFO] [stderr] 373 | fn calculate_piece_activity_bonus(square: u8, color: Color) -> Score {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_king_in_danger` is never used
[WARN] too many lines in the log, truncating it
