[INFO] cloning repository https://github.com/mcthouacbb/Calamity
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mcthouacbb/Calamity" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcthouacbb%2FCalamity", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcthouacbb%2FCalamity'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e86b5cb1216a0a3eb67f6b461e0a67cf99b0dd96
[INFO] checking mcthouacbb/Calamity against try#c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f for 2025-12-16-next-solver-global
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmcthouacbb%2FCalamity" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mcthouacbb/Calamity
[INFO] finished tweaking git repo https://github.com/mcthouacbb/Calamity
[INFO] tweaked toml for git repo https://github.com/mcthouacbb/Calamity written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mcthouacbb/Calamity on toolchain c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mcthouacbb/Calamity 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" "+c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4f447e049af02901bf2f96926c4e4d241b9ad8e8a561305e34e5f2e2ca45f2d0
[INFO] running `Command { std: "docker" "start" "-a" "4f447e049af02901bf2f96926c4e4d241b9ad8e8a561305e34e5f2e2ca45f2d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4f447e049af02901bf2f96926c4e4d241b9ad8e8a561305e34e5f2e2ca45f2d0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4f447e049af02901bf2f96926c4e4d241b9ad8e8a561305e34e5f2e2ca45f2d0", kill_on_drop: false }`
[INFO] [stdout] 4f447e049af02901bf2f96926c4e4d241b9ad8e8a561305e34e5f2e2ca45f2d0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+c9557a20e5ef2e0e02c29a5fafd850d1b7cf1e4f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8ee4e0e023a61ac99591ad7358eee1e0540dc470c8900c4d3b5bf388292d333d
[INFO] running `Command { std: "docker" "start" "-a" "8ee4e0e023a61ac99591ad7358eee1e0540dc470c8900c4d3b5bf388292d333d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]     Checking calamity v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Color` and `Piece`
[INFO] [stdout]  --> src/games/three_check/see.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{Bitboard, Color, Move, MoveKind, Piece, PieceType, ThreeCheckState, attacks};
[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: `CopyMakeWrapper`
[INFO] [stdout]   --> src/games/three_check.rs:16:42
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::board::{Board, CopyMakeBoard, CopyMakeWrapper, GameResult};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color` and `Piece`
[INFO] [stdout]  --> src/games/three_check/see.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{Bitboard, Color, Move, MoveKind, Piece, PieceType, ThreeCheckState, attacks};
[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: `CopyMakeWrapper`
[INFO] [stdout]   --> src/games/three_check.rs:16:42
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::board::{Board, CopyMakeBoard, CopyMakeWrapper, GameResult};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_combine`
[INFO] [stdout]  --> src/util/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use hash::{hash_combine, murmur_hash3};
[INFO] [stdout]   |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ThreeCheckState`, `connect4::Connect4Board`, `hexapawn::HexapawnBoard`, and `tictactoe::TicTacToeBoard`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     connect4::Connect4Board,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     hexapawn::HexapawnBoard,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     three_check::{self, Color, ThreeCheckBoard, ThreeCheckState},
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     tictactoe::TicTacToeBoard,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash_combine`
[INFO] [stdout]  --> src/util/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use hash::{hash_combine, murmur_hash3};
[INFO] [stdout]   |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `C4Benchmark`, `ab_solver::ABSolver`, and `run_benchmark`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ab_solver::ABSolver,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     c4_solver::{C4Benchmark, run_benchmark},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `util::Square`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use util::Square;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ThreeCheckState`, `connect4::Connect4Board`, `hexapawn::HexapawnBoard`, and `tictactoe::TicTacToeBoard`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     connect4::Connect4Board,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     hexapawn::HexapawnBoard,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     three_check::{self, Color, ThreeCheckBoard, ThreeCheckState},
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     tictactoe::TicTacToeBoard,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `C4Benchmark`, `ab_solver::ABSolver`, and `run_benchmark`
[INFO] [stdout]   --> src/main.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ab_solver::ABSolver,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     c4_solver::{C4Benchmark, run_benchmark},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `util::Square`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use util::Square;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CopyMakeBoard`
[INFO] [stdout]   --> src/games/three_check.rs:16:27
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::board::{Board, CopyMakeBoard, CopyMakeWrapper, GameResult};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CopyMakeBoard`
[INFO] [stdout]   --> src/games/three_check.rs:16:27
[INFO] [stdout]    |
[INFO] [stdout] 16 | use super::board::{Board, CopyMakeBoard, CopyMakeWrapper, GameResult};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_random_move` is never used
[INFO] [stdout]   --> src/main.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn select_random_move(board: &ThreeCheckBoard) -> three_check::Move {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_value` is never used
[INFO] [stdout]   --> src/eval/three_check.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn piece_value(pt: PieceType) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AtaxxSquare` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type AtaxxSquare = Square<7, 7>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtaxxMove` is never constructed
[INFO] [stdout]   --> src/games/ataxx.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct AtaxxMove {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/games/ataxx.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AtaxxMove {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn null() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn single(sq: AtaxxSquare) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn double(from: AtaxxSquare, to: AtaxxSquare) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn from_sq_raw(&self) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn to_sq_raw(&self) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn from_sq(&self) -> AtaxxSquare {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn to_sq(&self) -> AtaxxSquare {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn is_null(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn is_single(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AtaxxColor` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:60:10
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum AtaxxColor {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl AtaxxColor {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 66 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AtaxxPiece` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum AtaxxPiece {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `single_moves` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 81 | const fn single_moves(pieces: Bitboard<7, 7>) -> Bitboard<7, 7> {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ADJACENT_SQUARES` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:87:7
[INFO] [stdout]    |
[INFO] [stdout] 87 | const ADJACENT_SQUARES: [Bitboard<7, 7>; 49] = {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOUBLE_MOVES` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:98:7
[INFO] [stdout]    |
[INFO] [stdout] 98 | const DOUBLE_MOVES: [Bitboard<7, 7>; 49] = {
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtaxxState` is never constructed
[INFO] [stdout]    --> src/games/ataxx.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct AtaxxState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pieces`, `pieces_mut`, and `occ` are never used
[INFO] [stdout]    --> src/games/ataxx.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl AtaxxState {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 132 |     pub fn pieces(&self, c: AtaxxColor) -> Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn pieces_mut(&mut self, c: AtaxxColor) -> &mut Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn occ(&self) -> Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AtaxxBoard` is never used
[INFO] [stdout]    --> src/games/ataxx.rs:335:10
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub type AtaxxBoard = CopyMakeWrapper<AtaxxState>;
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GameResult` is never used
[INFO] [stdout]  --> src/games/board.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum GameResult {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `game_result` is never used
[INFO] [stdout]   --> src/games/board.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Board: Sized + Clone {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn game_result(&self) -> GameResult;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CopyMakeBoard` is never used
[INFO] [stdout]   --> src/games/board.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait CopyMakeBoard: Sized + Clone {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CopyMakeWrapper` is never constructed
[INFO] [stdout]   --> src/games/board.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct CopyMakeWrapper<T>
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `curr_state` and `curr_state_mut` are never used
[INFO] [stdout]   --> src/games/board.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | / impl<T> CopyMakeWrapper<T>
[INFO] [stdout] 58 | | where
[INFO] [stdout] 59 | |     T: CopyMakeBoard,
[INFO] [stdout]    | |_____________________- methods in this implementation
[INFO] [stdout] 60 |   {
[INFO] [stdout] 61 |       pub fn curr_state(&self) -> &T {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |       fn curr_state_mut(&mut self) -> &mut T {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Move` is never constructed
[INFO] [stdout]   --> src/games/connect4.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Connect4Move(Connect4Square);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sq` is never used
[INFO] [stdout]   --> src/games/connect4.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Connect4Move {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 20 |     pub fn sq(&self) -> Connect4Square {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Connect4Color` is never used
[INFO] [stdout]   --> src/games/connect4.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum Connect4Color {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/connect4.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Connect4Color {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 32 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4State` is never constructed
[INFO] [stdout]   --> src/games/connect4.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Connect4State {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/games/connect4.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl Connect4State {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  47 |     pub fn pieces(&self, c: Connect4Color) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn stm(&self) -> Connect4Color {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn occ(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn above_pieces(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn move_locations(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn move_locations_after(&self, mv: Connect4Move) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn key(&self) -> u64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn our_threats(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn their_threats(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn our_threats_after(&self, mv: Connect4Move) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     fn compute_threats(pieces: Connect4Bitboard, occ: Connect4Bitboard) -> Connect4Bitboard {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn is_loss(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Connect4Board` is never used
[INFO] [stdout]    --> src/games/connect4.rs:258:10
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub type Connect4Board = CopyMakeWrapper<Connect4State>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Bitboard` is never constructed
[INFO] [stdout]  --> src/games/connect4/bitboard.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Connect4Bitboard(Bitboard<7, 7>);
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/games/connect4/bitboard.rs:12:15
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Connect4Bitboard {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  12 |     pub const NONE: Self = Self(Bitboard::NONE);
[INFO] [stdout]     |               ^^^^
[INFO] [stdout]  13 |     pub const VALID: Self = Self::row(0)
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  20 |     pub const fn from_raw(value: u64) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub const fn column(file: u8) -> Self {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub const fn row(rank: u8) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub const fn from_square(sq: Connect4Square) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub const fn value(self) -> u64 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub const fn north(self) -> Self {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub const fn south(self) -> Self {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub const fn east(self) -> Self {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub const fn west(self) -> Self {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub const fn lsb(self) -> Connect4Square {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub const fn msb(self) -> Connect4Square {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub const fn popcount(self) -> u32 {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn poplsb(&mut self) -> Connect4Square {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub const fn any(self) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub const fn empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub const fn multiple(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub const fn one(self) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn toggle(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn unset(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub const fn has(self, sq: Connect4Square) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub const fn bit_and(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub const fn bit_or(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub const fn bit_xor(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub const fn bit_not(self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Square` is never constructed
[INFO] [stdout]  --> src/games/connect4/square.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Connect4Square(Square<7, 7>);
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/games/connect4/square.rs:7:18
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Connect4Square {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout]  7 |     pub const fn from_row_column(row: u8, column: u8) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub const fn from_util_sq(sq: Square<7, 7>) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub const fn from_raw(sq: u16) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub const fn to_util_sq(self) -> Square<7, 7> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub const fn value(self) -> u16 {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub const fn row(self) -> u8 {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub const fn column(self) -> u8 {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HexapawnSquare` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type HexapawnSquare = Square<3, 3>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexapawnMove` is never constructed
[INFO] [stdout]   --> src/games/hexapawn.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct HexapawnMove {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HexapawnColor` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum HexapawnColor {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl HexapawnColor {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 26 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexapawnState` is never constructed
[INFO] [stdout]   --> src/games/hexapawn.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct HexapawnState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HexapawnBoard` is never used
[INFO] [stdout]    --> src/games/hexapawn.rs:195:10
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub type HexapawnBoard = CopyMakeWrapper<HexapawnState>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TicTacToeSquare` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type TicTacToeSquare = Square<3, 3>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToeMove` is never constructed
[INFO] [stdout]   --> src/games/tictactoe.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct TicTacToeMove(TicTacToeSquare);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `to_sq` are never used
[INFO] [stdout]   --> src/games/tictactoe.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl TicTacToeMove {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(sq: TicTacToeSquare) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn to_sq(self) -> TicTacToeSquare {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TicTacToeColor` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum TicTacToeColor {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl TicTacToeColor {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Piece` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:42:6
[INFO] [stdout]    |
[INFO] [stdout] 42 | type Piece = TicTacToeColor;
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToeState` is never constructed
[INFO] [stdout]   --> src/games/tictactoe.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TicTacToeState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TicTacToeBoard` is never used
[INFO] [stdout]    --> src/games/tictactoe.rs:167:10
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub type TicTacToeBoard = CopyMakeWrapper<TicTacToeState>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft` is never used
[INFO] [stdout]  --> src/perft.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn perft<const SPLIT: bool, B: Board>(board: &mut B, depth: u32) -> u64 {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft_impl` is never used
[INFO] [stdout]   --> src/perft.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn perft_impl<B: Board>(board: &mut B, depth: u32) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_perft_suite_file` is never used
[INFO] [stdout]   --> src/perft.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_perft_suite_file<B: Board>(filename: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_perft_suite` is never used
[INFO] [stdout]   --> src/perft.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn run_perft_suite<B: Board>(tests: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ABSolver` is never constructed
[INFO] [stdout]  --> src/search/ab_solver.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ABSolver<B: Board> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SCORE_WIN`, `new`, and `alpha_beta` are never used
[INFO] [stdout]   --> src/search/ab_solver.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl<B: Board> ABSolver<B> {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 13 |     const SCORE_WIN: i32 = 1000;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 14 |
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn alpha_beta(&mut self, board: &mut B, ply: i32, mut alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `C4TTEntry` is never constructed
[INFO] [stdout]   --> src/search/c4_solver.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct C4TTEntry {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_from_tt` and `to_tt` are never used
[INFO] [stdout]   --> src/search/c4_solver.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl C4TTEntry {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 24 |     fn adjust_from_tt(&mut self, ply: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn to_tt(&self, ply: i32) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Solver` is never constructed
[INFO] [stdout]   --> src/search/c4_solver.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Connect4Solver {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SCORE_WIN`, `new`, `score_move`, `order_moves`, `alpha_beta`, and `clear` are never used
[INFO] [stdout]    --> src/search/c4_solver.rs:49:11
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl Connect4Solver {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  49 |     const SCORE_WIN: i32 = 1000;
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout]  50 |
[INFO] [stdout]  51 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn score_move(&mut self, board: &mut Connect4Board, mv: Connect4Move) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     fn order_moves(&mut self, board: &mut Connect4Board, moves: &mut ArrayVec<Connect4Move, 7>) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     fn alpha_beta<const PV: bool>(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `C4Benchmark` is never used
[INFO] [stdout]    --> src/search/c4_solver.rs:217:10
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub enum C4Benchmark {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/search/c4_solver.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn run_benchmark(benchmark: C4Benchmark) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nodes`, `time`, `score`, and `pv` are never read
[INFO] [stdout]   --> src/search/search.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct SearchResult<B: Board> {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  7 |     pub nodes: u64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]  8 |     pub time: Duration,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]  9 |     pub best_move: B::Move,
[INFO] [stdout] 10 |     pub score: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 11 |     pub pv: Vec<B::Move>,
[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: field `max_nodes` is never read
[INFO] [stdout]   --> src/search/search.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SearchLimits {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 16 |     pub max_nodes: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchLimits` 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 `clear` is never used
[INFO] [stdout]   --> src/search/search.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Search<B: Board> {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] 22 |     fn search(&mut self, board: &B, limits: SearchLimits) -> SearchResult<B>;
[INFO] [stdout] 23 |     fn clear(&mut self) {}
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_from_tt` and `to_tt` are never used
[INFO] [stdout]   --> src/search/three_check.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TTEntry {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 29 |     fn adjust_from_tt(&mut self, ply: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn to_tt(&self, ply: i32) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decisive_score_from_tt` is never used
[INFO] [stdout]   --> src/search/tt.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn decisive_score_from_tt(score: i32, ply: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decisive_score_to_tt` is never used
[INFO] [stdout]   --> src/search/tt.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn decisive_score_to_tt(score: i32, ply: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_fen_pieces` is never used
[INFO] [stdout]  --> src/util/fen_parsing.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn parse_fen_pieces<Piece, F>(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `murmur_hash3` is never used
[INFO] [stdout]  --> src/util/hash.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const fn murmur_hash3(mut key: u64) -> u64 {
[INFO] [stdout]   |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_combine` is never used
[INFO] [stdout]   --> src/util/hash.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const fn hash_combine(lhs: u64, rhs: u64) -> u64 {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `select_random_move` is never used
[INFO] [stdout]   --> src/main.rs:72:4
[INFO] [stdout]    |
[INFO] [stdout] 72 | fn select_random_move(board: &ThreeCheckBoard) -> three_check::Move {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_value` is never used
[INFO] [stdout]   --> src/eval/three_check.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn piece_value(pt: PieceType) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AtaxxSquare` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type AtaxxSquare = Square<7, 7>;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtaxxMove` is never constructed
[INFO] [stdout]   --> src/games/ataxx.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct AtaxxMove {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/games/ataxx.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl AtaxxMove {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn null() -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn single(sq: AtaxxSquare) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn double(from: AtaxxSquare, to: AtaxxSquare) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     fn from_sq_raw(&self) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     fn to_sq_raw(&self) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn from_sq(&self) -> AtaxxSquare {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn to_sq(&self) -> AtaxxSquare {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn is_null(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn is_single(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AtaxxColor` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:60:10
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub enum AtaxxColor {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl AtaxxColor {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 66 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AtaxxPiece` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:75:10
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub enum AtaxxPiece {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `single_moves` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:81:10
[INFO] [stdout]    |
[INFO] [stdout] 81 | const fn single_moves(pieces: Bitboard<7, 7>) -> Bitboard<7, 7> {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ADJACENT_SQUARES` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:87:7
[INFO] [stdout]    |
[INFO] [stdout] 87 | const ADJACENT_SQUARES: [Bitboard<7, 7>; 49] = {
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DOUBLE_MOVES` is never used
[INFO] [stdout]   --> src/games/ataxx.rs:98:7
[INFO] [stdout]    |
[INFO] [stdout] 98 | const DOUBLE_MOVES: [Bitboard<7, 7>; 49] = {
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AtaxxState` is never constructed
[INFO] [stdout]    --> src/games/ataxx.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct AtaxxState {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pieces`, `pieces_mut`, and `occ` are never used
[INFO] [stdout]    --> src/games/ataxx.rs:132:12
[INFO] [stdout]     |
[INFO] [stdout] 131 | impl AtaxxState {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 132 |     pub fn pieces(&self, c: AtaxxColor) -> Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn pieces_mut(&mut self, c: AtaxxColor) -> &mut Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn occ(&self) -> Bitboard<7, 7> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AtaxxBoard` is never used
[INFO] [stdout]    --> src/games/ataxx.rs:335:10
[INFO] [stdout]     |
[INFO] [stdout] 335 | pub type AtaxxBoard = CopyMakeWrapper<AtaxxState>;
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GameResult` is never used
[INFO] [stdout]  --> src/games/board.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum GameResult {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `game_result` is never used
[INFO] [stdout]   --> src/games/board.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub trait Board: Sized + Clone {
[INFO] [stdout]    |           ----- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 23 |     fn game_result(&self) -> GameResult;
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `CopyMakeBoard` is never used
[INFO] [stdout]   --> src/games/board.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub trait CopyMakeBoard: Sized + Clone {
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CopyMakeWrapper` is never constructed
[INFO] [stdout]   --> src/games/board.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub struct CopyMakeWrapper<T>
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `curr_state` and `curr_state_mut` are never used
[INFO] [stdout]   --> src/games/board.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | / impl<T> CopyMakeWrapper<T>
[INFO] [stdout] 58 | | where
[INFO] [stdout] 59 | |     T: CopyMakeBoard,
[INFO] [stdout]    | |_____________________- methods in this implementation
[INFO] [stdout] 60 |   {
[INFO] [stdout] 61 |       pub fn curr_state(&self) -> &T {
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |       fn curr_state_mut(&mut self) -> &mut T {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Move` is never constructed
[INFO] [stdout]   --> src/games/connect4.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Connect4Move(Connect4Square);
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sq` is never used
[INFO] [stdout]   --> src/games/connect4.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Connect4Move {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 20 |     pub fn sq(&self) -> Connect4Square {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Connect4Color` is never used
[INFO] [stdout]   --> src/games/connect4.rs:26:10
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub enum Connect4Color {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/connect4.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Connect4Color {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 32 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4State` is never constructed
[INFO] [stdout]   --> src/games/connect4.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Connect4State {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/games/connect4.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl Connect4State {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  47 |     pub fn pieces(&self, c: Connect4Color) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn stm(&self) -> Connect4Color {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn occ(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn above_pieces(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn move_locations(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn move_locations_after(&self, mv: Connect4Move) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn key(&self) -> u64 {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn our_threats(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn their_threats(&self) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn our_threats_after(&self, mv: Connect4Move) -> Connect4Bitboard {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     fn compute_threats(pieces: Connect4Bitboard, occ: Connect4Bitboard) -> Connect4Bitboard {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     fn is_loss(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Connect4Board` is never used
[INFO] [stdout]    --> src/games/connect4.rs:258:10
[INFO] [stdout]     |
[INFO] [stdout] 258 | pub type Connect4Board = CopyMakeWrapper<Connect4State>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Bitboard` is never constructed
[INFO] [stdout]  --> src/games/connect4/bitboard.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Connect4Bitboard(Bitboard<7, 7>);
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/games/connect4/bitboard.rs:12:15
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Connect4Bitboard {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  12 |     pub const NONE: Self = Self(Bitboard::NONE);
[INFO] [stdout]     |               ^^^^
[INFO] [stdout]  13 |     pub const VALID: Self = Self::row(0)
[INFO] [stdout]     |               ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  20 |     pub const fn from_raw(value: u64) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub const fn column(file: u8) -> Self {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub const fn row(rank: u8) -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub const fn from_square(sq: Connect4Square) -> Self {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub const fn value(self) -> u64 {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub const fn north(self) -> Self {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  46 |     pub const fn south(self) -> Self {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub const fn east(self) -> Self {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub const fn west(self) -> Self {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub const fn lsb(self) -> Connect4Square {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub const fn msb(self) -> Connect4Square {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub const fn popcount(self) -> u32 {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn poplsb(&mut self) -> Connect4Square {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub const fn any(self) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub const fn empty(self) -> bool {
[INFO] [stdout]     |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub const fn multiple(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub const fn one(self) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn toggle(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn unset(&mut self, sq: Connect4Square) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub const fn has(self, sq: Connect4Square) -> bool {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub const fn bit_and(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub const fn bit_or(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub const fn bit_xor(self, rhs: Self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub const fn bit_not(self) -> Self {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Square` is never constructed
[INFO] [stdout]  --> src/games/connect4/square.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Connect4Square(Square<7, 7>);
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/games/connect4/square.rs:7:18
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl Connect4Square {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout]  7 |     pub const fn from_row_column(row: u8, column: u8) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub const fn from_util_sq(sq: Square<7, 7>) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub const fn from_raw(sq: u16) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub const fn to_util_sq(self) -> Square<7, 7> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub const fn value(self) -> u16 {
[INFO] [stdout]    |                  ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub const fn row(self) -> u8 {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub const fn column(self) -> u8 {
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HexapawnSquare` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type HexapawnSquare = Square<3, 3>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexapawnMove` is never constructed
[INFO] [stdout]   --> src/games/hexapawn.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct HexapawnMove {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HexapawnColor` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:20:10
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub enum HexapawnColor {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/hexapawn.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl HexapawnColor {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 26 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HexapawnState` is never constructed
[INFO] [stdout]   --> src/games/hexapawn.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub struct HexapawnState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HexapawnBoard` is never used
[INFO] [stdout]    --> src/games/hexapawn.rs:195:10
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub type HexapawnBoard = CopyMakeWrapper<HexapawnState>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TicTacToeSquare` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:11:10
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub type TicTacToeSquare = Square<3, 3>;
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToeMove` is never constructed
[INFO] [stdout]   --> src/games/tictactoe.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct TicTacToeMove(TicTacToeSquare);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `to_sq` are never used
[INFO] [stdout]   --> src/games/tictactoe.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl TicTacToeMove {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(sq: TicTacToeSquare) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn to_sq(self) -> TicTacToeSquare {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TicTacToeColor` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:28:10
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub enum TicTacToeColor {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `flip` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl TicTacToeColor {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 34 |     pub fn flip(self) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Piece` is never used
[INFO] [stdout]   --> src/games/tictactoe.rs:42:6
[INFO] [stdout]    |
[INFO] [stdout] 42 | type Piece = TicTacToeColor;
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToeState` is never constructed
[INFO] [stdout]   --> src/games/tictactoe.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct TicTacToeState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `TicTacToeBoard` is never used
[INFO] [stdout]    --> src/games/tictactoe.rs:167:10
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub type TicTacToeBoard = CopyMakeWrapper<TicTacToeState>;
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft` is never used
[INFO] [stdout]  --> src/perft.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn perft<const SPLIT: bool, B: Board>(board: &mut B, depth: u32) -> u64 {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perft_impl` is never used
[INFO] [stdout]   --> src/perft.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn perft_impl<B: Board>(board: &mut B, depth: u32) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_perft_suite_file` is never used
[INFO] [stdout]   --> src/perft.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn run_perft_suite_file<B: Board>(filename: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_perft_suite` is never used
[INFO] [stdout]   --> src/perft.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn run_perft_suite<B: Board>(tests: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ABSolver` is never constructed
[INFO] [stdout]  --> src/search/ab_solver.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ABSolver<B: Board> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SCORE_WIN`, `new`, and `alpha_beta` are never used
[INFO] [stdout]   --> src/search/ab_solver.rs:13:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl<B: Board> ABSolver<B> {
[INFO] [stdout]    | -------------------------- associated items in this implementation
[INFO] [stdout] 13 |     const SCORE_WIN: i32 = 1000;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 14 |
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn alpha_beta(&mut self, board: &mut B, ply: i32, mut alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `C4TTEntry` is never constructed
[INFO] [stdout]   --> src/search/c4_solver.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct C4TTEntry {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_from_tt` and `to_tt` are never used
[INFO] [stdout]   --> src/search/c4_solver.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl C4TTEntry {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 24 |     fn adjust_from_tt(&mut self, ply: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn to_tt(&self, ply: i32) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Connect4Solver` is never constructed
[INFO] [stdout]   --> src/search/c4_solver.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Connect4Solver {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `SCORE_WIN`, `new`, `score_move`, `order_moves`, `alpha_beta`, and `clear` are never used
[INFO] [stdout]    --> src/search/c4_solver.rs:49:11
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl Connect4Solver {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  49 |     const SCORE_WIN: i32 = 1000;
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout]  50 |
[INFO] [stdout]  51 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     fn score_move(&mut self, board: &mut Connect4Board, mv: Connect4Move) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     fn order_moves(&mut self, board: &mut Connect4Board, moves: &mut ArrayVec<Connect4Move, 7>) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     fn alpha_beta<const PV: bool>(
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `C4Benchmark` is never used
[INFO] [stdout]    --> src/search/c4_solver.rs:217:10
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub enum C4Benchmark {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_benchmark` is never used
[INFO] [stdout]    --> src/search/c4_solver.rs:226:8
[INFO] [stdout]     |
[INFO] [stdout] 226 | pub fn run_benchmark(benchmark: C4Benchmark) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nodes`, `time`, `score`, and `pv` are never read
[INFO] [stdout]   --> src/search/search.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct SearchResult<B: Board> {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout]  7 |     pub nodes: u64,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]  8 |     pub time: Duration,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]  9 |     pub best_move: B::Move,
[INFO] [stdout] 10 |     pub score: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 11 |     pub pv: Vec<B::Move>,
[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: field `max_nodes` is never read
[INFO] [stdout]   --> src/search/search.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SearchLimits {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] 16 |     pub max_nodes: Option<u64>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SearchLimits` 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 `clear` is never used
[INFO] [stdout]   --> src/search/search.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub trait Search<B: Board> {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] 22 |     fn search(&mut self, board: &B, limits: SearchLimits) -> SearchResult<B>;
[INFO] [stdout] 23 |     fn clear(&mut self) {}
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_from_tt` and `to_tt` are never used
[INFO] [stdout]   --> src/search/three_check.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TTEntry {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] 29 |     fn adjust_from_tt(&mut self, ply: i32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     fn to_tt(&self, ply: i32) -> Self {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decisive_score_from_tt` is never used
[INFO] [stdout]   --> src/search/tt.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn decisive_score_from_tt(score: i32, ply: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decisive_score_to_tt` is never used
[INFO] [stdout]   --> src/search/tt.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn decisive_score_to_tt(score: i32, ply: i32) -> i32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_fen_pieces` is never used
[INFO] [stdout]  --> src/util/fen_parsing.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn parse_fen_pieces<Piece, F>(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `murmur_hash3` is never used
[INFO] [stdout]  --> src/util/hash.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub const fn murmur_hash3(mut key: u64) -> u64 {
[INFO] [stdout]   |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_combine` is never used
[INFO] [stdout]   --> src/util/hash.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const fn hash_combine(lhs: u64, rhs: u64) -> u64 {
[INFO] [stdout]    |              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.74s
[INFO] running `Command { std: "docker" "inspect" "8ee4e0e023a61ac99591ad7358eee1e0540dc470c8900c4d3b5bf388292d333d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8ee4e0e023a61ac99591ad7358eee1e0540dc470c8900c4d3b5bf388292d333d", kill_on_drop: false }`
[INFO] [stdout] 8ee4e0e023a61ac99591ad7358eee1e0540dc470c8900c4d3b5bf388292d333d
