[INFO] cloning repository https://github.com/metaember/chess
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/metaember/chess" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmetaember%2Fchess", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmetaember%2Fchess'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 25fc3329f716b4575ebf2622581ca06c95175dad
[INFO] testing metaember/chess against 1.95.0 for beta-1.96-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmetaember%2Fchess" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/metaember/chess
[INFO] finished tweaking git repo https://github.com/metaember/chess
[INFO] tweaked toml for git repo https://github.com/metaember/chess written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/metaember/chess on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/metaember/chess 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded memoffset v0.9.0
[INFO] [stderr]   Downloaded tempfile v3.10.1
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.16
[INFO] [stderr]   Downloaded indenter v0.3.3
[INFO] [stderr]   Downloaded ciborium-ll v0.2.1
[INFO] [stderr]   Downloaded clap_lex v0.6.0
[INFO] [stderr]   Downloaded plotters-backend v0.3.5
[INFO] [stderr]   Downloaded anstyle v1.0.4
[INFO] [stderr]   Downloaded anstyle-wincon v3.0.1
[INFO] [stderr]   Downloaded iana-time-zone v0.1.58
[INFO] [stderr]   Downloaded windows-core v0.51.1
[INFO] [stderr]   Downloaded clap_derive v4.4.7
[INFO] [stderr]   Downloaded pretty_assertions v1.4.0
[INFO] [stderr]   Downloaded clap v4.4.8
[INFO] [stderr]   Downloaded js-sys v0.3.65
[INFO] [stderr]   Downloaded itertools v0.12.0
[INFO] [stderr]   Downloaded clap_builder v4.4.8
[INFO] [stderr]   Downloaded plotters v0.3.5
[INFO] [stderr]   Downloaded rayon v1.8.0
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.88
[INFO] [stderr]   Downloaded criterion v0.4.0
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.15
[INFO] [stderr]   Downloaded syn v2.0.116
[INFO] [stderr]   Downloaded anstream v0.6.4
[INFO] [stderr]   Downloaded eyre v0.6.9
[INFO] [stderr]   Downloaded ciborium v0.2.1
[INFO] [stderr]   Downloaded wasm-bindgen-backend v0.2.88
[INFO] [stderr]   Downloaded rayon-core v1.12.0
[INFO] [stderr]   Downloaded anstyle-parse v0.2.2
[INFO] [stderr]   Downloaded owo-colors v3.5.0
[INFO] [stderr]   Downloaded os_str_bytes v6.6.1
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.88
[INFO] [stderr]   Downloaded tracing-error v0.2.0
[INFO] [stderr]   Downloaded oorandom v11.1.3
[INFO] [stderr]   Downloaded plotters-svg v0.3.5
[INFO] [stderr]   Downloaded color-eyre v0.6.2
[INFO] [stderr]   Downloaded web-sys v0.3.65
[INFO] [stderr]   Downloaded yansi v0.5.1
[INFO] [stderr]   Downloaded ciborium-io v0.2.1
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.88
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.88
[INFO] [stderr]   Downloaded color-spantrace v0.2.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9bfd8de32003773b09d3a80dffbe3e7fd07a3b4349a04069ec007ba016c59cfb
[INFO] running `Command { std: "docker" "start" "-a" "9bfd8de32003773b09d3a80dffbe3e7fd07a3b4349a04069ec007ba016c59cfb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9bfd8de32003773b09d3a80dffbe3e7fd07a3b4349a04069ec007ba016c59cfb", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9bfd8de32003773b09d3a80dffbe3e7fd07a3b4349a04069ec007ba016c59cfb", kill_on_drop: false }`
[INFO] [stdout] 9bfd8de32003773b09d3a80dffbe3e7fd07a3b4349a04069ec007ba016c59cfb
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1646f6ae8428322c695898ed13225e6c6affb8bc55f8839e983cf26691b16b4c
[INFO] running `Command { std: "docker" "start" "-a" "1646f6ae8428322c695898ed13225e6c6affb8bc55f8839e983cf26691b16b4c", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.182
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling quote v1.0.44
[INFO] [stderr]    Compiling once_cell v1.18.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.13
[INFO] [stderr]    Compiling itoa v1.0.9
[INFO] [stderr]    Compiling log v0.4.20
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling memoffset v0.9.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.16
[INFO] [stderr]    Compiling zerocopy v0.8.39
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.15
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling sharded-slab v0.1.7
[INFO] [stderr]    Compiling utf8parse v0.2.1
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling memchr v2.6.4
[INFO] [stderr]    Compiling tracing-core v0.1.32
[INFO] [stderr]    Compiling thread_local v1.1.7
[INFO] [stderr]    Compiling anstyle-parse v0.2.2
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling gimli v0.28.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling eyre v0.6.9
[INFO] [stderr]    Compiling anstyle v1.0.4
[INFO] [stderr]    Compiling ryu v1.0.15
[INFO] [stderr]    Compiling syn v2.0.116
[INFO] [stderr]    Compiling serde_json v1.0.108
[INFO] [stderr]    Compiling rayon-core v1.12.0
[INFO] [stderr]    Compiling colorchoice v1.0.0
[INFO] [stderr]    Compiling anstyle-query v1.0.0
[INFO] [stderr]    Compiling miniz_oxide v0.7.1
[INFO] [stderr]    Compiling anstream v0.6.4
[INFO] [stderr]    Compiling object v0.32.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.3
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling tracing v0.1.40
[INFO] [stderr]    Compiling tracing-subscriber v0.3.18
[INFO] [stderr]    Compiling clap_lex v0.6.0
[INFO] [stderr]    Compiling bitflags v2.11.0
[INFO] [stderr]    Compiling indenter v0.3.3
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling either v1.9.0
[INFO] [stderr]    Compiling owo-colors v3.5.0
[INFO] [stderr]    Compiling rustc-demangle v0.1.23
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling clap_builder v4.4.8
[INFO] [stderr]    Compiling cc v1.0.83
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling socket2 v0.6.2
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling getrandom v0.2.11
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling http-range-header v0.4.2
[INFO] [stderr]    Compiling iana-time-zone v0.1.58
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling matchit v0.7.3
[INFO] [stderr]    Compiling chrono v0.4.31
[INFO] [stderr]    Compiling rayon v1.8.0
[INFO] [stderr]    Compiling tracing-error v0.2.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling color-spantrace v0.2.1
[INFO] [stderr]    Compiling itertools v0.12.0
[INFO] [stderr]    Compiling backtrace v0.3.69
[INFO] [stderr]    Compiling libsqlite3-sys v0.28.0
[INFO] [stderr]    Compiling addr2line v0.21.0
[INFO] [stderr]    Compiling serde_path_to_error v0.1.20
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling clap_derive v4.4.7
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling axum-core v0.4.5
[INFO] [stderr]    Compiling color-eyre v0.6.2
[INFO] [stderr]    Compiling clap v4.4.8
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling hyper v1.8.1
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling tokio-util v0.7.18
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling rust_chess v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[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: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]   --> src/engine.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::types::{Color, CompactMove, Move};
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[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 `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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 `get_perft_expected_node_count` is never used
[INFO] [stdout]   --> src/perft.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn get_perft_expected_node_count(depth: u8) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[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: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_algebraic` and `to_algebraic_pgn` are never used
[INFO] [stdout]    --> src/types.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl Piece {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 193 |     pub fn from_algebraic(piece: char, position: &str) -> Piece {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn to_algebraic_pgn(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ThreefoldRepetition`, `FiftyMoveRule`, and `InsufficientMaterial` are never constructed
[INFO] [stdout]    --> src/types.rs:292:5
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub enum Status {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 292 |     ThreefoldRepetition,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 293 |     FiftyMoveRule,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 294 |     InsufficientMaterial,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Status` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_castle` is never used
[INFO] [stdout]    --> src/types.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl MoveFlag {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 310 |     pub fn is_castle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `from_algebraic` are never used
[INFO] [stdout]    --> src/types.rs:329:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | impl Move {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] 329 |     pub fn new(piece: Piece, to: Position, captured: Option<Piece>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn from_algebraic(board: &Board, from_str: &str, to_str: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysFromPosition` is never constructed
[INFO] [stdout]    --> src/types.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub struct RaysFromPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_from_position` is never used
[INFO] [stdout]    --> src/types.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl RaysFromPosition {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 456 |     pub fn new_from_position(pos: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysForBoard` is never constructed
[INFO] [stdout]    --> src/types.rs:520:12
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub struct RaysForBoard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/types.rs:525:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl RaysForBoard {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 525 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NullMoveUndo` is never constructed
[INFO] [stdout]    --> src/types.rs:582:12
[INFO] [stdout]     |
[INFO] [stdout] 582 | pub struct NullMoveUndo {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MoveType` is never used
[INFO] [stdout]    --> src/types.rs:596:10
[INFO] [stdout]     |
[INFO] [stdout] 596 | pub enum MoveType {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_capture`, `is_promotion`, `promotion_piece_type`, and `from_u8` are never used
[INFO] [stdout]    --> src/types.rs:616:12
[INFO] [stdout]     |
[INFO] [stdout] 614 | impl MoveType {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 615 |     #[inline(always)]
[INFO] [stdout] 616 |     pub fn is_capture(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn promotion_piece_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 645 |     fn from_u8(val: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompactMove` is never constructed
[INFO] [stdout]    --> src/types.rs:679:12
[INFO] [stdout]     |
[INFO] [stdout] 679 | pub struct CompactMove(u32);
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/types.rs:683:15
[INFO] [stdout]     |
[INFO] [stdout] 681 | impl CompactMove {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 682 |     /// A null/invalid move (used as sentinel)
[INFO] [stdout] 683 |     pub const NONE: Self = Self(0xFFFFFFFF);
[INFO] [stdout]     |               ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     const FROM_MASK: u32 = 0x3F;         // bits 0-5
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 687 |     const TO_SHIFT: u32 = 6;
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 688 |     const TO_MASK: u32 = 0x3F << 6;      // bits 6-11
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 689 |     const TYPE_SHIFT: u32 = 12;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 690 |     const TYPE_MASK: u32 = 0xF << 12;    // bits 12-15
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 691 |     const PIECE_SHIFT: u32 = 16;
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 692 |     const PIECE_MASK: u32 = 0x7 << 16;   // bits 16-18
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 693 |     const CAPTURED_SHIFT: u32 = 19;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 694 |     const CAPTURED_MASK: u32 = 0x7 << 19; // bits 19-21
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 695 |     const NO_CAPTURE: u32 = 7;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 699 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn new_quiet(from_sq: u8, to_sq: u8, piece_type: PieceType) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 727 |     pub fn new_capture(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 738 |     pub fn from_sq(self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 744 |     pub fn to_sq(self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 750 |     pub fn move_type(self) -> MoveType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn piece_type(self) -> PieceType {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 769 |     pub fn is_capture(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn captured_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 793 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub fn promotion_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 805 |     pub fn is_castle(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 814 |     pub fn is_en_passant(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 820 |     pub fn pos_to_sq(pos: &Position) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 826 |     pub fn sq_to_pos(sq: u8) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 834 |     pub fn from_move(mv: &Move) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 873 |     pub fn to_move(self, board: &Board) -> Move {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 943 |     pub fn to_uci(self) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TTFlag` is never used
[INFO] [stdout]  --> src/tt.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum TTFlag {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TTEntry` is never constructed
[INFO] [stdout]   --> src/tt.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TTEntry {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/tt.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl TTEntry {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 30 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TranspositionTable` is never constructed
[INFO] [stdout]   --> src/tt.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TranspositionTable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tt.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  54 |     /// Create a new transposition table with approximately `size_mb` megabytes of memory
[INFO] [stdout]  55 |     pub fn new(size_mb: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     fn index(&self, hash: u64) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn probe(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn get_best_move(&self, hash: u64) -> Option<CompactMove> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn store(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn fill_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn info(&self) -> String {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rays` is never read
[INFO] [stdout]   --> src/bitboard.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct AttackTables {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub rays: [[u64; 64]; 8],
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rook_attacks`, `bishop_attacks`, `queen_attacks`, and `ray_attacks` are never used
[INFO] [stdout]    --> src/bitboard.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl AttackTables {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn rook_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn bishop_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn queen_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn ray_attacks(&self, sq: u8, occupied: u64, direction: usize) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/movelist.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const MAX_MOVES: usize = 256;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveList` is never constructed
[INFO] [stdout]   --> src/movelist.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MoveList {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/movelist.rs:33:18
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl MoveList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub const fn new() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn push(&mut self, mv: CompactMove) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn push_with_score(&mut self, mv: CompactMove, score: i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn get(&self, idx: usize) -> CompactMove {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn get_score(&self, idx: usize) -> i16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn set_score(&mut self, idx: usize, score: i16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn swap(&mut self, i: usize, j: usize) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn pick_best(&mut self, start: usize) -> CompactMove {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn retain<F: FnMut(CompactMove) -> bool>(&mut self, mut f: F) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn contains(&self, mv: CompactMove) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn sort_by_score(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn iter(&self) -> MoveListIter<'_> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveListIter` is never constructed
[INFO] [stdout]    --> src/movelist.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub struct MoveListIter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/board.rs:191:12
[INFO] [stdout]      |
[INFO] [stdout]   62 | impl Board {
[INFO] [stdout]      | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  191 |     pub fn from_fen_no_moves(fen_string: &str) -> Board {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  195 |     pub fn new() -> Board {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  298 |     pub fn get_material(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  304 |     pub fn get_pst_mg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  310 |     pub fn get_pst_eg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  360 |     pub fn piece_count(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  366 |     pub fn piece_count_for_color(&self, color: Color) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  370 |     pub fn to_fen(&self) -> String {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  440 |     pub fn to_fen_no_moves(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  459 |     pub fn piece_at_algebraic(&self, pos: &str) -> Option<&Piece> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  531 |     pub fn check_for_insufficient_material(&self) -> Option<Status> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  558 |     pub fn check_for_threefold_repetition(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  576 |     pub fn check_for_fifty_move_rule(&self) -> Option<Status> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1646 |     pub fn is_square_attacked_by(&self, pos: &Position, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1655 |     pub fn make_null_move(&mut self) -> NullMoveUndo {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1675 |     pub fn unmake_null_move(&mut self, undo: &NullMoveUndo) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1692 |     pub fn make_compact_move(&mut self, mv: &CompactMove) -> UndoInfo {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1701 |     pub fn is_legal_compact(&mut self, mv: &CompactMove) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1726 |     pub fn is_pseudo_legal_compact(&self, mv: &CompactMove) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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: multiple fields are never read
[INFO] [stdout]   --> src/evaluate.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Material {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 20 |     pub white_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     pub white_pst_mg: i32, // middlegame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub white_pst_eg: i32, // endgame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub white_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub white_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |
[INFO] [stdout] 26 |     pub black_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub black_pst_mg: i32, // middlegame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 28 |     pub black_pst_eg: i32, // endgame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub black_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub black_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub phase: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_material_difference`, `get_tapered_score`, `piece_to_phase`, and `compute_material` are never used
[INFO] [stdout]   --> src/evaluate.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Material {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn get_material_difference(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_tapered_score(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn piece_to_phase(piece_type: PieceType) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn compute_material(board: &Board) -> Material {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_type_to_index` is never used
[INFO] [stdout]    --> src/evaluate.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn piece_type_to_index(pt: PieceType) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_board_slow` is never used
[INFO] [stdout]    --> src/evaluate.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn evaluate_board_slow(board: &Board) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_piece_pst_value` is never used
[INFO] [stdout]    --> src/evaluate.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn get_piece_pst_value(piece: &Piece, is_endgame: bool) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Stage` is never used
[INFO] [stdout]   --> src/movepicker.rs:23:6
[INFO] [stdout]    |
[INFO] [stdout] 23 | enum Stage {
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TT_MOVE_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const TT_MOVE_SCORE: i16 = 30000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GOOD_CAPTURE_BASE` is never used
[INFO] [stdout]   --> src/movepicker.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const GOOD_CAPTURE_BASE: i16 = 20000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER1_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const KILLER1_SCORE: i16 = 9000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER2_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const KILLER2_SCORE: i16 = 8000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MVV_VALUES` is never used
[INFO] [stdout]   --> src/movepicker.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const MVV_VALUES: [i16; 6] = [100, 500, 320, 330, 900, 0];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LVA_VALUES` is never used
[INFO] [stdout]   --> src/movepicker.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const LVA_VALUES: [i16; 6] = [1, 5, 3, 3, 9, 10];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovePicker` is never constructed
[INFO] [stdout]   --> src/movepicker.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct MovePicker {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/movepicker.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl MovePicker {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn new_captures_only(color: Color) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn next_move(&mut self, board: &Board, history: &[[i16; 64]; 64]) -> Option<CompactMove> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn generate_captures(&mut self, board: &Board) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     fn generate_quiets(&mut self, board: &Board) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn score_captures(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn score_quiets(&mut self, history: &[[i16; 64]; 64]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mvv_lva_score` is never used
[INFO] [stdout]    --> src/movepicker.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn mvv_lva_score(mv: CompactMove) -> i16 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_type_to_idx` is never used
[INFO] [stdout]    --> src/movepicker.rs:270:10
[INFO] [stdout]     |
[INFO] [stdout] 270 | const fn piece_type_to_idx(pt: PieceType) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PLY` is never used
[INFO] [stdout]   --> src/search.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const MAX_PLY: usize = 64;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchState` is never constructed
[INFO] [stdout]   --> src/search.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SearchState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/search.rs:37:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl SearchState {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  37 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn store_killer(&mut self, ply: usize, mv: Move) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn is_killer(&self, ply: usize, mv: &Move) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn killer_priority(&self, ply: usize, mv: &Move) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn add_history_bonus(&mut self, color: Color, from: Position, to: Position, depth: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn get_history_score(&self, color: Color, from: Position, to: Position) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn age_history(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn store_killer_compact(&mut self, ply: usize, mv: CompactMove) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_killers_compact(&self, ply: usize) -> [Option<CompactMove>; 2] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn add_history_bonus_compact(&mut self, color: Color, mv: CompactMove, depth: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_history_compact(&self, color: Color) -> &[[i16; 64]; 64] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `position_to_square` is never used
[INFO] [stdout]    --> src/search.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn position_to_square(pos: Position) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchAborted` is never constructed
[INFO] [stdout]    --> src/search.rs:330:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | pub struct SearchAborted;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchControl` is never constructed
[INFO] [stdout]    --> src/search.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub struct SearchControl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `infinite`, `should_stop`, `exceeded_soft_limit`, `elapsed_ms`, and `signal_stop` are never used
[INFO] [stdout]    --> src/search.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | impl SearchControl {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 343 |     pub fn new(soft_limit_ms: u64, hard_limit_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn infinite() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn should_stop(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn exceeded_soft_limit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn signal_stop(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `allocate_time` is never used
[INFO] [stdout]    --> src/search.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn allocate_time(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search` is never used
[INFO] [stdout]    --> src/search.rs:474:8
[INFO] [stdout]     |
[INFO] [stdout] 474 | pub fn search(max_depth: u8, board: &Board) -> Move {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_quiescence` is never used
[INFO] [stdout]    --> src/search.rs:495:8
[INFO] [stdout]     |
[INFO] [stdout] 495 | pub fn minimax_no_quiescence(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_ordering` is never used
[INFO] [stdout]    --> src/search.rs:500:8
[INFO] [stdout]     |
[INFO] [stdout] 500 | pub fn minimax_no_ordering(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_pruning` is never used
[INFO] [stdout]    --> src/search.rs:505:8
[INFO] [stdout]     |
[INFO] [stdout] 505 | pub fn minimax_no_pruning(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_with_tt` is never used
[INFO] [stdout]    --> src/search.rs:511:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub fn minimax_with_tt(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspiration_search_with_control` is never used
[INFO] [stdout]    --> src/search.rs:522:8
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub fn aspiration_search_with_control(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_with_control` is never used
[INFO] [stdout]    --> src/search.rs:560:8
[INFO] [stdout]     |
[INFO] [stdout] 560 | pub fn negamax_with_control(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_with_tt_mut` is never used
[INFO] [stdout]    --> src/search.rs:782:4
[INFO] [stdout]     |
[INFO] [stdout] 782 | fn negamax_with_tt_mut(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only` is never used
[INFO] [stdout]     --> src/search.rs:1232:8
[INFO] [stdout]      |
[INFO] [stdout] 1232 | pub fn negamax_captures_only(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast` is never used
[INFO] [stdout]     --> src/search.rs:1333:8
[INFO] [stdout]      |
[INFO] [stdout] 1333 | pub fn negamax_fast(depth: i32, board: &Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1338:4
[INFO] [stdout]      |
[INFO] [stdout] 1338 | fn negamax_fast_mut(depth: i32, board: &mut Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast` is never used
[INFO] [stdout]     --> src/search.rs:1375:8
[INFO] [stdout]      |
[INFO] [stdout] 1375 | pub fn negamax_captures_only_fast(board: &Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1380:4
[INFO] [stdout]      |
[INFO] [stdout] 1380 | fn negamax_captures_only_fast_mut(board: &mut Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut_with_depth` is never used
[INFO] [stdout]     --> src/search.rs:1384:4
[INFO] [stdout]      |
[INFO] [stdout] 1384 | fn negamax_captures_only_fast_mut_with_depth(board: &mut Board, alpha: i32, beta: i32, depth_remaining: u8) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1440:8
[INFO] [stdout]      |
[INFO] [stdout] 1440 | pub fn negamax_movepicker(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quiescence_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1681:4
[INFO] [stdout]      |
[INFO] [stdout] 1681 | fn quiescence_movepicker(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterative_deepening_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1731:8
[INFO] [stdout]      |
[INFO] [stdout] 1731 | pub fn iterative_deepening_movepicker(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterative_deepening_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1780:8
[INFO] [stdout]      |
[INFO] [stdout] 1780 | pub fn iterative_deepening_movepicker_with_control(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspiration_search_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1855:8
[INFO] [stdout]      |
[INFO] [stdout] 1855 | pub fn aspiration_search_movepicker_with_control(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1902:4
[INFO] [stdout]      |
[INFO] [stdout] 1902 | fn negamax_movepicker_with_control(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_from_fen_silent` and `new_silent` are never used
[INFO] [stdout]   --> src/game.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Game {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn new_from_fen_silent(max_depth: u8, start_fen: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn new_silent(max_depth: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompactMoveGenerator` is never constructed
[INFO] [stdout]    --> src/movegen.rs:688:12
[INFO] [stdout]     |
[INFO] [stdout] 688 | pub struct CompactMoveGenerator<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/movegen.rs:695:12
[INFO] [stdout]      |
[INFO] [stdout]  693 | impl<'a> CompactMoveGenerator<'a> {
[INFO] [stdout]      | --------------------------------- associated items in this implementation
[INFO] [stdout]  694 |     #[inline(always)]
[INFO] [stdout]  695 |     pub fn new(board: &'a Board, color: Color) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  701 |     pub fn generate_all(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  716 |     pub fn generate_captures(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  730 |     pub fn generate_quiets(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  747 |     fn generate_knight_moves(&self, list: &mut MoveList, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  773 |     fn generate_knight_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  794 |     fn generate_knight_quiets(&self, list: &mut MoveList, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  813 |     fn generate_king_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  844 |     fn generate_king_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  867 |     fn generate_king_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  887 |     fn generate_castling(&self, list: &mut MoveList, occupied: u64, king_sq: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1000 |     fn generate_rook_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1026 |     fn generate_rook_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1047 |     fn generate_rook_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1066 |     fn generate_bishop_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1092 |     fn generate_bishop_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1113 |     fn generate_bishop_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1132 |     fn generate_queen_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1158 |     fn generate_queen_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1179 |     fn generate_queen_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1198 |     fn generate_pawn_moves(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1204 |     fn generate_pawn_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1277 |     fn generate_pawn_quiets(&self, list: &mut MoveList, occupied: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1353 |     fn captured_piece_type(&self, sq: u8, enemy: u64) -> Option<PieceType> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 04s
[INFO] running `Command { std: "docker" "inspect" "1646f6ae8428322c695898ed13225e6c6affb8bc55f8839e983cf26691b16b4c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1646f6ae8428322c695898ed13225e6c6affb8bc55f8839e983cf26691b16b4c", kill_on_drop: false }`
[INFO] [stdout] 1646f6ae8428322c695898ed13225e6c6affb8bc55f8839e983cf26691b16b4c
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 7f49d80e31f748db80959ce83bb8eaf755d36d7b5e3051def4b190d08e192857
[INFO] running `Command { std: "docker" "start" "-a" "7f49d80e31f748db80959ce83bb8eaf755d36d7b5e3051def4b190d08e192857", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling num-traits v0.2.17
[INFO] [stderr]    Compiling tower-http v0.5.2
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling half v1.8.2
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling regex-syntax v0.8.2
[INFO] [stderr]    Compiling plotters-backend v0.3.5
[INFO] [stderr]    Compiling rusqlite v0.31.0
[INFO] [stderr]    Compiling os_str_bytes v6.6.1
[INFO] [stderr]    Compiling ciborium-io v0.2.1
[INFO] [stderr]    Compiling itertools v0.10.5
[INFO] [stderr]    Compiling cast v0.3.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling textwrap v0.16.0
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling yansi v0.5.1
[INFO] [stderr]    Compiling anes v0.1.6
[INFO] [stderr]    Compiling walkdir v2.4.0
[INFO] [stderr]    Compiling oorandom v11.1.3
[INFO] [stderr]    Compiling diff v0.1.13
[INFO] [stderr]    Compiling ciborium-ll v0.2.1
[INFO] [stderr]    Compiling clap_lex v0.2.4
[INFO] [stderr]    Compiling plotters-svg v0.3.5
[INFO] [stderr]    Compiling pretty_assertions v1.4.0
[INFO] [stderr]    Compiling clap v3.2.25
[INFO] [stderr]    Compiling serde_json v1.0.108
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling ciborium v0.2.1
[INFO] [stderr]    Compiling criterion-plot v0.5.0
[INFO] [stderr]    Compiling regex-automata v0.4.3
[INFO] [stderr]    Compiling chrono v0.4.31
[INFO] [stderr]    Compiling plotters v0.3.5
[INFO] [stderr]    Compiling tempfile v3.10.1
[INFO] [stderr]    Compiling axum v0.7.9
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling regex v1.10.2
[INFO] [stderr]    Compiling criterion v0.4.0
[INFO] [stderr]    Compiling rust_chess v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[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: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]   --> src/engine.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::types::{Color, CompactMove, Move};
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[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 `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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 `get_perft_expected_node_count` is never used
[INFO] [stdout]   --> src/perft.rs:70:4
[INFO] [stdout]    |
[INFO] [stdout] 70 | fn get_perft_expected_node_count(depth: u8) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]    --> src/movelist.rs:236:24
[INFO] [stdout]     |
[INFO] [stdout] 236 |     use crate::types::{MoveType, PieceType};
[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: `CompactMove`
[INFO] [stdout]     --> src/movegen.rs:1630:24
[INFO] [stdout]      |
[INFO] [stdout] 1630 |     use crate::types::{CompactMove, PieceType};
[INFO] [stdout]      |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[INFO] [stdout]    |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]     --> src/search.rs:2135:24
[INFO] [stdout]      |
[INFO] [stdout] 2135 |     use crate::types::{Color, Piece, Position};
[INFO] [stdout]      |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]   --> src/engine.rs:18:20
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::types::{Color, CompactMove, Move};
[INFO] [stdout]    |                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]  --> src/stockfish_tests.rs:9:20
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::{Color, Move, MoveFlag, PieceType, Position};
[INFO] [stdout]   |                    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[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: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]    --> src/movelist.rs:236:24
[INFO] [stdout]     |
[INFO] [stdout] 236 |     use crate::types::{MoveType, PieceType};
[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: `MoveType`
[INFO] [stdout]   --> src/movepicker.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[INFO] [stdout]    |                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveType`
[INFO] [stdout]   --> src/search.rs:12:56
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Color`
[INFO] [stdout]     --> src/search.rs:2135:24
[INFO] [stdout]      |
[INFO] [stdout] 2135 |     use crate::types::{Color, Piece, Position};
[INFO] [stdout]      |                        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CompactMove`
[INFO] [stdout]     --> src/movegen.rs:1630:24
[INFO] [stdout]      |
[INFO] [stdout] 1630 |     use crate::types::{CompactMove, PieceType};
[INFO] [stdout]      |                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval`
[INFO] [stdout]     --> src/search.rs:2190:13
[INFO] [stdout]      |
[INFO] [stdout] 2190 |         let eval = search_result.best_score;
[INFO] [stdout]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_eval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/search.rs:2666:13
[INFO] [stdout]      |
[INFO] [stdout] 2666 |         let mut board = Board::new();
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_fen`
[INFO] [stdout]     --> src/search.rs:2667:13
[INFO] [stdout]      |
[INFO] [stdout] 2667 |         let original_fen = board.to_fen();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `undo`
[INFO] [stdout]    --> src/engine.rs:544:17
[INFO] [stdout]     |
[INFO] [stdout] 544 |             let undo = board.make_move(&result.best_move);
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/perft.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let mut board = Board::from_fen("8/2p5/3p4/KP5r/1R2Pp1k/8/6P1/8 b - e3 0 1");
[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/perft.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |         let mut board2 = Board::from_fen("8/2p5/3p4/KP5r/1R3pPk/8/4P3/8 b - g3 0 1");
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[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 `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_algebraic` and `to_algebraic_pgn` are never used
[INFO] [stdout]    --> src/types.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl Piece {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 193 |     pub fn from_algebraic(piece: char, position: &str) -> Piece {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 270 |     pub fn to_algebraic_pgn(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ThreefoldRepetition`, `FiftyMoveRule`, and `InsufficientMaterial` are never constructed
[INFO] [stdout]    --> src/types.rs:292:5
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub enum Status {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 292 |     ThreefoldRepetition,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 293 |     FiftyMoveRule,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 294 |     InsufficientMaterial,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Status` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_castle` is never used
[INFO] [stdout]    --> src/types.rs:310:12
[INFO] [stdout]     |
[INFO] [stdout] 309 | impl MoveFlag {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] 310 |     pub fn is_castle(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `from_algebraic` are never used
[INFO] [stdout]    --> src/types.rs:329:12
[INFO] [stdout]     |
[INFO] [stdout] 328 | impl Move {
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] 329 |     pub fn new(piece: Piece, to: Position, captured: Option<Piece>) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn from_algebraic(board: &Board, from_str: &str, to_str: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysFromPosition` is never constructed
[INFO] [stdout]    --> src/types.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub struct RaysFromPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_from_position` is never used
[INFO] [stdout]    --> src/types.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl RaysFromPosition {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 456 |     pub fn new_from_position(pos: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysForBoard` is never constructed
[INFO] [stdout]    --> src/types.rs:520:12
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub struct RaysForBoard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/types.rs:525:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl RaysForBoard {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 525 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NullMoveUndo` is never constructed
[INFO] [stdout]    --> src/types.rs:582:12
[INFO] [stdout]     |
[INFO] [stdout] 582 | pub struct NullMoveUndo {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MoveType` is never used
[INFO] [stdout]    --> src/types.rs:596:10
[INFO] [stdout]     |
[INFO] [stdout] 596 | pub enum MoveType {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `is_capture`, `is_promotion`, `promotion_piece_type`, and `from_u8` are never used
[INFO] [stdout]    --> src/types.rs:616:12
[INFO] [stdout]     |
[INFO] [stdout] 614 | impl MoveType {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 615 |     #[inline(always)]
[INFO] [stdout] 616 |     pub fn is_capture(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 629 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 634 |     pub fn promotion_piece_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 645 |     fn from_u8(val: u8) -> Self {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompactMove` is never constructed
[INFO] [stdout]    --> src/types.rs:679:12
[INFO] [stdout]     |
[INFO] [stdout] 679 | pub struct CompactMove(u32);
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/types.rs:683:15
[INFO] [stdout]     |
[INFO] [stdout] 681 | impl CompactMove {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 682 |     /// A null/invalid move (used as sentinel)
[INFO] [stdout] 683 |     pub const NONE: Self = Self(0xFFFFFFFF);
[INFO] [stdout]     |               ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 686 |     const FROM_MASK: u32 = 0x3F;         // bits 0-5
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 687 |     const TO_SHIFT: u32 = 6;
[INFO] [stdout]     |           ^^^^^^^^
[INFO] [stdout] 688 |     const TO_MASK: u32 = 0x3F << 6;      // bits 6-11
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 689 |     const TYPE_SHIFT: u32 = 12;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 690 |     const TYPE_MASK: u32 = 0xF << 12;    // bits 12-15
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 691 |     const PIECE_SHIFT: u32 = 16;
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 692 |     const PIECE_MASK: u32 = 0x7 << 16;   // bits 16-18
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 693 |     const CAPTURED_SHIFT: u32 = 19;
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 694 |     const CAPTURED_MASK: u32 = 0x7 << 19; // bits 19-21
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 695 |     const NO_CAPTURE: u32 = 7;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 699 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 721 |     pub fn new_quiet(from_sq: u8, to_sq: u8, piece_type: PieceType) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 727 |     pub fn new_capture(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 738 |     pub fn from_sq(self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 744 |     pub fn to_sq(self) -> u8 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 750 |     pub fn move_type(self) -> MoveType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 756 |     pub fn piece_type(self) -> PieceType {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 769 |     pub fn is_capture(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn captured_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 793 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 799 |     pub fn promotion_type(self) -> Option<PieceType> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 805 |     pub fn is_castle(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 814 |     pub fn is_en_passant(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 820 |     pub fn pos_to_sq(pos: &Position) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 826 |     pub fn sq_to_pos(sq: u8) -> Position {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 834 |     pub fn from_move(mv: &Move) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 873 |     pub fn to_move(self, board: &Board) -> Move {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 943 |     pub fn to_uci(self) -> String {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TTFlag` is never used
[INFO] [stdout]  --> src/tt.rs:5:10
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub enum TTFlag {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TTEntry` is never constructed
[INFO] [stdout]   --> src/tt.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct TTEntry {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/tt.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl TTEntry {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 30 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TranspositionTable` is never constructed
[INFO] [stdout]   --> src/tt.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct TranspositionTable {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/tt.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  54 |     /// Create a new transposition table with approximately `size_mb` megabytes of memory
[INFO] [stdout]  55 |     pub fn new(size_mb: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     fn index(&self, hash: u64) -> usize {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn probe(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn get_best_move(&self, hash: u64) -> Option<CompactMove> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn store(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn fill_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn info(&self) -> String {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rays` is never read
[INFO] [stdout]   --> src/bitboard.rs:86:9
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct AttackTables {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub rays: [[u64; 64]; 8],
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rook_attacks`, `bishop_attacks`, `queen_attacks`, and `ray_attacks` are never used
[INFO] [stdout]    --> src/bitboard.rs:256:12
[INFO] [stdout]     |
[INFO] [stdout]  89 | impl AttackTables {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn rook_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn bishop_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn queen_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     fn ray_attacks(&self, sq: u8, occupied: u64, direction: usize) -> u64 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_MOVES` is never used
[INFO] [stdout]   --> src/movelist.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const MAX_MOVES: usize = 256;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveList` is never constructed
[INFO] [stdout]   --> src/movelist.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct MoveList {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/movelist.rs:33:18
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl MoveList {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub const fn new() -> Self {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn push(&mut self, mv: CompactMove) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn push_with_score(&mut self, mv: CompactMove, score: i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn get(&self, idx: usize) -> CompactMove {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn get_score(&self, idx: usize) -> i16 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn set_score(&mut self, idx: usize, score: i16) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn swap(&mut self, i: usize, j: usize) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn pick_best(&mut self, start: usize) -> CompactMove {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn retain<F: FnMut(CompactMove) -> bool>(&mut self, mut f: F) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn contains(&self, mv: CompactMove) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn sort_by_score(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn iter(&self) -> MoveListIter<'_> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveListIter` is never constructed
[INFO] [stdout]    --> src/movelist.rs:191:12
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub struct MoveListIter<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/board.rs:191:12
[INFO] [stdout]      |
[INFO] [stdout]   62 | impl Board {
[INFO] [stdout]      | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  191 |     pub fn from_fen_no_moves(fen_string: &str) -> Board {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  195 |     pub fn new() -> Board {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  298 |     pub fn get_material(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  304 |     pub fn get_pst_mg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  310 |     pub fn get_pst_eg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  360 |     pub fn piece_count(&self) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  366 |     pub fn piece_count_for_color(&self, color: Color) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  370 |     pub fn to_fen(&self) -> String {
[INFO] [stdout]      |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  440 |     pub fn to_fen_no_moves(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  459 |     pub fn piece_at_algebraic(&self, pos: &str) -> Option<&Piece> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  531 |     pub fn check_for_insufficient_material(&self) -> Option<Status> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  558 |     pub fn check_for_threefold_repetition(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  576 |     pub fn check_for_fifty_move_rule(&self) -> Option<Status> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1646 |     pub fn is_square_attacked_by(&self, pos: &Position, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1655 |     pub fn make_null_move(&mut self) -> NullMoveUndo {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1675 |     pub fn unmake_null_move(&mut self, undo: &NullMoveUndo) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1692 |     pub fn make_compact_move(&mut self, mv: &CompactMove) -> UndoInfo {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1701 |     pub fn is_legal_compact(&mut self, mv: &CompactMove) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1726 |     pub fn is_pseudo_legal_compact(&self, mv: &CompactMove) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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: multiple fields are never read
[INFO] [stdout]   --> src/evaluate.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Material {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 20 |     pub white_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     pub white_pst_mg: i32, // middlegame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub white_pst_eg: i32, // endgame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 23 |     pub white_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub white_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |
[INFO] [stdout] 26 |     pub black_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 27 |     pub black_pst_mg: i32, // middlegame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 28 |     pub black_pst_eg: i32, // endgame PST score
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 29 |     pub black_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub black_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub phase: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_material_difference`, `get_tapered_score`, `piece_to_phase`, and `compute_material` are never used
[INFO] [stdout]   --> src/evaluate.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Material {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn get_material_difference(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn get_tapered_score(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn piece_to_phase(piece_type: PieceType) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn compute_material(board: &Board) -> Material {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_type_to_index` is never used
[INFO] [stdout]    --> src/evaluate.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn piece_type_to_index(pt: PieceType) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_board_slow` is never used
[INFO] [stdout]    --> src/evaluate.rs:328:8
[INFO] [stdout]     |
[INFO] [stdout] 328 | pub fn evaluate_board_slow(board: &Board) -> i32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_piece_pst_value` is never used
[INFO] [stdout]    --> src/evaluate.rs:361:4
[INFO] [stdout]     |
[INFO] [stdout] 361 | fn get_piece_pst_value(piece: &Piece, is_endgame: bool) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Stage` is never used
[INFO] [stdout]   --> src/movepicker.rs:23:6
[INFO] [stdout]    |
[INFO] [stdout] 23 | enum Stage {
[INFO] [stdout]    |      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TT_MOVE_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const TT_MOVE_SCORE: i16 = 30000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GOOD_CAPTURE_BASE` is never used
[INFO] [stdout]   --> src/movepicker.rs:36:11
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub const GOOD_CAPTURE_BASE: i16 = 20000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER1_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const KILLER1_SCORE: i16 = 9000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER2_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const KILLER2_SCORE: i16 = 8000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MVV_VALUES` is never used
[INFO] [stdout]   --> src/movepicker.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const MVV_VALUES: [i16; 6] = [100, 500, 320, 330, 900, 0];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LVA_VALUES` is never used
[INFO] [stdout]   --> src/movepicker.rs:43:7
[INFO] [stdout]    |
[INFO] [stdout] 43 | const LVA_VALUES: [i16; 6] = [1, 5, 3, 3, 9, 10];
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovePicker` is never constructed
[INFO] [stdout]   --> src/movepicker.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct MovePicker {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/movepicker.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  69 | impl MovePicker {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn new_captures_only(color: Color) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub fn next_move(&mut self, board: &Board, history: &[[i16; 64]; 64]) -> Option<CompactMove> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn generate_captures(&mut self, board: &Board) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     fn generate_quiets(&mut self, board: &Board) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     fn score_captures(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     fn score_quiets(&mut self, history: &[[i16; 64]; 64]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mvv_lva_score` is never used
[INFO] [stdout]    --> src/movepicker.rs:256:4
[INFO] [stdout]     |
[INFO] [stdout] 256 | fn mvv_lva_score(mv: CompactMove) -> i16 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `piece_type_to_idx` is never used
[INFO] [stdout]    --> src/movepicker.rs:270:10
[INFO] [stdout]     |
[INFO] [stdout] 270 | const fn piece_type_to_idx(pt: PieceType) -> usize {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_PLY` is never used
[INFO] [stdout]   --> src/search.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub const MAX_PLY: usize = 64;
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchState` is never constructed
[INFO] [stdout]   --> src/search.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SearchState {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/search.rs:37:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl SearchState {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  37 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn store_killer(&mut self, ply: usize, mv: Move) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn is_killer(&self, ply: usize, mv: &Move) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn killer_priority(&self, ply: usize, mv: &Move) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn add_history_bonus(&mut self, color: Color, from: Position, to: Position, depth: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn get_history_score(&self, color: Color, from: Position, to: Position) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn age_history(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn store_killer_compact(&mut self, ply: usize, mv: CompactMove) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn get_killers_compact(&self, ply: usize) -> [Option<CompactMove>; 2] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn add_history_bonus_compact(&mut self, color: Color, mv: CompactMove, depth: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_history_compact(&self, color: Color) -> &[[i16; 64]; 64] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `position_to_square` is never used
[INFO] [stdout]    --> src/search.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn position_to_square(pos: Position) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchAborted` is never constructed
[INFO] [stdout]    --> src/search.rs:330:12
[INFO] [stdout]     |
[INFO] [stdout] 330 | pub struct SearchAborted;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchControl` is never constructed
[INFO] [stdout]    --> src/search.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub struct SearchControl {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `infinite`, `should_stop`, `exceeded_soft_limit`, `elapsed_ms`, and `signal_stop` are never used
[INFO] [stdout]    --> src/search.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | impl SearchControl {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 343 |     pub fn new(soft_limit_ms: u64, hard_limit_ms: u64) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn infinite() -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 366 |     pub fn should_stop(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn exceeded_soft_limit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn signal_stop(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `allocate_time` is never used
[INFO] [stdout]    --> src/search.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn allocate_time(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search` is never used
[INFO] [stdout]    --> src/search.rs:474:8
[INFO] [stdout]     |
[INFO] [stdout] 474 | pub fn search(max_depth: u8, board: &Board) -> Move {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_quiescence` is never used
[INFO] [stdout]    --> src/search.rs:495:8
[INFO] [stdout]     |
[INFO] [stdout] 495 | pub fn minimax_no_quiescence(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_ordering` is never used
[INFO] [stdout]    --> src/search.rs:500:8
[INFO] [stdout]     |
[INFO] [stdout] 500 | pub fn minimax_no_ordering(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_no_pruning` is never used
[INFO] [stdout]    --> src/search.rs:505:8
[INFO] [stdout]     |
[INFO] [stdout] 505 | pub fn minimax_no_pruning(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_with_tt` is never used
[INFO] [stdout]    --> src/search.rs:511:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub fn minimax_with_tt(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspiration_search_with_control` is never used
[INFO] [stdout]    --> src/search.rs:522:8
[INFO] [stdout]     |
[INFO] [stdout] 522 | pub fn aspiration_search_with_control(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_with_control` is never used
[INFO] [stdout]    --> src/search.rs:560:8
[INFO] [stdout]     |
[INFO] [stdout] 560 | pub fn negamax_with_control(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_with_tt_mut` is never used
[INFO] [stdout]    --> src/search.rs:782:4
[INFO] [stdout]     |
[INFO] [stdout] 782 | fn negamax_with_tt_mut(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only` is never used
[INFO] [stdout]     --> src/search.rs:1232:8
[INFO] [stdout]      |
[INFO] [stdout] 1232 | pub fn negamax_captures_only(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast` is never used
[INFO] [stdout]     --> src/search.rs:1333:8
[INFO] [stdout]      |
[INFO] [stdout] 1333 | pub fn negamax_fast(depth: i32, board: &Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1338:4
[INFO] [stdout]      |
[INFO] [stdout] 1338 | fn negamax_fast_mut(depth: i32, board: &mut Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast` is never used
[INFO] [stdout]     --> src/search.rs:1375:8
[INFO] [stdout]      |
[INFO] [stdout] 1375 | pub fn negamax_captures_only_fast(board: &Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1380:4
[INFO] [stdout]      |
[INFO] [stdout] 1380 | fn negamax_captures_only_fast_mut(board: &mut Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut_with_depth` is never used
[INFO] [stdout]     --> src/search.rs:1384:4
[INFO] [stdout]      |
[INFO] [stdout] 1384 | fn negamax_captures_only_fast_mut_with_depth(board: &mut Board, alpha: i32, beta: i32, depth_remaining: u8) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1440:8
[INFO] [stdout]      |
[INFO] [stdout] 1440 | pub fn negamax_movepicker(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quiescence_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1681:4
[INFO] [stdout]      |
[INFO] [stdout] 1681 | fn quiescence_movepicker(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterative_deepening_movepicker` is never used
[INFO] [stdout]     --> src/search.rs:1731:8
[INFO] [stdout]      |
[INFO] [stdout] 1731 | pub fn iterative_deepening_movepicker(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterative_deepening_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1780:8
[INFO] [stdout]      |
[INFO] [stdout] 1780 | pub fn iterative_deepening_movepicker_with_control(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aspiration_search_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1855:8
[INFO] [stdout]      |
[INFO] [stdout] 1855 | pub fn aspiration_search_movepicker_with_control(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1902:4
[INFO] [stdout]      |
[INFO] [stdout] 1902 | fn negamax_movepicker_with_control(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_from_fen_silent` and `new_silent` are never used
[INFO] [stdout]   --> src/game.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Game {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn new_from_fen_silent(max_depth: u8, start_fen: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn new_silent(max_depth: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompactMoveGenerator` is never constructed
[INFO] [stdout]    --> src/movegen.rs:688:12
[INFO] [stdout]     |
[INFO] [stdout] 688 | pub struct CompactMoveGenerator<'a> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/movegen.rs:695:12
[INFO] [stdout]      |
[INFO] [stdout]  693 | impl<'a> CompactMoveGenerator<'a> {
[INFO] [stdout]      | --------------------------------- associated items in this implementation
[INFO] [stdout]  694 |     #[inline(always)]
[INFO] [stdout]  695 |     pub fn new(board: &'a Board, color: Color) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  701 |     pub fn generate_all(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  716 |     pub fn generate_captures(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  730 |     pub fn generate_quiets(&self, list: &mut MoveList) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  747 |     fn generate_knight_moves(&self, list: &mut MoveList, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  773 |     fn generate_knight_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  794 |     fn generate_knight_quiets(&self, list: &mut MoveList, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  813 |     fn generate_king_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  844 |     fn generate_king_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  867 |     fn generate_king_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  887 |     fn generate_castling(&self, list: &mut MoveList, occupied: u64, king_sq: u8) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1000 |     fn generate_rook_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1026 |     fn generate_rook_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1047 |     fn generate_rook_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1066 |     fn generate_bishop_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1092 |     fn generate_bishop_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1113 |     fn generate_bishop_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1132 |     fn generate_queen_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1158 |     fn generate_queen_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1179 |     fn generate_queen_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1198 |     fn generate_pawn_moves(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1204 |     fn generate_pawn_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1277 |     fn generate_pawn_quiets(&self, list: &mut MoveList, occupied: u64) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1353 |     fn captured_piece_type(&self, sq: u8, enemy: u64) -> Option<PieceType> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/evaluate.rs:295:9
[INFO] [stdout]     |
[INFO] [stdout] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stdout]    --> src/evaluate.rs:299:9
[INFO] [stdout]     |
[INFO] [stdout] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `initial_fen`
[INFO] [stdout]     --> src/search.rs:1534:9
[INFO] [stdout]      |
[INFO] [stdout] 1534 |     let initial_fen = board.to_fen();
[INFO] [stdout]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `eval`
[INFO] [stdout]     --> src/search.rs:2190:13
[INFO] [stdout]      |
[INFO] [stdout] 2190 |         let eval = search_result.best_score;
[INFO] [stdout]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_eval`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/search.rs:2666:13
[INFO] [stdout]      |
[INFO] [stdout] 2666 |         let mut board = Board::new();
[INFO] [stdout]      |             ----^^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_fen`
[INFO] [stdout]     --> src/search.rs:2667:13
[INFO] [stdout]      |
[INFO] [stdout] 2667 |         let original_fen = board.to_fen();
[INFO] [stdout]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_fen`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ThreefoldRepetition` is never constructed
[INFO] [stdout]    --> src/types.rs:292:5
[INFO] [stdout]     |
[INFO] [stdout] 289 | pub enum Status {
[INFO] [stdout]     |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 292 |     ThreefoldRepetition,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Status` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysFromPosition` is never constructed
[INFO] [stdout]    --> src/types.rs:444:12
[INFO] [stdout]     |
[INFO] [stdout] 444 | pub struct RaysFromPosition {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_from_position` is never used
[INFO] [stdout]    --> src/types.rs:456:12
[INFO] [stdout]     |
[INFO] [stdout] 455 | impl RaysFromPosition {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 456 |     pub fn new_from_position(pos: Position) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RaysForBoard` is never constructed
[INFO] [stdout]    --> src/types.rs:520:12
[INFO] [stdout]     |
[INFO] [stdout] 520 | pub struct RaysForBoard {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/types.rs:525:12
[INFO] [stdout]     |
[INFO] [stdout] 524 | impl RaysForBoard {
[INFO] [stdout]     | ----------------- associated function in this implementation
[INFO] [stdout] 525 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_promotion` is never used
[INFO] [stdout]    --> src/types.rs:629:12
[INFO] [stdout]     |
[INFO] [stdout] 614 | impl MoveType {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 629 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_promotion` is never used
[INFO] [stdout]    --> src/types.rs:793:12
[INFO] [stdout]     |
[INFO] [stdout] 681 | impl CompactMove {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 793 |     pub fn is_promotion(self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fill_rate` and `info` are never used
[INFO] [stdout]    --> src/tt.rs:178:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl TranspositionTable {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub fn fill_rate(&self) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn info(&self) -> String {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `contains` and `sort_by_score` are never used
[INFO] [stdout]    --> src/movelist.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl MoveList {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn contains(&self, mv: CompactMove) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn sort_by_score(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/board.rs:191:12
[INFO] [stdout]      |
[INFO] [stdout]   62 | impl Board {
[INFO] [stdout]      | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  191 |     pub fn from_fen_no_moves(fen_string: &str) -> Board {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  298 |     pub fn get_material(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  304 |     pub fn get_pst_mg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  310 |     pub fn get_pst_eg(&self, color: Color) -> i32 {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  366 |     pub fn piece_count_for_color(&self, color: Color) -> u32 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  440 |     pub fn to_fen_no_moves(&self) -> String {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  459 |     pub fn piece_at_algebraic(&self, pos: &str) -> Option<&Piece> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  558 |     pub fn check_for_threefold_repetition(
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1646 |     pub fn is_square_attacked_by(&self, pos: &Position, color: Color) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `learn` is never read
[INFO] [stdout]   --> src/book.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | struct PolyglotEntry {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PolyglotEntry` 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: fields `white_pawn_material`, `white_piece_material`, `black_pawn_material`, and `black_piece_material` are never read
[INFO] [stdout]   --> src/evaluate.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Material {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub white_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub white_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub black_pawn_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     pub black_piece_material: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_material_difference` is never used
[INFO] [stdout]   --> src/evaluate.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl Material {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 37 |     pub fn get_material_difference(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `opposite_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:140:4
[INFO] [stdout]     |
[INFO] [stdout] 140 | fn opposite_color(color: Color) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_king_activity` is never used
[INFO] [stdout]    --> src/evaluate.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `king_centralization_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns` is never used
[INFO] [stdout]    --> src/evaluate.rs:171:4
[INFO] [stdout]     |
[INFO] [stdout] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_passed_pawn` is never used
[INFO] [stdout]    --> src/evaluate.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `passed_pawn_bonus` is never used
[INFO] [stdout]    --> src/evaluate.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stdout]    --> src/evaluate.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stdout]    --> src/evaluate.rs:254:4
[INFO] [stdout]     |
[INFO] [stdout] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TT_MOVE_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:35:11
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub const TT_MOVE_SCORE: i16 = 30000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER1_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:37:11
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub const KILLER1_SCORE: i16 = 9000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `KILLER2_SCORE` is never used
[INFO] [stdout]   --> src/movepicker.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub const KILLER2_SCORE: i16 = 8000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `killer_moves` is never read
[INFO] [stdout]   --> src/search.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct SearchState {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub killer_moves: [[Option<Move>; 2]; MAX_PLY],
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `store_killer`, `is_killer`, `killer_priority`, `add_history_bonus`, and `get_history_score` are never used
[INFO] [stdout]   --> src/search.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl SearchState {
[INFO] [stdout]    | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn store_killer(&mut self, ply: usize, mv: Move) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn is_killer(&self, ply: usize, mv: &Move) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn killer_priority(&self, ply: usize, mv: &Move) -> Option<usize> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn add_history_bonus(&mut self, color: Color, from: Position, to: Position, depth: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     pub fn get_history_score(&self, color: Color, from: Position, to: Position) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `position_to_square` is never used
[INFO] [stdout]    --> src/search.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn position_to_square(pos: Position) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `soft_limit_ms` is never read
[INFO] [stdout]    --> src/search.rs:336:9
[INFO] [stdout]     |
[INFO] [stdout] 334 | pub struct SearchControl {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 335 |     pub start_time: Instant,
[INFO] [stdout] 336 |     pub soft_limit_ms: u64,  // Target time - can extend slightly if finding good move
[INFO] [stdout]     |         ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SearchControl` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `exceeded_soft_limit`, `elapsed_ms`, and `signal_stop` are never used
[INFO] [stdout]    --> src/search.rs:384:12
[INFO] [stdout]     |
[INFO] [stdout] 342 | impl SearchControl {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn exceeded_soft_limit(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 389 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 394 |     pub fn signal_stop(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `allocate_time` is never used
[INFO] [stdout]    --> src/search.rs:407:8
[INFO] [stdout]     |
[INFO] [stdout] 407 | pub fn allocate_time(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minimax_with_tt` is never used
[INFO] [stdout]    --> src/search.rs:511:8
[INFO] [stdout]     |
[INFO] [stdout] 511 | pub fn minimax_with_tt(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_with_tt_mut` is never used
[INFO] [stdout]    --> src/search.rs:782:4
[INFO] [stdout]     |
[INFO] [stdout] 782 | fn negamax_with_tt_mut(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only` is never used
[INFO] [stdout]     --> src/search.rs:1232:8
[INFO] [stdout]      |
[INFO] [stdout] 1232 | pub fn negamax_captures_only(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast` is never used
[INFO] [stdout]     --> src/search.rs:1333:8
[INFO] [stdout]      |
[INFO] [stdout] 1333 | pub fn negamax_fast(depth: i32, board: &Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1338:4
[INFO] [stdout]      |
[INFO] [stdout] 1338 | fn negamax_fast_mut(depth: i32, board: &mut Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast` is never used
[INFO] [stdout]     --> src/search.rs:1375:8
[INFO] [stdout]      |
[INFO] [stdout] 1375 | pub fn negamax_captures_only_fast(board: &Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut` is never used
[INFO] [stdout]     --> src/search.rs:1380:4
[INFO] [stdout]      |
[INFO] [stdout] 1380 | fn negamax_captures_only_fast_mut(board: &mut Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `negamax_captures_only_fast_mut_with_depth` is never used
[INFO] [stdout]     --> src/search.rs:1384:4
[INFO] [stdout]      |
[INFO] [stdout] 1384 | fn negamax_captures_only_fast_mut_with_depth(board: &mut Board, alpha: i32, beta: i32, depth_remaining: u8) -> i32 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `iterative_deepening_movepicker_with_control` is never used
[INFO] [stdout]     --> src/search.rs:1780:8
[INFO] [stdout]      |
[INFO] [stdout] 1780 | pub fn iterative_deepening_movepicker_with_control(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_from_fen_silent` and `new_silent` are never used
[INFO] [stdout]   --> src/game.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Game {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn new_from_fen_silent(max_depth: u8, start_fen: String) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn new_silent(max_depth: u8) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 35.49s
[INFO] running `Command { std: "docker" "inspect" "7f49d80e31f748db80959ce83bb8eaf755d36d7b5e3051def4b190d08e192857", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7f49d80e31f748db80959ce83bb8eaf755d36d7b5e3051def4b190d08e192857", kill_on_drop: false }`
[INFO] [stdout] 7f49d80e31f748db80959ce83bb8eaf755d36d7b5e3051def4b190d08e192857
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 0f7c4581f6aaf20d4663582c8b06844e8400666d34321e920592fe83234e52fd
[INFO] running `Command { std: "docker" "start" "-a" "0f7c4581f6aaf20d4663582c8b06844e8400666d34321e920592fe83234e52fd", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `MoveType`
[INFO] [stderr]   --> src/movepicker.rs:19:40
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[INFO] [stderr]    |                                        ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `MoveType`
[INFO] [stderr]   --> src/search.rs:12:56
[INFO] [stderr]    |
[INFO] [stderr] 12 | use crate::types::{Color, CompactMove, Move, MoveFlag, MoveType, PieceType, Position, Status};
[INFO] [stderr]    |                                                        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Color`
[INFO] [stderr]   --> src/engine.rs:18:20
[INFO] [stderr]    |
[INFO] [stderr] 18 | use crate::types::{Color, CompactMove, Move};
[INFO] [stderr]    |                    ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/evaluate.rs:295:9
[INFO] [stderr]     |
[INFO] [stderr] 295 |     let mut unsigned_score = board.get_tapered_score();
[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: `endgame_weight`
[INFO] [stderr]    --> src/evaluate.rs:299:9
[INFO] [stderr]     |
[INFO] [stderr] 299 |     let endgame_weight = (MAX_PHASE - phase).max(0);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_endgame_weight`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `initial_fen`
[INFO] [stderr]     --> src/search.rs:1534:9
[INFO] [stderr]      |
[INFO] [stderr] 1534 |     let initial_fen = board.to_fen();
[INFO] [stderr]      |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_fen`
[INFO] [stderr] 
[INFO] [stderr] warning: function `opposite_color` is never used
[INFO] [stderr]    --> src/evaluate.rs:140:4
[INFO] [stderr]     |
[INFO] [stderr] 140 | fn opposite_color(color: Color) -> Color {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_king_activity` is never used
[INFO] [stderr]    --> src/evaluate.rs:148:4
[INFO] [stderr]     |
[INFO] [stderr] 148 | fn evaluate_king_activity(board: &Board) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `king_centralization_bonus` is never used
[INFO] [stderr]    --> src/evaluate.rs:160:4
[INFO] [stderr]     |
[INFO] [stderr] 160 | fn king_centralization_bonus(pos: &crate::types::Position) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_passed_pawns` is never used
[INFO] [stderr]    --> src/evaluate.rs:171:4
[INFO] [stderr]     |
[INFO] [stderr] 171 | fn evaluate_passed_pawns(board: &Board) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_passed_pawns_for_color` is never used
[INFO] [stderr]    --> src/evaluate.rs:178:4
[INFO] [stderr]     |
[INFO] [stderr] 178 | fn evaluate_passed_pawns_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `is_passed_pawn` is never used
[INFO] [stderr]    --> src/evaluate.rs:199:4
[INFO] [stderr]     |
[INFO] [stderr] 199 | fn is_passed_pawn(rank: u8, file: u8, color: Color, enemy_pawns: u64) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `passed_pawn_bonus` is never used
[INFO] [stderr]    --> src/evaluate.rs:230:4
[INFO] [stderr]     |
[INFO] [stderr] 230 | fn passed_pawn_bonus(rank: u8, color: Color) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_unstoppable_passers` is never used
[INFO] [stderr]    --> src/evaluate.rs:247:4
[INFO] [stderr]     |
[INFO] [stderr] 247 | fn evaluate_unstoppable_passers(board: &Board) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `detect_unstoppable_for_color` is never used
[INFO] [stderr]    --> src/evaluate.rs:254:4
[INFO] [stderr]     |
[INFO] [stderr] 254 | fn detect_unstoppable_for_color(board: &Board, color: Color) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `learn` is never read
[INFO] [stderr]   --> src/book.rs:32:5
[INFO] [stderr]    |
[INFO] [stderr] 28 | struct PolyglotEntry {
[INFO] [stderr]    |        ------------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 32 |     learn: u32,    // Learning value (unused)
[INFO] [stderr]    |     ^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `PolyglotEntry` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_perft_expected_node_count` is never used
[INFO] [stderr]   --> src/perft.rs:70:4
[INFO] [stderr]    |
[INFO] [stderr] 70 | fn get_perft_expected_node_count(depth: u8) -> u64 {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_chess` (lib) generated 17 warnings (run `cargo fix --lib -p rust_chess` to apply 6 suggestions)
[INFO] [stderr] warning: associated items `from_algebraic` and `to_algebraic_pgn` are never used
[INFO] [stderr]    --> src/types.rs:193:12
[INFO] [stderr]     |
[INFO] [stderr] 192 | impl Piece {
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr] 193 |     pub fn from_algebraic(piece: char, position: &str) -> Piece {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 270 |     pub fn to_algebraic_pgn(&self) -> String {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variants `ThreefoldRepetition`, `FiftyMoveRule`, and `InsufficientMaterial` are never constructed
[INFO] [stderr]    --> src/types.rs:292:5
[INFO] [stderr]     |
[INFO] [stderr] 289 | pub enum Status {
[INFO] [stderr]     |          ------ variants in this enum
[INFO] [stderr] ...
[INFO] [stderr] 292 |     ThreefoldRepetition,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 293 |     FiftyMoveRule,
[INFO] [stderr]     |     ^^^^^^^^^^^^^
[INFO] [stderr] 294 |     InsufficientMaterial,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Status` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_castle` is never used
[INFO] [stderr]    --> src/types.rs:310:12
[INFO] [stderr]     |
[INFO] [stderr] 309 | impl MoveFlag {
[INFO] [stderr]     | ------------- method in this implementation
[INFO] [stderr] 310 |     pub fn is_castle(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `new` and `from_algebraic` are never used
[INFO] [stderr]    --> src/types.rs:329:12
[INFO] [stderr]     |
[INFO] [stderr] 328 | impl Move {
[INFO] [stderr]     | --------- associated functions in this implementation
[INFO] [stderr] 329 |     pub fn new(piece: Piece, to: Position, captured: Option<Piece>) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 394 |     pub fn from_algebraic(board: &Board, from_str: &str, to_str: &str) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RaysFromPosition` is never constructed
[INFO] [stderr]    --> src/types.rs:444:12
[INFO] [stderr]     |
[INFO] [stderr] 444 | pub struct RaysFromPosition {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new_from_position` is never used
[INFO] [stderr]    --> src/types.rs:456:12
[INFO] [stderr]     |
[INFO] [stderr] 455 | impl RaysFromPosition {
[INFO] [stderr]     | --------------------- associated function in this implementation
[INFO] [stderr] 456 |     pub fn new_from_position(pos: Position) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `RaysForBoard` is never constructed
[INFO] [stderr]    --> src/types.rs:520:12
[INFO] [stderr]     |
[INFO] [stderr] 520 | pub struct RaysForBoard {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `new` is never used
[INFO] [stderr]    --> src/types.rs:525:12
[INFO] [stderr]     |
[INFO] [stderr] 524 | impl RaysForBoard {
[INFO] [stderr]     | ----------------- associated function in this implementation
[INFO] [stderr] 525 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `NullMoveUndo` is never constructed
[INFO] [stderr]    --> src/types.rs:582:12
[INFO] [stderr]     |
[INFO] [stderr] 582 | pub struct NullMoveUndo {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `MoveType` is never used
[INFO] [stderr]    --> src/types.rs:596:10
[INFO] [stderr]     |
[INFO] [stderr] 596 | pub enum MoveType {
[INFO] [stderr]     |          ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `is_capture`, `is_promotion`, `promotion_piece_type`, and `from_u8` are never used
[INFO] [stderr]    --> src/types.rs:616:12
[INFO] [stderr]     |
[INFO] [stderr] 614 | impl MoveType {
[INFO] [stderr]     | ------------- associated items in this implementation
[INFO] [stderr] 615 |     #[inline(always)]
[INFO] [stderr] 616 |     pub fn is_capture(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 629 |     pub fn is_promotion(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 634 |     pub fn promotion_piece_type(self) -> Option<PieceType> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 645 |     fn from_u8(val: u8) -> Self {
[INFO] [stderr]     |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CompactMove` is never constructed
[INFO] [stderr]    --> src/types.rs:679:12
[INFO] [stderr]     |
[INFO] [stderr] 679 | pub struct CompactMove(u32);
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/types.rs:683:15
[INFO] [stderr]     |
[INFO] [stderr] 681 | impl CompactMove {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr] 682 |     /// A null/invalid move (used as sentinel)
[INFO] [stderr] 683 |     pub const NONE: Self = Self(0xFFFFFFFF);
[INFO] [stderr]     |               ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 686 |     const FROM_MASK: u32 = 0x3F;         // bits 0-5
[INFO] [stderr]     |           ^^^^^^^^^
[INFO] [stderr] 687 |     const TO_SHIFT: u32 = 6;
[INFO] [stderr]     |           ^^^^^^^^
[INFO] [stderr] 688 |     const TO_MASK: u32 = 0x3F << 6;      // bits 6-11
[INFO] [stderr]     |           ^^^^^^^
[INFO] [stderr] 689 |     const TYPE_SHIFT: u32 = 12;
[INFO] [stderr]     |           ^^^^^^^^^^
[INFO] [stderr] 690 |     const TYPE_MASK: u32 = 0xF << 12;    // bits 12-15
[INFO] [stderr]     |           ^^^^^^^^^
[INFO] [stderr] 691 |     const PIECE_SHIFT: u32 = 16;
[INFO] [stderr]     |           ^^^^^^^^^^^
[INFO] [stderr] 692 |     const PIECE_MASK: u32 = 0x7 << 16;   // bits 16-18
[INFO] [stderr]     |           ^^^^^^^^^^
[INFO] [stderr] 693 |     const CAPTURED_SHIFT: u32 = 19;
[INFO] [stderr]     |           ^^^^^^^^^^^^^^
[INFO] [stderr] 694 |     const CAPTURED_MASK: u32 = 0x7 << 19; // bits 19-21
[INFO] [stderr]     |           ^^^^^^^^^^^^^
[INFO] [stderr] 695 |     const NO_CAPTURE: u32 = 7;
[INFO] [stderr]     |           ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 699 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 721 |     pub fn new_quiet(from_sq: u8, to_sq: u8, piece_type: PieceType) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 727 |     pub fn new_capture(
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 738 |     pub fn from_sq(self) -> u8 {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 744 |     pub fn to_sq(self) -> u8 {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 750 |     pub fn move_type(self) -> MoveType {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 756 |     pub fn piece_type(self) -> PieceType {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 769 |     pub fn is_capture(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 775 |     pub fn captured_type(self) -> Option<PieceType> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 793 |     pub fn is_promotion(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 799 |     pub fn promotion_type(self) -> Option<PieceType> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 805 |     pub fn is_castle(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 814 |     pub fn is_en_passant(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 820 |     pub fn pos_to_sq(pos: &Position) -> u8 {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 826 |     pub fn sq_to_pos(sq: u8) -> Position {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 834 |     pub fn from_move(mv: &Move) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 873 |     pub fn to_move(self, board: &Board) -> Move {
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 943 |     pub fn to_uci(self) -> String {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `TTFlag` is never used
[INFO] [stderr]  --> src/tt.rs:5:10
[INFO] [stderr]   |
[INFO] [stderr] 5 | pub enum TTFlag {
[INFO] [stderr]   |          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TTEntry` is never constructed
[INFO] [stderr]   --> src/tt.rs:16:12
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub struct TTEntry {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function `empty` is never used
[INFO] [stderr]   --> src/tt.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 29 | impl TTEntry {
[INFO] [stderr]    | ------------ associated function in this implementation
[INFO] [stderr] 30 |     pub fn empty() -> Self {
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `TranspositionTable` is never constructed
[INFO] [stderr]   --> src/tt.rs:42:12
[INFO] [stderr]    |
[INFO] [stderr] 42 | pub struct TranspositionTable {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/tt.rs:55:12
[INFO] [stderr]     |
[INFO] [stderr]  53 | impl TranspositionTable {
[INFO] [stderr]     | ----------------------- associated items in this implementation
[INFO] [stderr]  54 |     /// Create a new transposition table with approximately `size_mb` megabytes of memory
[INFO] [stderr]  55 |     pub fn new(size_mb: usize) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  76 |     fn index(&self, hash: u64) -> usize {
[INFO] [stderr]     |        ^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  82 |     pub fn probe(
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 125 |     pub fn get_best_move(&self, hash: u64) -> Option<CompactMove> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub fn store(
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 168 |     pub fn clear(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 178 |     pub fn fill_rate(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub fn info(&self) -> String {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `rays` is never read
[INFO] [stderr]   --> src/bitboard.rs:86:9
[INFO] [stderr]    |
[INFO] [stderr] 77 | pub struct AttackTables {
[INFO] [stderr]    |            ------------ field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 86 |     pub rays: [[u64; 64]; 8],
[INFO] [stderr]    |         ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `rook_attacks`, `bishop_attacks`, `queen_attacks`, and `ray_attacks` are never used
[INFO] [stderr]    --> src/bitboard.rs:256:12
[INFO] [stderr]     |
[INFO] [stderr]  89 | impl AttackTables {
[INFO] [stderr]     | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 256 |     pub fn rook_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 265 |     pub fn bishop_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 274 |     pub fn queen_attacks(&self, sq: u8, occupied: u64) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 283 |     fn ray_attacks(&self, sq: u8, occupied: u64, direction: usize) -> u64 {
[INFO] [stderr]     |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_MOVES` is never used
[INFO] [stderr]   --> src/movelist.rs:11:11
[INFO] [stderr]    |
[INFO] [stderr] 11 | pub const MAX_MOVES: usize = 256;
[INFO] [stderr]    |           ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MoveList` is never constructed
[INFO] [stderr]   --> src/movelist.rs:24:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub struct MoveList {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/movelist.rs:33:18
[INFO] [stderr]     |
[INFO] [stderr]  30 | impl MoveList {
[INFO] [stderr]     | ------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  33 |     pub const fn new() -> Self {
[INFO] [stderr]     |                  ^^^
[INFO] [stderr] ...
[INFO] [stderr]  43 |     pub fn push(&mut self, mv: CompactMove) {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr]  51 |     pub fn push_with_score(&mut self, mv: CompactMove, score: i16) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  60 |     pub fn len(&self) -> usize {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  66 |     pub fn is_empty(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  73 |     pub fn get(&self, idx: usize) -> CompactMove {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  80 |     pub fn get_score(&self, idx: usize) -> i16 {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  87 |     pub fn set_score(&mut self, idx: usize, score: i16) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  94 |     pub fn swap(&mut self, i: usize, j: usize) {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub fn clear(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 109 |     pub fn pick_best(&mut self, start: usize) -> CompactMove {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 132 |     pub fn retain<F: FnMut(CompactMove) -> bool>(&mut self, mut f: F) {
[INFO] [stderr]     |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub fn contains(&self, mv: CompactMove) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub fn sort_by_score(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn iter(&self) -> MoveListIter<'_> {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MoveListIter` is never constructed
[INFO] [stderr]    --> src/movelist.rs:191:12
[INFO] [stderr]     |
[INFO] [stderr] 191 | pub struct MoveListIter<'a> {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/board.rs:191:12
[INFO] [stderr]      |
[INFO] [stderr]   62 | impl Board {
[INFO] [stderr]      | ---------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  191 |     pub fn from_fen_no_moves(fen_string: &str) -> Board {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  195 |     pub fn new() -> Board {
[INFO] [stderr]      |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  298 |     pub fn get_material(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  304 |     pub fn get_pst_mg(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  310 |     pub fn get_pst_eg(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  360 |     pub fn piece_count(&self) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  366 |     pub fn piece_count_for_color(&self, color: Color) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  370 |     pub fn to_fen(&self) -> String {
[INFO] [stderr]      |            ^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  440 |     pub fn to_fen_no_moves(&self) -> String {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  459 |     pub fn piece_at_algebraic(&self, pos: &str) -> Option<&Piece> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  531 |     pub fn check_for_insufficient_material(&self) -> Option<Status> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  558 |     pub fn check_for_threefold_repetition(
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  576 |     pub fn check_for_fifty_move_rule(&self) -> Option<Status> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1646 |     pub fn is_square_attacked_by(&self, pos: &Position, color: Color) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1655 |     pub fn make_null_move(&mut self) -> NullMoveUndo {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1675 |     pub fn unmake_null_move(&mut self, undo: &NullMoveUndo) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1692 |     pub fn make_compact_move(&mut self, mv: &CompactMove) -> UndoInfo {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1701 |     pub fn is_legal_compact(&mut self, mv: &CompactMove) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1726 |     pub fn is_pseudo_legal_compact(&self, mv: &CompactMove) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple fields are never read
[INFO] [stderr]   --> src/evaluate.rs:20:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct Material {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] 20 |     pub white_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 21 |     pub white_pst_mg: i32, // middlegame PST score
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 22 |     pub white_pst_eg: i32, // endgame PST score
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 23 |     pub white_pawn_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 24 |     pub white_piece_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 25 |
[INFO] [stderr] 26 |     pub black_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 27 |     pub black_pst_mg: i32, // middlegame PST score
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 28 |     pub black_pst_eg: i32, // endgame PST score
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 29 |     pub black_pawn_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 30 |     pub black_piece_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 33 |     pub phase: i32,
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `get_material_difference`, `get_tapered_score`, `piece_to_phase`, and `compute_material` are never used
[INFO] [stderr]   --> src/evaluate.rs:37:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl Material {
[INFO] [stderr]    | ------------- associated items in this implementation
[INFO] [stderr] 37 |     pub fn get_material_difference(&self) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 42 |     pub fn get_tapered_score(&self) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 65 |     pub fn piece_to_phase(piece_type: PieceType) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 69 |     pub fn compute_material(board: &Board) -> Material {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `piece_type_to_index` is never used
[INFO] [stderr]    --> src/evaluate.rs:127:4
[INFO] [stderr]     |
[INFO] [stderr] 127 | fn piece_type_to_index(pt: PieceType) -> usize {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `opposite_color` is never used
[INFO] [stderr]    --> src/evaluate.rs:140:4
[INFO] [stderr]     |
[INFO] [stderr] 140 | fn opposite_color(color: Color) -> Color {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_board_slow` is never used
[INFO] [stderr]    --> src/evaluate.rs:328:8
[INFO] [stderr]     |
[INFO] [stderr] 328 | pub fn evaluate_board_slow(board: &Board) -> i32 {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_piece_pst_value` is never used
[INFO] [stderr]    --> src/evaluate.rs:361:4
[INFO] [stderr]     |
[INFO] [stderr] 361 | fn get_piece_pst_value(piece: &Piece, is_endgame: bool) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Stage` is never used
[INFO] [stderr]   --> src/movepicker.rs:23:6
[INFO] [stderr]    |
[INFO] [stderr] 23 | enum Stage {
[INFO] [stderr]    |      ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `TT_MOVE_SCORE` is never used
[INFO] [stderr]   --> src/movepicker.rs:35:11
[INFO] [stderr]    |
[INFO] [stderr] 35 | pub const TT_MOVE_SCORE: i16 = 30000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `GOOD_CAPTURE_BASE` is never used
[INFO] [stderr]   --> src/movepicker.rs:36:11
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub const GOOD_CAPTURE_BASE: i16 = 20000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `KILLER1_SCORE` is never used
[INFO] [stderr]   --> src/movepicker.rs:37:11
[INFO] [stderr]    |
[INFO] [stderr] 37 | pub const KILLER1_SCORE: i16 = 9000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `KILLER2_SCORE` is never used
[INFO] [stderr]   --> src/movepicker.rs:38:11
[INFO] [stderr]    |
[INFO] [stderr] 38 | pub const KILLER2_SCORE: i16 = 8000;
[INFO] [stderr]    |           ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MVV_VALUES` is never used
[INFO] [stderr]   --> src/movepicker.rs:42:7
[INFO] [stderr]    |
[INFO] [stderr] 42 | const MVV_VALUES: [i16; 6] = [100, 500, 320, 330, 900, 0];
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `LVA_VALUES` is never used
[INFO] [stderr]   --> src/movepicker.rs:43:7
[INFO] [stderr]    |
[INFO] [stderr] 43 | const LVA_VALUES: [i16; 6] = [1, 5, 3, 3, 9, 10];
[INFO] [stderr]    |       ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `MovePicker` is never constructed
[INFO] [stderr]   --> src/movepicker.rs:47:12
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub struct MovePicker {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/movepicker.rs:77:12
[INFO] [stderr]     |
[INFO] [stderr]  69 | impl MovePicker {
[INFO] [stderr]     | --------------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  77 |     pub fn new(
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 100 |     pub fn new_captures_only(color: Color) -> Self {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 119 |     pub fn next_move(&mut self, board: &Board, history: &[[i16; 64]; 64]) -> Option<CompactMove> {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 214 |     fn generate_captures(&mut self, board: &Board) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 222 |     fn generate_quiets(&mut self, board: &Board) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 231 |     fn score_captures(&mut self) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 241 |     fn score_quiets(&mut self, history: &[[i16; 64]; 64]) {
[INFO] [stderr]     |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `mvv_lva_score` is never used
[INFO] [stderr]    --> src/movepicker.rs:256:4
[INFO] [stderr]     |
[INFO] [stderr] 256 | fn mvv_lva_score(mv: CompactMove) -> i16 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `piece_type_to_idx` is never used
[INFO] [stderr]    --> src/movepicker.rs:270:10
[INFO] [stderr]     |
[INFO] [stderr] 270 | const fn piece_type_to_idx(pt: PieceType) -> usize {
[INFO] [stderr]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: constant `MAX_PLY` is never used
[INFO] [stderr]   --> src/search.rs:17:11
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub const MAX_PLY: usize = 64;
[INFO] [stderr]    |           ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SearchState` is never constructed
[INFO] [stderr]   --> src/search.rs:20:12
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct SearchState {
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/search.rs:37:12
[INFO] [stderr]     |
[INFO] [stderr]  36 | impl SearchState {
[INFO] [stderr]     | ---------------- associated items in this implementation
[INFO] [stderr]  37 |     pub fn new() -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  49 |     pub fn store_killer(&mut self, ply: usize, mv: Move) {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  63 |     pub fn is_killer(&self, ply: usize, mv: &Move) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  71 |     pub fn killer_priority(&self, ply: usize, mv: &Move) -> Option<usize> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  86 |     pub fn add_history_bonus(&mut self, color: Color, from: Position, to: Position, depth: u8) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  98 |     pub fn get_history_score(&self, color: Color, from: Position, to: Position) -> i32 {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 107 |     pub fn age_history(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 124 |     pub fn store_killer_compact(&mut self, ply: usize, mv: CompactMove) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 139 |     pub fn get_killers_compact(&self, ply: usize) -> [Option<CompactMove>; 2] {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 148 |     pub fn add_history_bonus_compact(&mut self, color: Color, mv: CompactMove, depth: u8) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 165 |     pub fn get_history_compact(&self, color: Color) -> &[[i16; 64]; 64] {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `position_to_square` is never used
[INFO] [stderr]    --> src/search.rs:178:4
[INFO] [stderr]     |
[INFO] [stderr] 178 | fn position_to_square(pos: Position) -> usize {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SearchAborted` is never constructed
[INFO] [stderr]    --> src/search.rs:330:12
[INFO] [stderr]     |
[INFO] [stderr] 330 | pub struct SearchAborted;
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `SearchControl` is never constructed
[INFO] [stderr]    --> src/search.rs:334:12
[INFO] [stderr]     |
[INFO] [stderr] 334 | pub struct SearchControl {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `infinite`, `should_stop`, `exceeded_soft_limit`, `elapsed_ms`, and `signal_stop` are never used
[INFO] [stderr]    --> src/search.rs:343:12
[INFO] [stderr]     |
[INFO] [stderr] 342 | impl SearchControl {
[INFO] [stderr]     | ------------------ associated items in this implementation
[INFO] [stderr] 343 |     pub fn new(soft_limit_ms: u64, hard_limit_ms: u64) -> Self {
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 354 |     pub fn infinite() -> Self {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 366 |     pub fn should_stop(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 384 |     pub fn exceeded_soft_limit(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 389 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 394 |     pub fn signal_stop(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `allocate_time` is never used
[INFO] [stderr]    --> src/search.rs:407:8
[INFO] [stderr]     |
[INFO] [stderr] 407 | pub fn allocate_time(
[INFO] [stderr]     |        ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `search` is never used
[INFO] [stderr]    --> src/search.rs:474:8
[INFO] [stderr]     |
[INFO] [stderr] 474 | pub fn search(max_depth: u8, board: &Board) -> Move {
[INFO] [stderr]     |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `minimax_no_quiescence` is never used
[INFO] [stderr]    --> src/search.rs:495:8
[INFO] [stderr]     |
[INFO] [stderr] 495 | pub fn minimax_no_quiescence(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `minimax_no_ordering` is never used
[INFO] [stderr]    --> src/search.rs:500:8
[INFO] [stderr]     |
[INFO] [stderr] 500 | pub fn minimax_no_ordering(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `minimax_no_pruning` is never used
[INFO] [stderr]    --> src/search.rs:505:8
[INFO] [stderr]     |
[INFO] [stderr] 505 | pub fn minimax_no_pruning(max_depth: u8, board: &Board) -> Result<SearchResult, Vec<Move>> {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `minimax_with_tt` is never used
[INFO] [stderr]    --> src/search.rs:511:8
[INFO] [stderr]     |
[INFO] [stderr] 511 | pub fn minimax_with_tt(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `aspiration_search_with_control` is never used
[INFO] [stderr]    --> src/search.rs:522:8
[INFO] [stderr]     |
[INFO] [stderr] 522 | pub fn aspiration_search_with_control(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_with_control` is never used
[INFO] [stderr]    --> src/search.rs:560:8
[INFO] [stderr]     |
[INFO] [stderr] 560 | pub fn negamax_with_control(
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_with_tt_mut` is never used
[INFO] [stderr]    --> src/search.rs:782:4
[INFO] [stderr]     |
[INFO] [stderr] 782 | fn negamax_with_tt_mut(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_captures_only` is never used
[INFO] [stderr]     --> src/search.rs:1232:8
[INFO] [stderr]      |
[INFO] [stderr] 1232 | pub fn negamax_captures_only(
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_fast` is never used
[INFO] [stderr]     --> src/search.rs:1333:8
[INFO] [stderr]      |
[INFO] [stderr] 1333 | pub fn negamax_fast(depth: i32, board: &Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stderr]      |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_fast_mut` is never used
[INFO] [stderr]     --> src/search.rs:1338:4
[INFO] [stderr]      |
[INFO] [stderr] 1338 | fn negamax_fast_mut(depth: i32, board: &mut Board, alpha: i32, beta: i32, quiescence: bool) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_captures_only_fast` is never used
[INFO] [stderr]     --> src/search.rs:1375:8
[INFO] [stderr]      |
[INFO] [stderr] 1375 | pub fn negamax_captures_only_fast(board: &Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_captures_only_fast_mut` is never used
[INFO] [stderr]     --> src/search.rs:1380:4
[INFO] [stderr]      |
[INFO] [stderr] 1380 | fn negamax_captures_only_fast_mut(board: &mut Board, alpha: i32, beta: i32) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_captures_only_fast_mut_with_depth` is never used
[INFO] [stderr]     --> src/search.rs:1384:4
[INFO] [stderr]      |
[INFO] [stderr] 1384 | fn negamax_captures_only_fast_mut_with_depth(board: &mut Board, alpha: i32, beta: i32, depth_remaining: u8) -> i32 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_movepicker` is never used
[INFO] [stderr]     --> src/search.rs:1440:8
[INFO] [stderr]      |
[INFO] [stderr] 1440 | pub fn negamax_movepicker(
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `quiescence_movepicker` is never used
[INFO] [stderr]     --> src/search.rs:1681:4
[INFO] [stderr]      |
[INFO] [stderr] 1681 | fn quiescence_movepicker(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `iterative_deepening_movepicker` is never used
[INFO] [stderr]     --> src/search.rs:1731:8
[INFO] [stderr]      |
[INFO] [stderr] 1731 | pub fn iterative_deepening_movepicker(
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `iterative_deepening_movepicker_with_control` is never used
[INFO] [stderr]     --> src/search.rs:1780:8
[INFO] [stderr]      |
[INFO] [stderr] 1780 | pub fn iterative_deepening_movepicker_with_control(
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `aspiration_search_movepicker_with_control` is never used
[INFO] [stderr]     --> src/search.rs:1855:8
[INFO] [stderr]      |
[INFO] [stderr] 1855 | pub fn aspiration_search_movepicker_with_control(
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `negamax_movepicker_with_control` is never used
[INFO] [stderr]     --> src/search.rs:1902:4
[INFO] [stderr]      |
[INFO] [stderr] 1902 | fn negamax_movepicker_with_control(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `new_from_fen_silent` and `new_silent` are never used
[INFO] [stderr]   --> src/game.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 18 | impl Game {
[INFO] [stderr]    | --------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 30 |     pub fn new_from_fen_silent(max_depth: u8, start_fen: String) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 44 |     pub fn new_silent(max_depth: u8) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `CompactMoveGenerator` is never constructed
[INFO] [stderr]    --> src/movegen.rs:688:12
[INFO] [stderr]     |
[INFO] [stderr] 688 | pub struct CompactMoveGenerator<'a> {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/movegen.rs:695:12
[INFO] [stderr]      |
[INFO] [stderr]  693 | impl<'a> CompactMoveGenerator<'a> {
[INFO] [stderr]      | --------------------------------- associated items in this implementation
[INFO] [stderr]  694 |     #[inline(always)]
[INFO] [stderr]  695 |     pub fn new(board: &'a Board, color: Color) -> Self {
[INFO] [stderr]      |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  701 |     pub fn generate_all(&self, list: &mut MoveList) {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  716 |     pub fn generate_captures(&self, list: &mut MoveList) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  730 |     pub fn generate_quiets(&self, list: &mut MoveList) {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  747 |     fn generate_knight_moves(&self, list: &mut MoveList, friendly: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  773 |     fn generate_knight_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  794 |     fn generate_knight_quiets(&self, list: &mut MoveList, friendly: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  813 |     fn generate_king_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  844 |     fn generate_king_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  867 |     fn generate_king_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  887 |     fn generate_castling(&self, list: &mut MoveList, occupied: u64, king_sq: u8) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1000 |     fn generate_rook_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1026 |     fn generate_rook_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1047 |     fn generate_rook_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1066 |     fn generate_bishop_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1092 |     fn generate_bishop_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1113 |     fn generate_bishop_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1132 |     fn generate_queen_moves(&self, list: &mut MoveList, occupied: u64, friendly: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1158 |     fn generate_queen_captures(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1179 |     fn generate_queen_quiets(&self, list: &mut MoveList, occupied: u64, friendly: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1198 |     fn generate_pawn_moves(&self, list: &mut MoveList, occupied: u64, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1204 |     fn generate_pawn_captures(&self, list: &mut MoveList, enemy: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1277 |     fn generate_pawn_quiets(&self, list: &mut MoveList, occupied: u64) {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1353 |     fn captured_piece_type(&self, sq: u8, enemy: u64) -> Option<PieceType> {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_chess` (bin "rust_chess") generated 87 warnings (14 duplicates)
[INFO] [stderr] warning: unused import: `MoveType`
[INFO] [stderr]    --> src/movelist.rs:236:24
[INFO] [stderr]     |
[INFO] [stderr] 236 |     use crate::types::{MoveType, PieceType};
[INFO] [stderr]     |                        ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `CompactMove`
[INFO] [stderr]     --> src/movegen.rs:1630:24
[INFO] [stderr]      |
[INFO] [stderr] 1630 |     use crate::types::{CompactMove, PieceType};
[INFO] [stderr]      |                        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `MoveType`
[INFO] [stderr]   --> src/movepicker.rs:19:40
[INFO] [stderr]    |
[INFO] [stderr] 19 | use crate::types::{Color, CompactMove, MoveType, PieceType};
[INFO] [stderr]    |                                        ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Color`
[INFO] [stderr]     --> src/search.rs:2135:24
[INFO] [stderr]      |
[INFO] [stderr] 2135 |     use crate::types::{Color, Piece, Position};
[INFO] [stderr]      |                        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Color`
[INFO] [stderr]  --> src/stockfish_tests.rs:9:20
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::types::{Color, Move, MoveFlag, PieceType, Position};
[INFO] [stderr]   |                    ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `eval`
[INFO] [stderr]     --> src/search.rs:2190:13
[INFO] [stderr]      |
[INFO] [stderr] 2190 |         let eval = search_result.best_score;
[INFO] [stderr]      |             ^^^^ help: if this is intentional, prefix it with an underscore: `_eval`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/search.rs:2666:13
[INFO] [stderr]      |
[INFO] [stderr] 2666 |         let mut board = Board::new();
[INFO] [stderr]      |             ----^^^^^
[INFO] [stderr]      |             |
[INFO] [stderr]      |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `original_fen`
[INFO] [stderr]     --> src/search.rs:2667:13
[INFO] [stderr]      |
[INFO] [stderr] 2667 |         let original_fen = board.to_fen();
[INFO] [stderr]      |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_fen`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `undo`
[INFO] [stderr]    --> src/engine.rs:544:17
[INFO] [stderr]     |
[INFO] [stderr] 544 |             let undo = board.make_move(&result.best_move);
[INFO] [stderr]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_undo`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/perft.rs:204:13
[INFO] [stderr]     |
[INFO] [stderr] 204 |         let mut board = Board::from_fen("8/2p5/3p4/KP5r/1R2Pp1k/8/6P1/8 b - e3 0 1");
[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/perft.rs:210:13
[INFO] [stderr]     |
[INFO] [stderr] 210 |         let mut board2 = Board::from_fen("8/2p5/3p4/KP5r/1R3pPk/8/4P3/8 b - g3 0 1");
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variant `ThreefoldRepetition` is never constructed
[INFO] [stderr]    --> src/types.rs:292:5
[INFO] [stderr]     |
[INFO] [stderr] 289 | pub enum Status {
[INFO] [stderr]     |          ------ variant in this enum
[INFO] [stderr] ...
[INFO] [stderr] 292 |     ThreefoldRepetition,
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Status` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_promotion` is never used
[INFO] [stderr]    --> src/types.rs:629:12
[INFO] [stderr]     |
[INFO] [stderr] 614 | impl MoveType {
[INFO] [stderr]     | ------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 629 |     pub fn is_promotion(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `is_promotion` is never used
[INFO] [stderr]    --> src/types.rs:793:12
[INFO] [stderr]     |
[INFO] [stderr] 681 | impl CompactMove {
[INFO] [stderr]     | ---------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 793 |     pub fn is_promotion(self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `fill_rate` and `info` are never used
[INFO] [stderr]    --> src/tt.rs:178:12
[INFO] [stderr]     |
[INFO] [stderr]  53 | impl TranspositionTable {
[INFO] [stderr]     | ----------------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 178 |     pub fn fill_rate(&self) -> f64 {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 184 |     pub fn info(&self) -> String {
[INFO] [stderr]     |            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `contains` and `sort_by_score` are never used
[INFO] [stderr]    --> src/movelist.rs:149:12
[INFO] [stderr]     |
[INFO] [stderr]  30 | impl MoveList {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 149 |     pub fn contains(&self, mv: CompactMove) -> bool {
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 159 |     pub fn sort_by_score(&mut self) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]     --> src/board.rs:191:12
[INFO] [stderr]      |
[INFO] [stderr]   62 | impl Board {
[INFO] [stderr]      | ---------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  191 |     pub fn from_fen_no_moves(fen_string: &str) -> Board {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  298 |     pub fn get_material(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  304 |     pub fn get_pst_mg(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  310 |     pub fn get_pst_eg(&self, color: Color) -> i32 {
[INFO] [stderr]      |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  366 |     pub fn piece_count_for_color(&self, color: Color) -> u32 {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  440 |     pub fn to_fen_no_moves(&self) -> String {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  459 |     pub fn piece_at_algebraic(&self, pos: &str) -> Option<&Piece> {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  558 |     pub fn check_for_threefold_repetition(
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 1646 |     pub fn is_square_attacked_by(&self, pos: &Position, color: Color) -> bool {
[INFO] [stderr]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: fields `white_pawn_material`, `white_piece_material`, `black_pawn_material`, and `black_piece_material` are never read
[INFO] [stderr]   --> src/evaluate.rs:23:9
[INFO] [stderr]    |
[INFO] [stderr] 19 | pub struct Material {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub white_pawn_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 24 |     pub white_piece_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 29 |     pub black_pawn_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 30 |     pub black_piece_material: i32,
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_material_difference` is never used
[INFO] [stderr]   --> src/evaluate.rs:37:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl Material {
[INFO] [stderr]    | ------------- method in this implementation
[INFO] [stderr] 37 |     pub fn get_material_difference(&self) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `killer_moves` is never read
[INFO] [stderr]   --> src/search.rs:23:9
[INFO] [stderr]    |
[INFO] [stderr] 20 | pub struct SearchState {
[INFO] [stderr]    |            ----------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 23 |     pub killer_moves: [[Option<Move>; 2]; MAX_PLY],
[INFO] [stderr]    |         ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `store_killer`, `is_killer`, `killer_priority`, `add_history_bonus`, and `get_history_score` are never used
[INFO] [stderr]   --> src/search.rs:49:12
[INFO] [stderr]    |
[INFO] [stderr] 36 | impl SearchState {
[INFO] [stderr]    | ---------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 49 |     pub fn store_killer(&mut self, ply: usize, mv: Move) {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 63 |     pub fn is_killer(&self, ply: usize, mv: &Move) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 71 |     pub fn killer_priority(&self, ply: usize, mv: &Move) -> Option<usize> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 86 |     pub fn add_history_bonus(&mut self, color: Color, from: Position, to: Position, depth: u8) {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 98 |     pub fn get_history_score(&self, color: Color, from: Position, to: Position) -> i32 {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `soft_limit_ms` is never read
[INFO] [stderr]    --> src/search.rs:336:9
[INFO] [stderr]     |
[INFO] [stderr] 334 | pub struct SearchControl {
[INFO] [stderr]     |            ------------- field in this struct
[INFO] [stderr] 335 |     pub start_time: Instant,
[INFO] [stderr] 336 |     pub soft_limit_ms: u64,  // Target time - can extend slightly if finding good move
[INFO] [stderr]     |         ^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `SearchControl` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: methods `exceeded_soft_limit`, `elapsed_ms`, and `signal_stop` are never used
[INFO] [stderr]    --> src/search.rs:384:12
[INFO] [stderr]     |
[INFO] [stderr] 342 | impl SearchControl {
[INFO] [stderr]     | ------------------ methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 384 |     pub fn exceeded_soft_limit(&self) -> bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 389 |     pub fn elapsed_ms(&self) -> u64 {
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 394 |     pub fn signal_stop(&self) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: `rust_chess` (lib test) generated 26 warnings (15 duplicates) (run `cargo fix --lib -p rust_chess --tests` to apply 11 suggestions)
[INFO] [stderr] warning: `rust_chess` (bin "rust_chess" test) generated 52 warnings (40 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.45s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_chess-bda77ac3532ef5c5)
[INFO] [stdout] 
[INFO] [stdout] running 185 tests
[INFO] [stdout] test bitboard::tests::test_bishop_attacks_empty_board ... ok
[INFO] [stdout] test bitboard::tests::test_king_attacks ... ok
[INFO] [stdout] test bitboard::tests::test_knight_corner ... ok
[INFO] [stdout] test bitboard::tests::test_knight_attacks ... ok
[INFO] [stdout] test bitboard::tests::test_bitboard_iter ... ok
[INFO] [stdout] test bitboard::tests::test_pawn_attacks ... ok
[INFO] [stdout] test bitboard::tests::test_rook_attacks_empty_board ... ok
[INFO] [stdout] test bitboard::tests::test_rook_attacks_with_blockers ... ok
[INFO] [stdout] test bitboard::tests::test_magic_bishop_attacks_with_blockers ... ok
[INFO] [stdout] test bitboard::tests::test_magic_rook_attacks_with_blockers ... ok
[INFO] [stdout] test bitboard::tests::test_magic_rook_attacks_empty_board ... ok
[INFO] [stdout] test bitboard::tests::test_magic_matches_classical ... ok
[INFO] [stdout] test bitboard::tests::test_magic_bishop_attacks_empty_board ... ok
[INFO] [stdout] test board::tests::build_starting_board ... ok
[INFO] [stdout] test board::tests::execute_capture ... ok
[INFO] [stdout] test board::tests::pseudo_legal_accepts_valid_rook_move ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_bishop_orthogonal ... ok
[INFO] [stdout] test board::tests::cannot_castle_through_check ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_castling_out_of_check ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_castling_through_check ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_king_long_move ... ok
[INFO] [stdout] test board::tests::count_legal_moves_from_start_position ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_pawn_triple_push ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_rook_diagonal ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_wrong_piece_type ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_blocked_rook ... ok
[INFO] [stdout] test board::tests::execute_move_with_promotion ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_castling_no_rights ... ok
[INFO] [stdout] test board::tests::pseudo_legal_accepts_valid_bishop_move ... ok
[INFO] [stdout] test board::tests::execute_move_with_castle ... ok
[INFO] [stdout] test board::tests::test_bishop_pin_1 ... ok
[INFO] [stdout] test board::tests::test_block_check_or_capture_checker ... ok
[INFO] [stdout] test board::tests::test_bishop_pin_3 ... ok
[INFO] [stdout] test board::tests::execute_ep_capture ... ok
[INFO] [stdout] test board::tests::cannot_castle_through_piece ... ok
[INFO] [stdout] test board::tests::test_block_check ... ok
[INFO] [stdout] test board::tests::test_block_check_with_pawn ... ok
[INFO] [stdout] test board::tests::test_checkmate_with_pawn ... ok
[INFO] [stdout] test board::tests::test_bishop_pin_4 ... ok
[INFO] [stdout] test board::tests::test_color_from_case ... ok
[INFO] [stdout] test bitboard::tests::test_magic_queen_attacks ... ok
[INFO] [stdout] test board::tests::pseudo_legal_accepts_pawn_double_push ... ok
[INFO] [stdout] test board::tests::pawn_capture_test ... ok
[INFO] [stdout] test board::tests::test_checkmate_2 ... ok
[INFO] [stdout] test board::tests::test_double_rook_pin ... ok
[INFO] [stdout] test board::tests::test_execute_move ... ok
[INFO] [stdout] test board::tests::pseudo_legal_rejects_knight_wrong_target ... ok
[INFO] [stdout] test board::tests::test_double_rook_pin_2 ... ok
[INFO] [stdout] test board::tests::test_is_sliding ... ok
[INFO] [stdout] test board::tests::test_double_check_2 ... ok
[INFO] [stdout] test board::tests::test_bishop_pin_2 ... ok
[INFO] [stdout] test board::tests::test_make_unmake_capture ... ok
[INFO] [stdout] test board::tests::test_color_from_char ... ok
[INFO] [stdout] test board::tests::test_double_check_1 ... ok
[INFO] [stdout] test board::tests::test_checkmate_1 ... ok
[INFO] [stdout] test board::tests::test_make_unmake_castling_kingside ... ok
[INFO] [stdout] test board::tests::test_make_unmake_castling_queenside ... ok
[INFO] [stdout] test board::tests::test_make_unmake_en_passant ... ok
[INFO] [stdout] test board::tests::test_make_unmake_promotion ... ok
[INFO] [stdout] test board::tests::test_make_unmake_matches_execute_move ... ok
[INFO] [stdout] test board::tests::test_make_unmake_sequence ... ok
[INFO] [stdout] test board::tests::test_make_unmake_simple_move ... ok
[INFO] [stdout] test board::tests::test_not_rook_pin ... ok
[INFO] [stdout] test board::tests::test_not_rook_pin_but_check_in_same_direction ... ok
[INFO] [stdout] test board::tests::test_other_color ... ok
[INFO] [stdout] test board::tests::test_only_one_legal_move ... ok
[INFO] [stdout] test board::tests::test_panics_in_search ... ok
[INFO] [stdout] test board::tests::test_panics_in_search_with_bishop ... ok
[INFO] [stdout] test board::tests::test_not_rook_pin_but_check ... ok
[INFO] [stdout] test board::tests::test_panics_in_search_with_bishop_smaller ... ok
[INFO] [stdout] test board::tests::test_piece_from_rank_file ... ok
[INFO] [stdout] test board::tests::test_stalemate_with_pawn ... ok
[INFO] [stdout] test board::tests::test_to_fen ... ok
[INFO] [stdout] test board::tests::test_piece_from_alegraic ... ok
[INFO] [stdout] test board::tests::test_piece_type_from_char ... ok
[INFO] [stdout] test board::tests::test_two_legal_moves ... ok
[INFO] [stdout] test board::tests::test_ray_to ... ok
[INFO] [stdout] test board::tests::test_pin_fail_1 ... ok
[INFO] [stdout] test board::tests::test_rook_pin ... ok
[INFO] [stdout] test board::tests::test_zobrist_hash_consistency_across_move_sequences ... ok
[INFO] [stdout] test board::tests::test_rook_pin_horizontal_other_piece ... ok
[INFO] [stdout] test board::tests::test_stalemate_1 ... ok
[INFO] [stdout] test board::tests::test_zobrist_hash_restored_on_unmake ... ok
[INFO] [stdout] test board::tests::test_position_from_algebraic ... ok
[INFO] [stdout] test board::tests::test_two_rook_pins ... ok
[INFO] [stdout] test board::tests::test_pin_fail_1_from_start ... ok
[INFO] [stdout] test book::tests::polyglot_hash_after_1e4 ... ok
[INFO] [stdout] test book::tests::polyglot_hash_after_1e4_d5_2e5 ... ok
[INFO] [stdout] test book::tests::polyglot_hash_starting_position ... ok
[INFO] [stdout] test board::tests::test_one_legal_move_with_king ... ok
[INFO] [stdout] test book::tests::decode_polyglot_move_e2e4 ... ok
[INFO] [stdout] test evaluate::tests::test_advanced_pawns_worth_more ... ok
[INFO] [stdout] test book::tests::polyglot_hash_after_1e4_d5 ... ok
[INFO] [stdout] test evaluate::tests::test_incremental_eval_matches_slow_eval ... ok
[INFO] [stdout] test book::tests::decode_polyglot_move_with_promotion ... ok
[INFO] [stdout] test evaluate::tests::test_incremental_eval_with_captures ... ok
[INFO] [stdout] test evaluate::tests::test_knight_center_vs_edge ... ok
[INFO] [stdout] test evaluate::tests::test_incremental_eval_with_castling ... ok
[INFO] [stdout] test evaluate::tests::test_material_difference_symmetric ... ok
[INFO] [stdout] test evaluate::tests::test_mirrored_positions_evaluate_equally ... ok
[INFO] [stdout] test evaluate::tests::test_pst_index_bounds ... ok
[INFO] [stdout] test evaluate::tests::test_pst_symmetry_for_mirrored_positions ... ok
[INFO] [stdout] test evaluate::tests::test_starting_position_is_equal ... ok
[INFO] [stdout] test movegen::tests::black_cannot_castle_kingside_through_check_f8_attacked ... ok
[INFO] [stdout] test movegen::tests::black_can_castle_both_sides_when_clear ... ok
[INFO] [stdout] test movegen::tests::black_can_castle_queenside_when_b8_attacked ... ok
[INFO] [stdout] test movegen::tests::black_cannot_castle_queenside_through_check_d8_attacked ... ok
[INFO] [stdout] test movegen::tests::black_cannot_castle_while_in_check ... ok
[INFO] [stdout] test movegen::tests::white_can_castle_both_sides_when_clear ... ok
[INFO] [stdout] test movegen::tests::white_can_castle_queenside_when_b1_attacked ... ok
[INFO] [stdout] test movegen::tests::white_cannot_castle_kingside_into_check ... ok
[INFO] [stdout] test movegen::tests::white_cannot_castle_kingside_through_check_f1_attacked ... ok
[INFO] [stdout] test game::tests::test_game ... ok
[INFO] [stdout] test movegen::tests::white_cannot_castle_queenside_into_check ... ok
[INFO] [stdout] test movelist::tests::test_movelist_basic ... ok
[INFO] [stdout] test movegen::tests::white_cannot_castle_queenside_through_check_d1_attacked ... ok
[INFO] [stdout] test movegen::tests::white_cannot_castle_while_in_check ... ok
[INFO] [stdout] test movelist::tests::test_movelist_iter ... ok
[INFO] [stdout] test movelist::tests::test_movelist_pick_best ... ok
[INFO] [stdout] test movelist::tests::test_movelist_retain ... ok
[INFO] [stdout] test movepicker::tests::test_movepicker_captures_only ... ok
[INFO] [stdout] test movepicker::tests::test_movepicker_starting_position ... ok
[INFO] [stdout] test movepicker::tests::test_mvv_lva_ordering ... ok
[INFO] [stdout] test perft::tests::en_passant_discovered_check_position3 ... ok
[INFO] [stdout] test evaluate::tests::test_all_piece_types_pst_valid ... ok
[INFO] [stdout] test board::tests::test_color_from_case_fail - should panic ... ok
[INFO] [stdout] test board::tests::test_piece_type_from_char_fail - should panic ... ok
[INFO] [stdout] test board::tests::test_color_from_char_fail - should panic ... ok
[INFO] [stdout] test book::tests::suggest_move_starting_position_is_sane ... FAILED
[INFO] [stdout] test book::tests::polyglot_lookup_finds_starting_moves ... FAILED
[INFO] [stdout] test book::tests::polyglot_hash_with_castling_changes ... FAILED
[INFO] [stdout] test book::tests::suggest_move_after_1e4_finds_book_move ... FAILED
[INFO] [stdout] test book::tests::polyglot_book_produces_moves_deep_into_opening ... FAILED
[INFO] [stdout] test search::test::fifty_move_rule_returns_draw ... ok
[INFO] [stdout] test search::test::insufficient_material_returns_draw ... ok
[INFO] [stdout] test search::test::repetition_detection_avoids_threefold_game1 ... ok
[INFO] [stdout] test search::test::mate_in_two_2_m2 ... ok
[INFO] [stdout] test search::test::repetition_detection_avoids_threefold_game3 ... ok
[INFO] [stdout] test search::test::test_movepicker_search_finds_move_starting_position ... ok
[INFO] [stdout] test search::test::test_movepicker_search_preserves_board_state_depth_1 ... ok
[INFO] [stdout] test search::test::repetition_detection_avoids_threefold_game2 ... ok
[INFO] [stdout] test search::test::test_movepicker_search_preserves_board_state_depth_2 ... ok
[INFO] [stdout] test search::test::test_movepicker_search_preserves_board_state_depth_3 ... ok
[INFO] [stdout] test search::test::test_movepicker_search_preserves_board_state_depth_4 ... ok
[INFO] [stdout] test search::test::test_movepicker_search_preserves_board_state_depth_5 ... ok
[INFO] [stdout] test search::test::test_quiescence_movepicker_preserves_board_state ... ok
[INFO] [stdout] test search::test::test_quiescence_search_1 ... ok
[INFO] [stdout] test search::test::test_quiescence_search_2 ... ok
[INFO] [stdout] test search::test::test_quiescence_search_3 ... ok
[INFO] [stdout] test search::test::test_quiescence_search_4 ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_castle_both_black ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_castle_both_white ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_check_simple ... ok
[INFO] [stdout] test search::test::test_negamax_movepicker_preserves_board_state ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_ep_black ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_ep_white ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_kiwipete ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_promo_black ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_position5 ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_promo_white ... ok
[INFO] [stdout] test stockfish_tests::tests::stockfish_start ... ok
[INFO] [stdout] test stockfish_tests::tests::test_all_stockfish_positions ... ok
[INFO] [stdout] test stockfish_tests::tests::test_both_generators_agree_all_positions ... ok
[INFO] [stdout] test stockfish_tests::tests::test_all_stockfish_positions_compact ... ok
[INFO] [stdout] test tt::tests::test_tt_depth_requirement ... ok
[INFO] [stdout] test tt::tests::test_tt_lower_bound ... ok
[INFO] [stdout] test tt::tests::test_tt_store_and_probe ... ok
[INFO] [stdout] test tt::tests::test_tt_upper_bound ... ok
[INFO] [stdout] test zobrist::tests::test_zobrist_deterministic ... ok
[INFO] [stdout] test zobrist::tests::test_zobrist_keys_unique ... ok
[INFO] [stdout] test tt::tests::test_tt_clear ... ok
[INFO] [stdout] test perft::tests::perft_position3 ... ok
[INFO] [stdout] test engine::tests::engine_uses_book_for_opening_moves ... FAILED
[INFO] [stdout] test search::test::test_movepicker_search_different_positions ... ok
[INFO] [stdout] test search::test::test_does_not_blunder_knight ... ok
[INFO] [stdout] test movegen::tests::fuzz_compact_matches_legacy_random_games ... ok
[INFO] [stdout] test search::test::mate_in_two_2 ... ok
[INFO] [stdout] test search::test::mate_in_three_2 ... ok
[INFO] [stdout] test perft::tests::perft_position4 ... ok
[INFO] [stdout] test perft::tests::perft_kiwipete has been running for over 60 seconds
[INFO] [stdout] test perft::tests::perft_pos_5_fast has been running for over 60 seconds
[INFO] [stdout] test perft::tests::perft_position6 has been running for over 60 seconds
[INFO] [stdout] test perft::tests::perft_start_fast has been running for over 60 seconds
[INFO] [stdout] test search::test::mate_in_three_1 has been running for over 60 seconds
[INFO] [stdout] test search::test::sebastian_lague_test_position has been running for over 60 seconds
[INFO] [stdout] test search::test::sebastian_lague_test_position ... ok
[INFO] [stdout] test search::test::mate_in_three_1 ... ok
[INFO] [stdout] test perft::tests::perft_pos_5_fast ... ok
[INFO] [stdout] test perft::tests::perft_start_fast ... ok
[INFO] [stdout] test perft::tests::perft_position6 ... ok
[INFO] [stdout] test perft::tests::perft_kiwipete ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- book::tests::suggest_move_starting_position_is_sane stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'book::tests::suggest_move_starting_position_is_sane' (116) panicked at src/book.rs:284:54:
[INFO] [stdout] should find a book move
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6166301834f8 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x6166301bb914 - core[c1f1a4ba060b9bfa]::panicking::panic_display::<&str>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:259:5
[INFO] [stdout]   20:     0x6166301bb914 - core[c1f1a4ba060b9bfa]::option::expect_failed
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/option.rs:2245:5
[INFO] [stdout]   21:     0x61663006bbb5 - core::option::Option<T>::expect::he34b42cac740834c
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/option.rs:971:21
[INFO] [stdout]   22:     0x61663008889b - rust_chess::book::tests::suggest_move_starting_position_is_sane::h0492cd35804edac9
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:284:54
[INFO] [stdout]   23:     0x616630088b77 - rust_chess::book::tests::suggest_move_starting_position_is_sane::{{closure}}::h3e8d18606ddfec16
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:277:48
[INFO] [stdout]   24:     0x6166300135c6 - core::ops::function::FnOnce::call_once::h414ce01c61ae179f
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   26:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   27:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   28:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   29:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   30:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   31:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   32:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   33:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   34:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   35:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   37:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   39:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   40:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   41:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   42:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   43:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   44:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   45:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   46:     0x7f2925bf1a64 - clone
[INFO] [stdout]   47:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- book::tests::polyglot_lookup_finds_starting_moves stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'book::tests::polyglot_lookup_finds_starting_moves' (114) panicked at src/book.rs:264:9:
[INFO] [stdout] Polyglot book should have moves for the starting position
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x61663018352a - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x616630088357 - rust_chess::book::tests::polyglot_lookup_finds_starting_moves::hfeaff815f887a8b0
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:264:9
[INFO] [stdout]   20:     0x616630088587 - rust_chess::book::tests::polyglot_lookup_finds_starting_moves::{{closure}}::h4f0bbad7266e89c3
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:261:46
[INFO] [stdout]   21:     0x616630013c26 - core::ops::function::FnOnce::call_once::h5dac9c78b35f42bd
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   43:     0x7f2925bf1a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- book::tests::polyglot_hash_with_castling_changes stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'book::tests::polyglot_hash_with_castling_changes' (113) panicked at src/book.rs:350:9:
[INFO] [stdout] Polyglot book should have moves in the Ruy Lopez after 5.O-O (hash=0x8D7C86D0B048F56D)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6166301834f8 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x616630087ed1 - rust_chess::book::tests::polyglot_hash_with_castling_changes::h37832f9490f86eae
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:350:9
[INFO] [stdout]   20:     0x616630087f07 - rust_chess::book::tests::polyglot_hash_with_castling_changes::{{closure}}::h336475a59ee03e66
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:340:45
[INFO] [stdout]   21:     0x616630014186 - core::ops::function::FnOnce::call_once::h8288dbe30b968bc1
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   43:     0x7f2925bf1a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- book::tests::suggest_move_after_1e4_finds_book_move stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'book::tests::suggest_move_after_1e4_finds_book_move' (115) panicked at src/book.rs:302:9:
[INFO] [stdout] Polyglot book should have a response to 1.e4
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x61663018352a - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:691:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x616630088683 - rust_chess::book::tests::suggest_move_after_1e4_finds_book_move::h94b94eb827b63993
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:302:9
[INFO] [stdout]   20:     0x6166300886b7 - rust_chess::book::tests::suggest_move_after_1e4_finds_book_move::{{closure}}::h718acb2dd848737f
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:298:48
[INFO] [stdout]   21:     0x6166300138e6 - core::ops::function::FnOnce::call_once::h4f669e8efe8b04d2
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   43:     0x7f2925bf1a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- book::tests::polyglot_book_produces_moves_deep_into_opening stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'book::tests::polyglot_book_produces_moves_deep_into_opening' (108) panicked at src/book.rs:329:13:
[INFO] [stdout] Polyglot book should have moves move 0 (start) (hash=0x463B96181691FC9C)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6166301834f8 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x616630089068 - rust_chess::book::tests::polyglot_book_produces_moves_deep_into_opening::h50e7d5a5e0f78984
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:329:13
[INFO] [stdout]   20:     0x616630089097 - rust_chess::book::tests::polyglot_book_produces_moves_deep_into_opening::{{closure}}::h284c4d4b8a571a31
[INFO] [stdout]                                at /opt/rustwide/workdir/src/book.rs:306:56
[INFO] [stdout]   21:     0x616630012a66 - core::ops::function::FnOnce::call_once::h0b9b12c35f721efd
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   43:     0x7f2925bf1a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- engine::tests::engine_uses_book_for_opening_moves stdout ----
[INFO] [stdout] Warning: Could not find book directory (tried: ["book", "./book", "/Users/charlesbine/Documents/prog/rust_chess/book"])
[INFO] [stdout] Polyglot book: 0 entries loaded
[INFO] [stdout] 
[INFO] [stdout] thread 'engine::tests::engine_uses_book_for_opening_moves' (117) panicked at src/engine.rs:557:9:
[INFO] [stdout] Expected at least 4 book moves in a 10-ply game, got 0
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x6166301a4dba - std[e28293b1aa0f68bd]::backtrace_rs::backtrace::trace_unsynchronized::<std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x6166301a4dba - std[e28293b1aa0f68bd]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x6166301a4dba - <<std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[c1f1a4ba060b9bfa]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x6166301bb36a - <core[c1f1a4ba060b9bfa]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x6166301bb36a - core[c1f1a4ba060b9bfa]::fmt::write
[INFO] [stdout]    6:     0x6166301a9642 - std[e28293b1aa0f68bd]::io::default_write_fmt::<alloc[fdfd2bd8633a6659]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:639:11
[INFO] [stdout]    7:     0x6166301a9642 - <alloc[fdfd2bd8633a6659]::vec::Vec<u8> as std[e28293b1aa0f68bd]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/io/mod.rs:1994:13
[INFO] [stdout]    8:     0x61663018343f - <std[e28293b1aa0f68bd]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x61663018343f - std[e28293b1aa0f68bd]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x61663019c969 - std[e28293b1aa0f68bd]::panicking::default_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x6166300aee4c - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   12:     0x6166300aee4c - test[273d7611820c9051]::test_main_with_exit_callback::<test[273d7611820c9051]::test_main::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:145:21
[INFO] [stdout]   13:     0x61663019cb22 - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn for<'a, 'b> core[c1f1a4ba060b9bfa]::ops::function::Fn<(&'a std[e28293b1aa0f68bd]::panic::PanicHookInfo<'b>,), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Sync + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::Fn<(&std[e28293b1aa0f68bd]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2254:9
[INFO] [stdout]   14:     0x61663019cb22 - std[e28293b1aa0f68bd]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x6166301834f8 - std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x61663017ad49 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_end_short_backtrace::<std[e28293b1aa0f68bd]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x61663018420d - __rustc[b7974e8690430dd9]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x6166301bbc1c - core[c1f1a4ba060b9bfa]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x61662fffae7b - rust_chess::engine::tests::engine_uses_book_for_opening_moves::he460f0e5d87f9d1f
[INFO] [stdout]                                at /opt/rustwide/workdir/src/engine.rs:557:9
[INFO] [stdout]   20:     0x61662fffaf67 - rust_chess::engine::tests::engine_uses_book_for_opening_moves::{{closure}}::had2b9cb3563d8eac
[INFO] [stdout]                                at /opt/rustwide/workdir/src/engine.rs:526:44
[INFO] [stdout]   21:     0x616630014146 - core::ops::function::FnOnce::call_once::h818bf55138e6f78e
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x6166300a2f2b - <fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x6166300a2f2b - test[273d7611820c9051]::__rust_begin_short_backtrace::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, fn() -> core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:663:18
[INFO] [stdout]   24:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:74
[INFO] [stdout]   25:     0x6166300af91b - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   26:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x6166300af91b - std[e28293b1aa0f68bd]::panicking::catch_unwind::<core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>, core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x6166300af91b - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<test[273d7611820c9051]::run_test_in_process::{closure#0}>, core[c1f1a4ba060b9bfa]::result::Result<(), alloc[fdfd2bd8633a6659]::string::String>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x6166300af91b - test[273d7611820c9051]::run_test_in_process
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:686:27
[INFO] [stdout]   30:     0x6166300af91b - test[273d7611820c9051]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:607:43
[INFO] [stdout]   31:     0x6166300ab034 - test[273d7611820c9051]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/test/src/lib.rs:637:41
[INFO] [stdout]   32:     0x6166300ab034 - std[e28293b1aa0f68bd]::sys::backtrace::__rust_begin_short_backtrace::<test[273d7611820c9051]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   34:     0x6166300b2522 - <core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   35:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::do_call::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x6166300b2522 - std[e28293b1aa0f68bd]::panicking::catch_unwind::<(), core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x6166300b2522 - std[e28293b1aa0f68bd]::panic::catch_unwind::<core[c1f1a4ba060b9bfa]::panic::unwind_safe::AssertUnwindSafe<std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x6166300b2522 - std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked::<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   39:     0x6166300b2522 - <std[e28293b1aa0f68bd]::thread::lifecycle::spawn_unchecked<test[273d7611820c9051]::run_test::{closure#1}, ()>::{closure#1} as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x6166301a404f - <alloc[fdfd2bd8633a6659]::boxed::Box<dyn core[c1f1a4ba060b9bfa]::ops::function::FnOnce<(), Output = ()> + core[c1f1a4ba060b9bfa]::marker::Send> as core[c1f1a4ba060b9bfa]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/alloc/src/boxed.rs:2240:9
[INFO] [stdout]   41:     0x6166301a404f - <std[e28293b1aa0f68bd]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/59807616e1fa2540724bfbac14d7976d7e4a3860/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x7f2925b64aa4 - <unknown>
[INFO] [stdout]   43:     0x7f2925bf1a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     book::tests::polyglot_book_produces_moves_deep_into_opening
[INFO] [stdout]     book::tests::polyglot_hash_with_castling_changes
[INFO] [stdout]     book::tests::polyglot_lookup_finds_starting_moves
[INFO] [stdout]     book::tests::suggest_move_after_1e4_finds_book_move
[INFO] [stdout]     book::tests::suggest_move_starting_position_is_sane
[INFO] [stdout]     engine::tests::engine_uses_book_for_opening_moves
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 179 passed; 6 failed; 0 ignored; 0 measured; 0 filtered out; finished in 271.18s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "0f7c4581f6aaf20d4663582c8b06844e8400666d34321e920592fe83234e52fd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0f7c4581f6aaf20d4663582c8b06844e8400666d34321e920592fe83234e52fd", kill_on_drop: false }`
[INFO] [stdout] 0f7c4581f6aaf20d4663582c8b06844e8400666d34321e920592fe83234e52fd
